Published on

March 16, 2025

Как получить информацию о экземплярах SQL Server с помощью PowerShell

При начале новой работы важно понимать масштаб среды 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, так как они редко используются в настоящее время.

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.