我想以編程方式枚舉服務器上的SQL Server 2005命名實例。我知道我應該可以很容易地做到這一點,但我不能爲我的生活弄清楚如何。預先感謝任何幫助!如何以編程方式枚舉SQL Server 2005命名實例?
1
A
回答
1
以下是我已經在不久前寫的...這是不完全一樣,但它可能給你如何做到這一點的想法。在這裏我列舉和檢查在SQL Server的Express版,但你應該能夠改變......你需要去註冊表中找到的SQL Server SKUNAME和SKULEVEL 2005
public static bool IsSqlExpressPresent(string strInstance, Utility.Log log)
{
const string edition = "Express Edition";
string instance = "MSSQL$" + strInstance.ToUpper();
const int spLevel = 1;
bool fCheckEdition = false;
bool fCheckSpLevel = false;
try
{
// Run a WQL query to return information about SKUNAME and SPLEVEL about installed instances
// of the SQL Engine.
ManagementObjectSearcher getSqlExpress =
new ManagementObjectSearcher("root\\Microsoft\\SqlServer\\ComputerManagement",
"select * from SqlServiceAdvancedProperty where SQLServiceType = 1 and ServiceName = '"
+ instance + "' and (PropertyName = 'SKUNAME' or PropertyName = 'SPLEVEL')");
// If nothing is returned, SQL Express isn't installed.
if (getSqlExpress.Get().Count == 0)
{
return false;
}
// If something is returned, verify it is the correct edition and SP level.
foreach (ManagementObject sqlEngine in getSqlExpress.Get())
{
if (sqlEngine["ServiceName"].ToString().Equals(instance))
{
switch (sqlEngine["PropertyName"].ToString())
{
case "SKUNAME":
// Check if this is Express Edition or Express Edition with Advanced Services
fCheckEdition = sqlEngine["PropertyStrValue"].ToString().Contains(edition);
break;
case "SPLEVEL":
// Check if the instance matches the specified level
fCheckSpLevel = int.Parse(sqlEngine["PropertyNumValue"].ToString()) >= spLevel;
//fCheckSpLevel = sqlEngine["PropertyNumValue"].ToString().Contains(spLevel);
break;
}
}
}
if (fCheckEdition & fCheckSpLevel)
{
return true;
}
return false;
}
catch (ManagementException e)
{
if (log != null)
{
log.Write(
Utility.LogState.Error,
"Database",
"Could not find OfficeClip instance of SqlExpress: " + e.ErrorCode + ", " + e.Message
);
}
return false;
}
}
1
相關問題
- 1. 如何枚舉SQL Server實例
- 2. 如何以編程方式禁用SQL Server 2005 Native Client中的命名管道?
- 3. 將SQL SERVER 2005從默認實例更改爲命名實例?
- 4. 是否可以重命名SQL Server 2005實例
- 5. 如何以編程方式啓動SQL Server 2005合併複製
- 6. 如何以編程方式創建SQL Express 2016的命名實例?
- 7. 如何以編程方式枚舉Typescript 0.9.5中的枚舉類型?
- 8. SQL Server命名實例
- 9. 以編程方式檢測SQL Server版
- 10. 以編程方式查找sql server的所有實例
- 11. 如何以編程方式將BIDS構件部署到遠程SQL Server實例?
- 12. 如何以編程方式枚舉resx文件中的資源?
- 13. C#如何以編程方式獲取SQL Server安裝路徑?
- 14. SQL Server 2005命名爲實例端口問題
- 15. 連接到SQL Server 2005命名實例的問題
- 16. 如何以編程方式枚舉Azure訂閱和租戶?
- 17. 以編程方式創建SQL Server表
- 18. 如何在SQL Server中以編程方式複製和重命名VIEW/SP?
- 19. 如何枚舉sql server的數據庫
- 20. 如何以編程方式在SQL Server 2005中用C#存儲Word文件?
- 21. 如何以編程方式比較SQL Server 2005中登錄/用戶的權限
- 22. SQL Server:以編程方式安排
- 23. Smo在2005實例存在時不顯示2008 SQL Server實例
- 24. 在SQL Server中連接命名實例
- 25. 重命名一個SQL Server實例
- 26. 實體框架5枚舉命名
- 27. 以編程方式/一般地從db4o檢索枚舉值
- 28. 如何以編程方式克隆SQL Server中的數據庫模式?
- 29. 以編程方式枚舉UIViewController的傳出隊列
- 30. Java和枚舉的枚舉方法的命名int
完美!謝謝。 – GuyBehindtheGuy 2009-09-26 19:45:45