Я пытаюсь получить версию SQL Server 2008 и выше версии с помощью WMI, я использую класс ComputerManagement10 и запрос оИспользование WMI, чтобы получить SQL Server версии 2008 не удается
select PropertyStrValue
from SqlServiceAdvancedProperty
where PropertyName = \'VERSION\' and ServiceName =\'MSSQL$SQL2008R2SP1'\'
где ServiceName
- это экземпляр SQL Server.
я испытываю странную проблему, что ожидаемый результат (PropertyStrValue поле) я получаю отличается от обычной select @@version
или «Щелкните правой кнопкой мыши -> Свойства» (из sqlservr.exe
)
версия получает WMI является «10,51. 2500.0 ", а оригинал -" 10.50.2500.0 "
Я проверил более двух раз, чтобы убедиться, что это правильный экземпляр, SQL Server, хост и т. Д., Но кажется, что я не единственный, кто испытал такого рода вещи.
Кто-нибудь знает, почему такое поведение происходит и как его исправить?
Кто-нибудь знает, надежно ли использовать WMI для получения версии SQL Server?
Заранее спасибо.
Просто любопытно, почему это лучше? Полагаясь на строковые переменные, а затем системный вызов кажется менее надежным – abatishchev
@abatishchev: Это не «строка»: это внутренний вызов механизма БД, как правильный вызов WMI. Я подозреваю, что вызов WMI здесь неправильный (по моей ссылке), не использует тот же источник, и OP демонстрирует, что он ошибочен ... – gbn
Но вы можете вызвать 'select SERVERPROPERTY ('ProductVersion1')', но можете ' t 'select @@ version1', вот что я имею в виду« надежный »- [имя_файла] (http://msdn.microsoft.com/en-us/library/ms174396.aspx) не проверяется во время компиляции – abatishchev