SQL Server 2008 не устанавливает DMO по умолчанию. Есть ли функция или сценарий, который я могу использовать из командной строки для проверки удаленных серверов, чтобы узнать, установлен ли DMO? Мы использовали проверку ключа реестра, но подумали, что это не лучший вариант. Любой совет приветствуется!
Я предполагаю, что вы имеете в виду SMO (DMO был заменен SMO в SQL 2005).
Вы можете сделать это как быстрый и грязный тест в Powershell:
PS C:\> [Reflection.Assembply]::LoadWithPartialName("Microsoft.SqlServer.Smo")
Если SMO зарегистрирован, он вернется с некоторой информацией о том, где он нашел DLL SMO и какой это версии.
GAC Version Location
--- ------- --------
True v2.0.50727 C:\.........
Вы также можете использовать этот сценарий VBS, если не хотите делать это в Powershell:
Dim sqlServer
set sqlServer = CreateObject("Microsoft.SQLServer.Management.SMO.Server")
set sqlServer = nothing
Если он возвращает ошибку времени выполнения "ActiveX component can't create object: 'Microsoft.SqlServer.Smo.Server'"
значит SMO не установлен (или, по крайней мере, не зарегистрирован).