При начале новой работы важно понимать масштаб среды SQL Server, с которой вы будете работать. Это включает знание количества установленных экземпляров SQL Server, их версий и редакций, а также учетных записей служб, связанных с ними. В этой статье мы рассмотрим, как получить эту информацию с помощью PowerShell.
Использование SQL SMO
В PowerShell мы можем использовать библиотеку SQL Server Management Objects (SMO) для получения информации о установленных на компьютере службах SQL Server. Класс ManagedComputer в SMO предоставляет доступ к этой информации.
Вот основные моменты проектирования решения:
- Для службы SQL Server мы будем использовать класс SMO
Serverдля получения значений версии и редакции. - Для службы SSAS мы будем использовать библиотеку Analysis Management Objects (AMO) и класс
Serverдля получения значений версии и редакции. - Для службы SSRS мы будем использовать различные подходы в зависимости от версии. Для SSRS 2005 мы будем использовать версию исполняемого файла SSRS в качестве номера версии SSRS, а для определения значения редакции мы будем использовать класс WMI
MSReportServer_Instance. Для SSRS 2008 и более поздних версий мы можем просто использовать классMSReportServer_Instanceдля получения и версии, и значения редакции. - Для службы SSIS мы будем использовать версию исполняемого файла SSIS в качестве версии SSIS, а затем использовать данные реестра для определения редакции SSIS.
Код PowerShell
Вот пример кода PowerShell, который получает информацию об экземплярах SQL Server:
#Requires -version 3.0
add-type -AssemblyName "Microsoft.SqlServer.SqlWmiManagement, version=11.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91";
add-type -AssemblyName "Microsoft.AnalysisServices, version=11.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91";
$data_table = New-Object "system.data.datatable";
# ... (код продолжается)
После выполнения скрипта вы получите таблицу со следующими столбцами: MachineName, ServerInstance, Type, Version, Edition и ServiceAccount. Таблица будет содержать информацию для каждого экземпляра SQL Server.
Вывод
Получение информации об экземплярах SQL Server является важным для понимания масштаба и сложности вашей рабочей среды. Используя PowerShell и библиотеку SQL Server Management Objects, вы можете легко собрать эту информацию и сохранить ее в файл CSV или таблицу SQL Server. Это позволяет иметь полный список ваших экземпляров SQL Server, их версий, редакций и учетных записей служб.
Имейте в виду, что этот скрипт не применим к службам SQL Server 2000, так как они редко используются в настоящее время.