我试图确定什么的SQL Server实例/ SQL Express的我已经安装了(手动或编程),但所有的例子都告诉我运行一个SQL查询,以确定这里面假设我已经连接到特定实例.
在命令行:
SQLCMD -L
要么
OSQL -L
(注:必须是大写字母L)
这将列出网络上安装的所有sql server.您可以设置配置选项以防止SQL Server显示在列表中.去做这个...
在命令行:
svrnetcn
在启用的协议列表中,选择"TCP/IP",然后单击"属性"."隐藏服务器"复选框.
您可以查询此注册表值以直接获取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++,则可以使用此代码获取注册表信息.
安装的所有实例都应显示在Microsoft管理控制台的"服务管理单元"中.要获取实例名称,请转到"开始"| 运行| 键入Services.msc并查找具有"Sql Server(实例名称)"的所有条目.
- 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
如果您只是想查看当前登录的计算机上安装的内容,我认为最直接的手动过程是打开SQL Server配置管理器(从"开始"菜单),它显示所有SQL服务(和该硬件上只有 SQL服务(运行与否).这假定SQL Server 2005或更高版本; dotnetengineer建议使用服务管理控制台将显示所有服务,并且应始终可用(例如,如果您运行的是早期版本的SQL Server).
但是,如果您正在寻找更广泛的发现过程,则可以考虑第三方工具,例如SQLRecon和SQLPing,它们将扫描您的网络并构建在他们有权访问的任何服务器上找到的所有SQL Service实例的报告.我已经使用过这样的工具已经有一段时间了,但我对他们发现的东西感到惊讶(也就是说,有一些我不知道存在的实例).因人而异.您可以访问Google以获取详细信息,但我相信此页面具有相关下载:http://www.sqlsecurity.com/Tools/FreeTools/tabid/65/Default.aspx
我知道这个帖子有点老了,但是在找到我正在寻找的答案之前我遇到了这个帖子并且认为我会分享.如果您使用的是SQLExpress(或localdb),则可以使用更简单的方法查找实例名称.在命令行类型:
> sqllocaldb i
这将列出您在本地安装的实例名称.因此,您的完整服务器名称应包含(localdb)\在要连接的实例名称前面.此外,sqllocaldb允许您创建新实例或删除它们以及配置它们.请参阅:SqlLocalDB实用程序.
SQL Server允许应用程序在当前网络中查找SQL Server实例.SqlDataSourceEnumerator类将此信息公开给应用程序开发人员,提供包含有关所有可见服务器的信息的DataTable.此返回表包含网络上可用的服务器实例列表,该列表与用户尝试创建新连接时提供的列表相匹配,并展开包含"连接属性"对话框中所有可用服务器的下拉列表.显示的结果并不总是完整的.要检索包含有关可用SQL Server实例的信息的表,必须首先使用shared/static Instance属性检索枚举器:
using System.Data.Sql; class Program { static void Main() { // Retrieve the enumerator instance and then the data. SqlDataSourceEnumerator instance = SqlDataSourceEnumerator.Instance; System.Data.DataTable table = instance.GetDataSources(); // Display the contents of the table. DisplayData(table); Console.WriteLine("Press any key to continue."); Console.ReadKey(); } private static void DisplayData(System.Data.DataTable table) { foreach (System.Data.DataRow row in table.Rows) { foreach (System.Data.DataColumn col in table.Columns) { Console.WriteLine("{0} = {1}", col.ColumnName, row[col]); } Console.WriteLine("============================"); } } }
来自msdn http://msdn.microsoft.com/en-us/library/a6t1z9x2(v=vs.80).aspx
SQL Server Browser服务http://msdn.microsoft.com/en-us/library/ms181087.aspx
如果您有兴趣在脚本中确定此内容,可以尝试以下操作:
sc \\server_name query | grep MSSQL
注意:grep是gnuwin32工具的一部分
在Windows命令行中,键入:
SC \\server_name query | find /I "SQL Server ("
其中“ server_name”是要在其上显示SQL实例的任何远程服务器的名称。
当然,这需要足够的权限。