У меня была такая же проблема. Я начал использовать AD, но информация там может легко устаревать, и хуже того, не все серверы будут правильно регистрироваться как имеющие экземпляр SQL Server. Использование объектов управления сервером (SMO) еще хуже, в дополнение к очень медленному.
Я закончил с использованием nmap
скрипта для сканирования всех серверов в локальной сети для порта 1433, следующим образом:
nmap -oX - -T5 -p 1433 -sC [ip range]
Это выводит XML-файл (-oX
) на стандартный вывод (-
) с тайм-аут в 5 секунд (-T5
) порт сканирования 1433 (-p 1433
), запускающий сценарий по умолчанию для этого порта (-sC
), который открывает подключение к серверу и обнаруживает используемую версию SQL Server. nmap
имеет другие параметры вывода тоже, но XML удобно манипулировать в сценарии PowerShell (это использует v3):
$nmap = "nmap"
$range = "192.168.[whatever]"
$servers = [xml] (&$nmap -oX - -T5 -p 1433 -sC $range)
$sqlinstancesraw = $servers.nmaprun.selectnodes("//service[@name='ms-sql-s'][@conf=10]")
$sqlinstances = $sqlinstancesraw |% {
$server = $_.parentnode.parentnode.parentnode
$address = $server.address.addr
$hostname = $server.hostnames.hostname.name
$product = $_.product
$version = $_.version
new-object -type psobject | add-member -passthru -notepropertymembers @{
address = $address
hostname = $hostname
product = $product
version = $version
}
}
$sqlinstances | Export-Csv "servers.csv"
Очевидно, что это не получится для серверов, которые файрволом внутри или что запуск экземпляров на другие порты, чем 1433, но это не обычные сценарии.
Обнаружение SSAS должно быть возможным аналогичным образом, но я не изучил это - в частности, nmap
не имеет стандартного сценария для SSAS, как это делает для SQL Server. Вы можете избежать использования SMO для проверки SSAS, как только вы сузили список вероятных кандидатов на сервер.
Помните, что nmap
может быть замечен администратором как подозреваемый, так как он может использоваться для определения уязвимостей в сетях, к которым у вас нет доступа. Когда вы используете его в своей собственной сети, конечно, нет проблем, но если вы не являетесь сетевым администратором, вы можете сказать им, что вы делаете независимо. Они могут даже восторженно. :-)
Спасибо за это :) Я попробую, как у меня, так как у меня есть «одобрение» от сетевых парней! –