Я не знаю точную терминологию Windows / SQL-сервера, поэтому я мог бы сказать, что это немного отличается от реальных технических терминов.Пожалуйста, прости.
Я подключен к хосту с использованием учетных данных Windows, которые, как я знаю, являются SQL-сервером.Есть ли способ узнать, является ли этот хост частью кластера или просто автономным сервером, используя power shell / bash?
Например, есть два узла NODE_1 и NODE_2, которые образуют кластер и имеют 4 хоста с именем host_1, host_2, host_3, host_4.Все эти хосты являются SQL-серверами.Когда я подключаюсь к любому из этих хостов, используя учетные данные Windows, и запускаю имя хоста на bash, я получаю либо (NODE_1 & NODE_2).
Я пробовал следовать power-shell (на host_1 -> NODE_1), но он всегда говорит хостне кластеризован:
$server = hostname; # Tried commenting this line. $server still gets 'NODE_1'
$s=Get-WMIObject -query "select * from Win32_ComputerSystem" -ComputerName $server | select name
if ($s.Name -ne $server) {
#if ($s -ne $server) {
Write-Output "$server is clustered"
} else {
Write-Output "$server is not clustered"
}
Я думаю, что это потому, что я назначаю имя узла 'NODE_1' для $ server вместо 'host_1'.Но я не могу найти способ получить host_1 с помощью power-shell.
Что я пробовал: Замена $ server на 'host_1' вручную дает правильный результат.Но так как этот скрипт будет частью более крупной программы, которая будет работать на сотнях SQL-серверов с разными версиями, я не могу вручную указать фактическое имя хоста в виде строки.Поэтому я пытаюсь найти способ сделать это с помощью power-shell.
Я также попробовал эти опции, чтобы получить 'host_1', но все они возвращают 'NODE_1'.
PS SQLSERVER:\> $Env:Computername
NODE_1
PS SQLSERVER:\> hostname.exe
NODE_1
PS SQLSERVER:\> [System.Net.Dns]::GetHostName()
NODE_1
PS SQLSERVER:\> $env:COMPUTERNAME
NODE_1
Майбыть host_1, host_2, host_3, host_4 называются слушателями в терминах SQL?
Вопрос: Есть ли способ присвоить хосту host_1 значение $ server вместо 'NODE_1', используя power-shell?
Если после подключения с использованием учетных данных Windows / SQL есть другой способ сделать это, я бы обязательно попробовал.
Единственное ограничение, которое у меня есть, это то, что я не знаю, является ли хост кластеризованным (и, следовательно, имеет несколько экземпляров БД) или автономным.Таким образом, использование учетных данных SQL может не получиться, если я попытаюсь установить соединение с экземпляром, но в строке подключения отсутствует «$ server = host-name \ instance»