[英]Detect SQL Server 2008 R2
我已經搜尋了一天,但問題仍然是:如何在各種Windows版本上檢測SQL Server 2008 R2:
使用NSIS開發的安裝程序。 一些其他信息:
登記處
網上的樣本已過期或完全不正確。 不僅R2,而且2k8檢測也有問題。
文件系統
我不知道什么文件特別來自2k8 R2。
安裝程序退出代碼
在某些情況下,退出時沒有錯誤代碼(即缺少先決條件)。
嘗試執行以下查詢:
SELECT @@Version
我得到這個結果:
Microsoft SQL Server 2008 R2(RTM)-10.50.1600.1(X64)2010年4月2日15:48:46版權所有(c)Windows NT 5.2(Build 3790:Service Pack 2)上的Microsoft Corporation Enterprise Edition(64位)
這夠了嗎? 對我來說是:)
您可以使用WMI列出所有已安裝的Microsoft產品,然后查找您需要的產品
public static class MyClass
{
public static void Main()
{
ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_Product");
foreach (ManagementObject mo in mos.Get())
{
Console.WriteLine(mo["Name"]);
}
}
}
查看具有多種方法的舊版SQLPing源代碼
在嘗試執行Davide提供的查詢(SELECT @@ Version)之前,您可以檢查MSSQL服務是否正在運行
using System.ServiceProcess;
var list = ServiceController.GetServices().ToList();
if (list.Any(sc => sc.ServiceName.ToLower().Contains("mssql")))
我在應用程序中使用以下代碼
SqlDataSourceEnumerator sqldatasourceenumerator1 = SqlDataSourceEnumerator.Instance;
DataTable datatable1 = sqldatasourceenumerator1.GetDataSources();
foreach (DataRow row in datatable1.Rows)
{
if (Environment.MachineName.Equals(row["ServerName"]))
{
isSqlServerPresent = true;
break;
}
}
唯一的問題是,該代碼在計算機處於網絡中時有效,但是由於我的情況是計算機將在網絡中,所以我對這個問題很滿意。
它為我提供了SQL Server的本地實例。
實際上,如果要列出計算機或LAN上的網絡中的服務器和SQL Server實例的列表,則有相應的API。
應該有正確的方法來調用NetServerEnum
Windows API,有關示例,請參見:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.