我知道這裏有很多相似的主題,但沒有一個提供了我正在尋找的正確答案。以編程方式查找sql server的所有實例
我很努力地收集我們網絡上的所有SQL-Server實例。它應該能夠檢測到SQl-Server正在運行的版本。我們已經在運行不同版本的「SQL Server 2000
」和「SQL Server 2008 R2
」
之間變化給你提供一些背景資料,我目前我們的本地網絡上開發,但後來它會在我們的服務器上運行,來收集信息。
一些收集到的信息是:
- 應用程序池
- IIS的服務器
- 和一些像這樣的東西
這一切上方安裝
一些我已經根據各地計算器和其他網站找到其他的解決辦法試過的東西:
- WMI,使用不同的名稱空間,例如
root\\Microsoft\\SqlServer\\ComputerManagement10
和ServerSettings
類。但是這隻給出沒有版本號的SQLSERVER和SQLEXPRESS。讓它變得毫無用處。 - 我也試過
root\\CIMV2 Win32_Product
包括一個類似sql語句的地方。但是,這返回的數據比我所尋找的要多得多。另外查詢本身非常慢。 - 後來我在Visual Studio中發現了一些類,例如
SqlDataSourceEnumerator
。雖然這隻適用於某個服務正在運行且某些端口已打開的情況。由於可能的安全問題和可能的不正確數據,我們最好不這樣做 - 我還看到一些人提到了其他一些命名空間(一旦我再次找到它們,它們會寫在這裏),但是msdn聲明我們將要使用這些命名空間在不久的將來被刪除。
總結:我需要檢索與2000和2008 R2之間不同版本的域所有已安裝的SQL-Server
實例。
你試過[NetServerEnum(http://msdn.microsoft.com/en-us /library/windows/desktop/aa370623%28v=vs.85%29.aspx)函數? – RRUZ
還沒有,對我來說這是一個新的。我會仔細研究一下並在稍後報告我的發現。 – AssaultingCuccos
好,所以我用NetServerEnum函數玩了一下。它確實會返回一些所需的數據,但看起來好像它仍然依賴於與SqlDataSourceEnumerator相同的東西。只是在本地網絡上運行它,並沒有提供網絡上的所有sql-server實例。與NetServerEnum的結果完全相同。 – AssaultingCuccos