检查是否安装了SQL服务器(任何版本)?

JD.*_*JD. 21 c# sql-server

我需要查找是否在计算机上安装了SQL Server.它可以是任何版本的SQL服务器(7,2005,8,sql express等).我们在编写安装程序时需要知道此信息,并且需要向用户显示如果未找到SQL服务器,则无法继续安装.

我见过使用注册表,wmi,SMO或只是连接到SQL服务器实例的版本(虽然在这里没有帮助,因为我们不知道服务器名称).

我们正在使用Wix安装程序.

这样做的正确方法是什么?

JD

M4N*_*M4N 16

列出网络上所有SQL Server的简单方法是:

using System.Data;
using System.Data.Sql;
using System;

...

SqlDataSourceEnumerator sqldatasourceenumerator1 = SqlDataSourceEnumerator.Instance;
DataTable datatable1 = sqldatasourceenumerator1.GetDataSources();
foreach (DataRow row in datatable1.Rows)
{
    Console.WriteLine("****************************************");
    Console.WriteLine("Server Name:"+row["ServerName"]);
    Console.WriteLine("Instance Name:"+row["InstanceName"]);
    Console.WriteLine("Is Clustered:"+row["IsClustered"]);
    Console.WriteLine("Version:"+row["Version"]);
    Console.WriteLine("****************************************");
}
Run Code Online (Sandbox Code Playgroud)

摘自此博客文章.

  • @Martin这不是要求SQL Browser服务运行吗? (5认同)

Már*_*les 6

另一个简单的替代方法是在安装程序中使用以下命令行:

sc queryex type= service | find "MSSQL"
Run Code Online (Sandbox Code Playgroud)

上面的命令只是列出了包含 MSSQL 部分的所有服务,列出了命名的和默认的 SQL Server 实例。如果未找到任何内容,此命令将不返回任何内容。它返回如下内容:

SERVICE_NAME: MSSQL$SQLEXPRESS
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。