Sql server 2008 如果是“a”,如何连接到SQL Server的默认实例;“命名实例”;参数是必需的吗?

Sql server 2008 如果是“a”,如何连接到SQL Server的默认实例;“命名实例”;参数是必需的吗?,sql-server-2008,sql-server-express,Sql Server 2008,Sql Server Express,我正在安装一些软件,我需要告诉它使用SQL Server的默认实例,但是Installshield GUI坚持要求我输入命名实例的信息 目标SQL Server是版本2008R2 我希望有一个干净的黑客,我可以使用,如“.”或“默认”,但我还没有猜到它。我也试过MSSQLSERVER,但也没用。试试MSSQLSERVER。这可能是根据的默认实例名称。运行此查询: SELECT @@SERVERNAME + '\' + @@SERVICENAME AS InstanceName 并将结果用作实例

我正在安装一些软件,我需要告诉它使用SQL Server的默认实例,但是Installshield GUI坚持要求我输入命名实例的信息

目标SQL Server是版本2008R2


我希望有一个干净的黑客,我可以使用,如“.”或“默认”,但我还没有猜到它。我也试过MSSQLSERVER,但也没用。

试试
MSSQLSERVER
。这可能是根据的默认实例名称。

运行此查询:

SELECT @@SERVERNAME + '\' + @@SERVICENAME AS InstanceName

并将结果用作实例名称。

安装向导将采用MSSQLSERVER,这意味着“默认”实例


请参阅

中的步骤12如果您配置了默认实例,只需将服务器主机名用作实例

所有SQL server实例都存储在中。您可以使用Windows工具
C:\Windows\System32\Regedt32.exe查询注册表,并在其中浏览/搜索,您可以使用类似于或甚至T-SQL的语言来执行此操作(也称为Transact-SQL)

在这个答案中,我将向您展示如何使用T-SQL执行此操作。使用我找到的这个脚本来确定ServerName、InstanceName、HostName和PortNumber:

set nocount on
Declare @key Varchar(100), @PortNumber varchar(20)

if charindex('\',CONVERT(char(20), SERVERPROPERTY('servername')),0) <>0 begin
    set @key = 'SOFTWARE\MICROSOFT\Microsoft SQL Server\'+@@servicename+'\MSSQLServer\Supersocketnetlib\TCP'
end else begin
    set @key = 'SOFTWARE\MICROSOFT\MSSQLServer\MSSQLServer\Supersocketnetlib\TCP'
end

EXEC master..xp_regread @rootkey = 'HKEY_LOCAL_MACHINE', @key = @key, 
     @value_name = 'Tcpport', @value = @PortNumber OUTPUT
SELECT  CONVERT(char(20), SERVERPROPERTY('servername')) ServerName,
        CONVERT(char(20), SERVERPROPERTY('InstanceName')) InstanceName,
        CONVERT(char(20), SERVERPROPERTY('MachineName')) as HostName, 
        convert(varchar(10), @PortNumber) PortNumber
将nocount设置为on
声明@key Varchar(100),@PortNumber Varchar(20)
如果charindex('\',CONVERT(char(20),SERVERPROPERTY('servername')),则0)0开始
set@key='SOFTWARE\MICROSOFT\MICROSOFT SQL Server\'+@@servicename+'\MSSQLServer\Supersocketnetlib\TCP'
结束,否则开始
set@key='SOFTWARE\MICROSOFT\MSSQLServer\MSSQLServer\Supersocketnetlib\TCP'
结束
EXEC master..xp_重新读取@rootkey='HKEY_LOCAL_MACHINE',@key=@key,
@value\u name='Tcpport',@value=@PortNumber输出
选择CONVERT(char(20),SERVERPROPERTY('servername'))servername,
转换(字符(20),服务器属性('InstanceName'))InstanceName,
将(char(20)、SERVERPROPERTY('MachineName')转换为主机名,
转换(varchar(10),@PortNumber)端口号
如果
InstanceName
null
,则表示未配置命名实例,则您有两个非独占选项:

  • 指定
    ServerName
    以访问默认实例
    -或-
  • 使用Sql Server配置管理器->Sql本机客户端XX.Y配置->别名来定义别名。例如:

    将为本地SQL server设置别名
    Inst1
    。指定
    (本地)\inst11433
    来访问它。当然,您也可以使用服务器名来代替
    (本地)

    重要提示:设置别名后,您需要重新启动相关实例的SQL服务或重新启动电脑,否则将无法立即访问。如果您使用的端口不是默认端口1433,则可能需要打开本地防火墙才能使其正常工作


  • 注意:如果“开始”菜单中没有SQL Server配置管理器,可以在C:\Windows\System32中找到它。查找SqlServerManagerXX.msc(其中XX是SQL版本,例如XX=11或XX=13).

    我尝试通过SSMS连接到默认SQL Server实例,但它不起作用。如果我只是尝试
    它就起作用。查询
    选择@@SERVICENAME作为InstanceName
    返回
    MSSQLSERVER
    \MSSQLSERVER
    对于默认实例不起作用,即使从代码中也不起作用。它必须是
    。如果没有指定实例名,并且服务器上只有一个默认实例,则以这种方式创建的实例名是不正确的。这个问题很老了,但我想现在我有了答案!(请参阅)