当前位置:  开发笔记 > 编程语言 > 正文

如何确定已安装的SQL Server实例及其版本?

如何解决《如何确定已安装的SQLServer实例及其版本?》经验,为你挑选了10个好方法。

我试图确定什么的SQL Server实例/ SQL Express的我已经安装了(手动或编程),但所有的例子都告诉我运行一个SQL查询,以确定这里面假设我已经连接到特定实例.



1> G Mastros..:

在命令行:

SQLCMD -L

要么

OSQL -L

(注:必须是大写字母L)

这将列出网络上安装的所有sql server.您可以设置配置选项以防止SQL Server显示在列表中.去做这个...

在命令行:

svrnetcn

在启用的协议列表中,选择"TCP/IP",然后单击"属性"."隐藏服务器"复选框.


我喜欢命令行选项,但是当我在我的(非网络)开发人员盒子上尝试它们时,我得到了混合的结果; 基本上"sqlcmd -L"是唯一有效的,并且只有在SQL Server Browser Service运行时才有效.这是预料之中的吗?

2> Brian R. Bon..:

您可以查询此注册表值以直接获取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++,则可以使用此代码获取注册表信息.


注意,似乎"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<版本>\Tools\ClientSetup\CurrentVersion"和"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names"显示在32位部分注册表,而实例的实际路径:"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\"显示在64位Hive中.

3> dotnetengine..:

安装的所有实例都应显示在Microsoft管理控制台的"服务管理单元"中.要获取实例名称,请转到"开始"| 运行| 键入Services.msc并查找具有"Sql Server(实例名称)"的所有条目.


等效的PowerShell命令:`Get-Service | ?{$ _.名字式"MSSQL*"}`
这对我有用,并且是这里列出的最简单的方法.
我的电脑显示MSSQL $ SQLEXPRESS正在以显示名称SQL Server(SQLEXPRESS)运行。...但是如何在服务器名称中输入此名称?测试连接显示错误,例如...尝试连接到SQL Server时发生与网络相关或特定于实例的错误

4> 小智..:

- 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 


+1有关实例的信息来源与Brian的答案相同.有人可能会编写C#代码以从Windows注册表中获取值; 这让我觉得答案是多余的,但是了解xp_regread很好.#谢谢.

5> Matt..:

如果您只是想查看当前登录的计算机上安装的内容,我认为最直接的手动过程是打开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



6> 小智..:

我知道这个帖子有点老了,但是在找到我正在寻找的答案之前我遇到了这个帖子并且认为我会分享.如果您使用的是SQLExpress(或localdb),则可以使用更简单的方法查找实例名称.在命令行类型:

> sqllocaldb i

这将列出您在本地安装的实例名称.因此,您的完整服务器名称应包含(localdb)\在要连接的实例名称前面.此外,sqllocaldb允许您创建新实例或删除它们以及配置它们.请参阅:SqlLocalDB实用程序.



7> 小智..:

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



8> Cade Roux..:

SQL Server Browser服务http://msdn.microsoft.com/en-us/library/ms181087.aspx



9> 小智..:

如果您有兴趣在脚本中确定此内容,可以尝试以下操作:

sc \\server_name query | grep MSSQL

注意:grep是gnuwin32工具的一部分


您可以使用`findstr`代替`grep`。

10> 小智..:

在Windows命令行中,键入:

SC \\server_name query | find /I "SQL Server ("

其中“ server_name”是要在其上显示SQL实例的任何远程服务器的名称。

当然,这需要足够的权限。

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有