无法使用它的全名连接到默认实例

时间:2017-07-07 18:29:15

标签: sql sql-server database-connection sql-server-2016

我正在开发一个应用程序,需要从用户获取服务器名称或地址和数据库名称,并基于此构建文件夹结构。问题是,为了获得所有不同方式的相同文件夹,需要获取实例的路径(localhost,ip地址等),我运行以下查询:

select cast(SERVERPROPERTY('MachineName')as varchar)+'\'+@@servicename

在目标服务器上并根据它设置我的文件夹结构,并以该格式保存用户提供的连接(如果我有ip或服务器名称,则无关紧要,所有连接字符串都有一个)。
我的问题是,当实例是目标机器上的默认实例时,我似乎无法使用MACHINE_NAME\MSSQLSERVER进行连接。我只能使用没有实例名称的机器登录。因此,我需要找到一种方法来使用其全名(首选)连接到实例,或者找到一种方法来确定目标实例是否是默认实例。
任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:1)

' MSSQLSERVER'保留用于默认实例,因此您可以

SELECT CAST(SERVERPROPERTY('MachineName')AS VARCHAR)+ CASE WHEN CHARINDEX('MSSQLSERVER', @@SERVICENAME, 1) >0 THEN '' ELSE '\'+@@SERVICENAME END