Sql server 2008 如果是“a”,如何连接到SQL Server的默认实例;“命名实例”;参数是必需的吗?
我正在安装一些软件,我需要告诉它使用SQL Server的默认实例,但是Installshield GUI坚持要求我输入命名实例的信息 目标SQL Server是版本2008R2Sql 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 并将结果用作实例
我希望有一个干净的黑客,我可以使用,如“.”或“默认”,但我还没有猜到它。我也试过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
对于默认实例不起作用,即使从代码中也不起作用。它必须是
或
。如果没有指定实例名,并且服务器上只有一个默认实例,则以这种方式创建的实例名是不正确的。这个问题很老了,但我想现在我有了答案!(请参阅)