【发布时间】:2013-02-28 16:16:42
【问题描述】:
对于非 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 不是)。由于数据库服务器的版本有一些分布,我需要可以处理这两种情况的东西。
【问题讨论】:
-
为什么 SERVERNAME\LOCALDB#SOMEHASH 不可接受?
-
@RaySaltrelli:因为它不能用于从我的测试中的代码连接到 localdb
-
选择@@Servername 不是你需要的?
-
@granadaCoder: 同
SERVERPROPERTY('ServerName') -
对不起。我想我搞砸了。您可以运行 Select @@VERSION 并发布吗?
标签: sql sql-server sql-server-express localdb