2014-10-14 3 views
0

У меня есть небольшая проблема. Я хотел бы открыть каждую «дикую» установку SQL Server в моей компании, но я не знаю, как это сделать.Обнаружение установки SQL Server в сети - как их обнаружить?

Я поиск в Интернете и найти эту команду PowerShell, чтобы выполнить, чтобы найти все установки SQL Server в локальной сети:

[System.Data.Sql.SqlDataSourceEnumerator]::Instance.GetDataSources()

Когда я выполняю это на узле кластера, он возвращает экземпляры SQL Server установленных на этом кластере, но не те, которые установлены на другом кластере в той же сети (оба кластера находятся в 10.4.4.0/24). Кроме того, результаты не возвращают установку SSAS.

Еще одна небольшая проблема заключается в том, что результат «версии» неверен. Она возвращает значение вместо 11.0.3393

Мои вопросы 11.0.2100.60 являются:

  1. Есть еще один способ обнаружить все установки SQL Server в сети? Запрос AD?
  2. Как я могу быть уверен, что вернувшаяся информация верна?

Спасибо за вашу помощь

ответ

0

У меня была такая же проблема. Я начал использовать 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 может быть замечен администратором как подозреваемый, так как он может использоваться для определения уязвимостей в сетях, к которым у вас нет доступа. Когда вы используете его в своей собственной сети, конечно, нет проблем, но если вы не являетесь сетевым администратором, вы можете сказать им, что вы делаете независимо. Они могут даже восторженно. :-)

+0

Спасибо за это :) Я попробую, как у меня, так как у меня есть «одобрение» от сетевых парней! –

Смежные вопросы