我需要找到SQL服務器是否安裝在一臺機器上。它可以是任何版本的SQL服務器(7,2005,8,sql express等)。在編寫安裝程序時,我們需要知道這些信息,並且需要向用戶顯示如果尚未找到SQL Server,則安裝無法繼續。檢查是否安裝了SQL Server(任何版本)?
我已經看到了使用註冊表,wmi,SMO或乾脆連接到SQL服務器實例的版本(雖然在這裏沒有幫助,因爲我們不知道服務器名稱)。
我們正在使用Wix安裝程序。
這樣做的正確方法是什麼?
JD
我需要找到SQL服務器是否安裝在一臺機器上。它可以是任何版本的SQL服務器(7,2005,8,sql express等)。在編寫安裝程序時,我們需要知道這些信息,並且需要向用戶顯示如果尚未找到SQL Server,則安裝無法繼續。檢查是否安裝了SQL Server(任何版本)?
我已經看到了使用註冊表,wmi,SMO或乾脆連接到SQL服務器實例的版本(雖然在這裏沒有幫助,因爲我們不知道服務器名稱)。
我們正在使用Wix安裝程序。
這樣做的正確方法是什麼?
JD
一個簡單的方法來列出網絡上的所有SQL服務器是這樣的:
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("****************************************");
}
看一看這個問題:How can I determine installed SQL Server instances and their versions?
答案之一列出的註冊表項,你可以檢查以確定已安裝的SQL Server版本(S)。
或查看此CodeProject上的文章,如果你需要找到本地網絡中的任何SQL服務器:http://www.codeproject.com/KB/database/locate_sql_servers.aspx
我們已經看到卸載已經離開註冊表項的sql server。另外,從以前的文章來看,不能保證註冊表條目對於不同版本是相同的。 – 2010-03-04 17:12:03
我需要類似的東西來發現一個本地SQLServer實例來執行自動化測試。
的SmoApplication很適合這個要求 - 我的代碼如下所示:
public static string GetNameOfFirstAvailableSQLServerInstance()
{
// Only search local instances - pass true to EnumAvailableSqlServers
DataTable dataTable = SmoApplication.EnumAvailableSqlServers(true);
DataRow firstRow = dataTable.Rows[0];
string instanceName = (string)firstRow["Name"];
return instanceName;
}
另一種簡單的替代方法是使用安裝程序中的以下命令行:
sc queryex type= service | find "MSSQL"
上面的命令只需列出包含MSSQL部分的所有服務,列出已命名和默認的SQL Server實例。如果找不到任何東西,此命令將不返回任何內容它返回像這樣:
SERVICE_NAME: MSSQL$SQLEXPRESS
希望這有助於。
您的安裝例程是否必須與SQL服務器在同一臺服務器上運行? – BIDeveloper 2010-03-04 16:52:12