(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Сравнения списка объектов SQL Server в PowerShell на примере сравнения логинов на двух серверах

Источник: msmvps

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

    #1. Загружаем SMO

    [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo ") / Out-Null

    #2. Подключаемся к серверу 1 (Windows аутентификация):
    #Сервер1-локальный
    #Если нужен другой сервер, введите вместо точки IP-адрес \ имя сервера

    $smoserver1 =new-object("Microsoft.SqlServer.Management.Smo.Server") "."

    #3. Подключаемся к Серверу 2 (аутентификация SQL Server):
    #В следующей строке нужно вписать IP-адрес сервера 2 либо имя сервера

    $smoserver2 =new-object("Microsoft.SqlServer.Management.Smo.Server") "IP - адрес \ имя сервера2"

    #Если аутентификация SQL Server, то значение FALSE, если Windows(по умолчанию) - TRUE

    $smoServer2.ConnectionContext.set_LoginSecure($FALSE)

    #Запрос ввода имени пользователя и пароля

    $LoginCredentials = Get-Credential

    #Устанавливаем свойства ConnectionContext

    $smoServer2.ConnectionContext.set_EncryptConnection($FALSE)

    #В конце поста я расскажу зачем в строке ниже убираем слеш из имени пользователя

    $smoServer2.ConnectionContext.set_Login($LoginCredentials.UserName -replace("\"))
    $smoServer2.ConnectionContext.set_SecurePassword($LoginCredentials.Password)

    #4. Сравниваем логины
    #Командлет выводит логины, которые есть на обоих серверах

    compare-object -referenceobject $($smoserver1.logins) -differenceobject $($smoserver2.logins) -includeequal / where-object {$_.SideIndicator -eq "=="} /select-object InputObject

    #Командлет выводит логины, которые есть на сервере 2, но нет на сервере 1

    compare-object -referenceobject $($smoserver1.logins) -differenceobject $($smoserver2.logins) / where-object {$_.SideIndicator -eq "=>"} /select-object InputObject

    #Командлет выводит логины, которые есть на сервере 1, но нет на сервере 2

    compare-object -referenceobject $($smoserver1.logins) -differenceobject $($smoserver2.logins) / where-object {$_.SideIndicator -eq "<="} /select-object InputObject

    #Можно перенаправить вывод в файл

    compare-object -referenceobject $($smoserver1.logins) -differenceobject $($smoserver2.logins) -includeequal / where-object {$_.SideIndicator -eq "=="} /select-object InputObject > C:\Test.txt

По тому же принципу можно сравнивать списки и других объектов сервера, например заданий.

    #Для того, чтобы сравнить список заданий на двух серверах, можно воспользоваться
    #объектом SMOServer.JobServer.Jobs:

    compare-object -referenceobject $($smoserver1.JobServer.Jobs) -differenceobject $($smoserver2. JobServer.Jobs)

Для получения справки по командлету compare-object, в окне powershell введите:

    Get-help Compare-object -detailed

Иерархия объектов SMO приведена в документации по адресу: http://msdn.microsoft.com/ru-ru/library/ms162209.aspx

Теперь о том, почему мы убираем слеш из введенного имени пользователя (...-replace("\")...).

Командлет get-credential ждет ввода в формате Домен\Логин. В нашем примере мы используем его не для входа в домен, а для подключения к SQL Server и домен не вводим, поэтому, несмотря на то, что в окне запроса учетных данных я вводила логин "Inaumova", свойству UserName присвоилось значение "\Inaumova". Это показано на рисунках ниже. Поэтому слеш нужно удалить.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 15.12.2009 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft 365 Business Standard (corporate)
Microsoft Office для дома и учебы 2019 (лицензия ESD)
Microsoft Office 365 Бизнес. Подписка на 1 рабочее место на 1 год
Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год.
Microsoft 365 Apps for business (corporate)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
CASE-технологии
Программирование на Microsoft Access
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Новости мира 3D-ускорителей
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100