非LocalDb SQL Serverの場合は、SELECT SERVERPROPERTY('ServerName')
を使用して、実行しているサーバーとインスタンスの名前を取得できます。ただし、LocalDbサーバーの場合はSERVERNAME\LOCALDB#SOMEHASH
となります。どのようにローカルインスタンス名を取得できますか?SQLスクリプトでLocalDbインスタンス名を判別する方法は?
SOLUTION:
インスタンスを取得するためのソリューション、LocalDBと "通常" のSQL Serverインスタンスの両方に取り組んで:私は元の質問に言及している必要があります
DECLARE @serverName NVARCHAR(151)
IF SERVERPROPERTY('IsLocalDb') = 1
SELECT @serverName = 'np:\\.\pipe\' + CONVERT(NVARCHAR(128), SERVERPROPERTY('InstanceName')) + '\tsql\query'
ELSE
SELECT @serverName = CONVERT(NVARCHAR(128), SERVERPROPERTY('ServerName'))
いくつかの背景:私たちのアプリケーション用の構成データベースがあります。とりわけ、接続文字列を格納します。開発者マシンと統合テストでは、スクリプトを使用してデータベースを生成し、接続文字列をローカルインスタンスに参照させたいと考えています。したがって、私は動作する接続文字列(LOCALDB#SOMEHASH
ではありません)を持つ必要があります。データベースサーバーのエディションには広がりがあるので、私は両方のケースに対応できるものが必要でした。
なぜSERVERNAME \ LOCALDB#SOMEHASHは受け入れられないのですか? –
@RaySaltrelli:テストのコードからlocaldbに接続するために使用することができないので、 – carlpett
を選択してください@@ Servernameは必要なものではありませんか? – granadaCoder