对于非 LocalDb SQL Server,我可以SELECT SERVERPROPERTY('ServerName')
获取服务器的名称和正在运行的实例。但是,对于 LocalDb 服务器,我得到SERVERNAME\LOCALDB#SOMEHASH
. 如何获取本地实例名称?
解决方案:
获取实例的解决方案,在 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
不是)。由于数据库服务器的版本有所不同,我需要一些可以处理这两种情况的东西。