【问题标题】:How do I connect to the default instance of SQL Server if a "named instance" parameter is required?如果需要“命名实例”参数,如何连接到 SQL Server 的默认实例?
【发布时间】:2011-07-14 07:24:31
【问题描述】:

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

目标 SQL Server 是版本 2008R2

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

【问题讨论】:

  • 这个问题很老了,但我想现在我有答案了! (见here

标签: sql-server-2008 sql-server-express


【解决方案1】:

试试MSSQLSERVER。根据this MSDN page,这可能是默认实例名称。

【讨论】:

    【解决方案2】:

    运行此查询:

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

    并将结果用作您的实例名称。

    【讨论】:

    • 我尝试通过 SSMS 连接到默认 SQL Server 实例,但它不起作用。如果我只是尝试.<machineName>,它会起作用。查询 SELECT @@SERVICENAME AS InstanceName 返回 MSSQLSERVER<machineName>\MSSQLSERVER 不起作用
    • 对于默认实例,即使从代码中也无法使用此命名法。它必须是 .<MachineName>
    • 这种方式创建的实例名不正确,如果没有指定实例名,服务器上只有一个默认实例。
    【解决方案3】:

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

    请参阅MSDN page 中的第 12 步

    【讨论】:

      【解决方案4】:

      如果您配置了默认实例,只需使用服务器主机名作为实例

      【讨论】:

        【解决方案5】:

        所有 SQL 服务器实例都存储在 Windows Registry. 中您可以使用 Windows 工具 C:\Windows\System32\Regedt32.exe 查询注册表并在那里浏览/搜索,您可以使用诸如 C#  (see Example 1 there) 甚至 T- 之类的语言来完成SQL(也称为 Transact-SQL)。

        在这个答案中,我将向您展示如何使用 T-SQL。使用我找到的 here 这个脚本来确定 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
        

        如果InstanceNamenull,则表示没有配置命名实例,那么您有两个非独占选项:

        1. 指定ServerName 以访问默认实例
          - 或-
        2. 使用Sql Server 配置管理器 -> SQL Native Client XX.Y 配置 -> 别名 来定义别名。例如:

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

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

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

        【讨论】:

          猜你喜欢
          • 2010-09-07
          • 2011-12-11
          • 1970-01-01
          • 2015-05-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多