我试图确定我已经安装的sql server/sql express的实例(手动或编程),但所有的例子都告诉我运行一个sql查询来确定这假设我已经连接到一个特定的实例。
当前回答
——T-SQL查询查找机器上已安装的实例列表
DECLARE @GetInstances TABLE
( Value nvarchar(100),
InstanceNames nvarchar(100),
Data nvarchar(100))
Insert into @GetInstances
EXECUTE xp_regread
@rootkey = 'HKEY_LOCAL_MACHINE',
@key = 'SOFTWARE\Microsoft\Microsoft SQL Server',
@value_name = 'InstalledInstances'
Select InstanceNames from @GetInstances
其他回答
这个查询可以得到服务器名和实例名:
SELECT @@SERVERNAME, @@SERVICENAME
另一个选择是运行SQLSERVER发现报告,进入SQLSERVER安装介质,双击setup.exe
在下一个屏幕中,转到工具并单击如下所示的发现报告
这将向你展示所有的实例以及整个功能..下面是我电脑上的快照
这里有一个简单的方法: 去 然后开始 程序然后 然后是SQL Server 2005 配置工具 然后是SQL Server配置管理器 然后进行SQL Server 2005网络配置 在这里,您可以找到安装到您的机器上的所有实例。
当我评估100多个服务器时,我也遇到了同样的问题,我用c#写了一个脚本来浏览由SQL组成的服务名称。当在服务器上安装实例时,SQL server为每个实例添加一个服务,并使用服务名。对于不同的版本,例如2000年到2008年,它可能有所不同,但肯定有一个具有实例名的服务。
我获取服务名并从服务名获得实例名。下面是WMI查询结果的示例代码:
if (ServiceData.DisplayName == "MSSQLSERVER" || ServiceData.DisplayName == "SQL Server (MSSQLSERVER)")
{
InstanceData.Name = "DEFAULT";
InstanceData.ConnectionName = CurrentMachine.Name;
CurrentMachine.ListOfInstances.Add(InstanceData);
}
else
if (ServiceData.DisplayName.Contains("SQL Server (") == true)
{
InstanceData.Name = ServiceData.DisplayName.Substring(
ServiceData.DisplayName.IndexOf("(") + 1,
ServiceData.DisplayName.IndexOf(")") - ServiceData.DisplayName.IndexOf("(") - 1
);
InstanceData.ConnectionName = CurrentMachine.Name + "\\" + InstanceData.Name;
CurrentMachine.ListOfInstances.Add(InstanceData);
}
else
if (ServiceData.DisplayName.Contains("MSSQL$") == true)
{
InstanceData.Name = ServiceData.DisplayName.Substring(
ServiceData.DisplayName.IndexOf("$") + 1,
ServiceData.DisplayName.Length - ServiceData.DisplayName.IndexOf("$") - 1
);
InstanceData.ConnectionName = CurrentMachine.Name + "\\" + InstanceData.Name;
CurrentMachine.ListOfInstances.Add(InstanceData);
}
你可以查询这个注册表值直接得到SQL版本:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\Tools\ClientSetup\CurrentVersion
或者你可以查询你的实例名,然后使用sqlcmd和你想要的实例名:
要查看实例名:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names
然后执行这个:
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
如果您使用c++,您可以使用这段代码来获取注册表信息。
推荐文章
- 我如何执行插入和返回插入的身份与Dapper?
- 索引中列的顺序有多重要?
- 如何清空SQL Server查询缓存?
- 在SQL Server中做嵌套case语句逻辑的最佳方法
- 从实体框架中删除单个记录?
- 使用SQL Server Server Management Studio导入/导出数据库
- 如何结合日期从一个字段与时间从另一个字段- MS SQL Server
- 在SQL中获取两个值的最小值
- 如何在不知道其名称的情况下删除SQL默认约束?
- 在表变量上创建索引
- 如何在SQL Server中删除外键?
- 如何为查询返回的每一行执行存储过程一次?
- 如果没有使用EXISTS引入子查询,则只能在选择列表中指定一个表达式
- SQL Server -事务回滚错误?
- 查询以列出数据库中每个表中的记录数量