我看了一下SQL2008 R2功能包和我的Windows註冊表(本機上安裝了SQL2008 R2 Dev)中的SharedManagementObjects.msi,我相信這些是應該用來檢測SMO的註冊表項HKLM):
SOFTWARE \ Microsoft \ Microsoft SQL Server \ SharedManagementObjects \ CurrentVersion - 這顯然是主鍵,表示安裝了某個版本的SMO。
SOFTWARE \ Microsoft \ Microsoft SQL Server 2008 Redist \ SharedManagementObjects \ 1033 \ CurrentVersion - 這可能意味着安裝了2008英語。可能只是檢查是否存在SOFTWARE \ Microsoft \ Microsoft SQL Server 2008 Redist \ SharedManagementObjects就足夠了。
同樣適用於SQL2012: HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\ Microsoft SQL Server的2012的Redist \ SharedManagementObjects \ 1033 \ CURRENTVERSION
但不SQL2005!即使我在這臺機器上也安裝了2005版本。
還有一件事,因爲SMO依賴於它們,所以通常還需要Microsoft SQL Server系統CLR類型。 的SQLSysClrTypes.msi只有一個註冊表項: SOFTWARE \微軟\ Microsoft SQL Server的\引用次數\ SQLSysClrTypes
一個相關的問題:你是否面臨過與2005年和2008年相同的代碼工作的問題。如果是的話,你是如何解決它的? – Mostlyharmless 2008-11-13 19:37:16