Published on

May 24, 2005

Как перечислить зарегистрированные SQL-серверы в Enterprise Manager

В качестве администратора баз данных SQL Server вам часто могут попросить предоставить список разработческих SQL-серверов, продукционных SQL-серверов или других типов SQL-серверов. Для выполнения этого запроса вам необходимо иметь список серверов под рукой. К счастью, большинство серверов зарегистрированы в Enterprise Manager, что позволяет получить эту информацию.

В этой статье мы рассмотрим, как воспользоваться Windows Scripting Host и VBScript для чтения реестра и перечисления всех SQL-серверов, зарегистрированных в Enterprise Manager.

Предварительные требования

  • На машине, где мы выполняем скрипт, установлен SQL Server 2000 Client, и большинство серверов уже зарегистрированы в Enterprise Manager.
  • VBScript и WSH должны иметь возможность выполняться на клиентской машине.

Шаг 1: Создание папки

Создайте папку с именем “Scan” на диске C (C:\Scan).

Шаг 2: Загрузка и сохранение VB Script

Загрузите предоставленный ниже VB Script и сохраните его как “C:\Scan\scanEM.vbs”.

'Сохраните этот файл в c:\scan\scanEM.vbs
'Выполните его в командной строке
'Создано: MAK
'Дата: 18 марта 2005 года

Set objArgs = WScript.Arguments
GroupName = objArgs(0)
mySkey = "SOFTWARE\Microsoft\Microsoft SQL Server\80\Tools\SQLEW\Registered Servers X" & "\" & GroupName

Const HKCR = &H80000000 'HKEY_CLASSES_ROOT
Const HKCU = &H80000001 'HKEY_CURRENT_USER
Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE
Const HKU = &H80000003 'HKEY_USERS
Const HKCC = &H80000005 'HKEY_CURRENT_CONFIG

Const REG_SZ = 1
Const REG_EXPAND_SZ = 2
Const REG_BINARY = 3
Const REG_DWORD = 4
Const REG_MULTI_SZ = 7

Const KEY_QUERY_VALUE = &H1
Const KEY_SET_VALUE = &H2
Const KEY_CREATE_SUB_KEY = &H4
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10
Const KEY_CREATE_LINK = &H20
Const DELETE = &H10000
Const READ_CONTROL = &H20000
Const WRITE_DAC = &H40000
Const WRITE_OWNER = &H80000

Set WshShell = WScript.CreateObject("WScript.Shell")
Set oReg = GetObject("winmgmts:!root/default:StdRegProv")

Function EnumKey(Key, SubKey)
    Dim Ret()
    oReg.EnumKey Key, SubKey, sKeys
    ReDim Ret(UBound(sKeys))
    For Count = 0 To UBound(sKeys)
        Ret(Count) = sKeys(Count)
    Next
    EnumKey = Join(Ret, vbCrLf)
End Function

Function EnumValues(Key, SubKey)
    Dim Ret()
    oReg.EnumValues Key, SubKey, sKeys, iKeyType
    ReDim Ret(UBound(sKeys))
    For Count = 0 To UBound(sKeys)
        Select Case iKeyType(Count)
            Case REG_SZ
                oReg.GetStringValue Key, SubKey, sKeys(Count), sValue
                Ret(Count) = sKeys(Count) & "," & "REG_SZ" & "," & sValue
            Case REG_EXPAND_SZ
                oReg.GetExpandedStringValue Key, SubKey, sKeys(Count), sValue
                Ret(Count) = sKeys(Count) & "," & "REG_EXPAND_SZ" & "," & sValue
            Case REG_BINARY
                oReg.GetBinaryValue Key, SubKey, sKeys(Count), aValue
                Ret(Count) = sKeys(Count)
            Case REG_DWORD
                oReg.GetDWORDValue Key, SubKey, sKeys(Count), lValue
                Ret(Count) = sKeys(Count) & "," & "REG_DWORD" & "," & lValue
            Case REG_MULTI_SZ
                oReg.GetMultiStringValue Key, SubKey, sKeys(Count), sValue
                Ret(Count) = sKeys(Count) & "," & "REG_MULTI_SZ" & "," & Join(sValue, "")
        End Select
    Next
    EnumValues = Join(Ret, vbCrLf)
End Function

После сохранения скрипта вы можете выполнить его в командной строке.

Следуя этим шагам, вы сможете получить список всех SQL-серверов, зарегистрированных в Enterprise Manager. Эта информация может быть полезна для различных задач, таких как мониторинг свободного места на диске или инвентаризация аппаратного обеспечения и информации об ОС на всех SQL-серверах.

Спасибо за прочтение этой статьи. Мы надеемся, что она поможет вам в ваших задачах по администрированию SQL Server.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.