SQL Server PowerShell

Применимо к:SQL ServerAzure SQL DatabaseAzure Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Установка компонентов SQL Server PowerShell

Существует два модуля SQL Server PowerShell — SqlServer и SQLPS.

Самым актуальным модулем PowerShell является модуль SqlServer.

Модуль SQLPS входит в состав установки SQL Server (для обеспечения обратной совместимости), но больше не обновляется.

Модуль SqlServer содержит обновленные версии командлетов в SQLPS и новые командлеты для поддержки последних функций SQL.

Предыдущие версии модуля SqlServerвходили в состав среды SQL Server Management Studio (SSMS), но только с SSMS версий 16.x.

Для работы PowerShell с SSMS версии 17.0 и более поздних установите модуль SqlServer из коллекции PowerShell.

Вы также можете использовать PowerShell с Azure Data Studio.

Почему модуль SQLPS изменился на SqlServer?

Для поставки обновлений SQL PowerShell было необходимо изменить удостоверение модуля SQL PowerShell, а также программу-оболочку, известную как SQLPS.exe. В связи с эти изменением теперь существует два модуля SQL PowerShell — модуль SqlServer и модуль SQLPS.

Обновите скрипты PowerShell, если вы импортируете модуль SQLPS.

Если у вас есть скрипты PowerShell, которые выполняют команду Import-Module -Name SQLPS, и вы хотите использовать преимущества новых функциональных возможностей поставщика и новых командлетов, необходимо изменить их на Import-Module -Name SqlServer. Новый модуль устанавливается в папку %ProgramFiles%\WindowsPowerShell\Modules\SqlServer. Поэтому не нужно обновлять переменную $env:PSModulePath. При наличии скриптов, использующих версию модуля с именем SqlServer, созданную сторонними производителями или сообществом, используйте параметр Prefix, чтобы имена не конфликтовали.

Рекомендуется запустить скрипт с помощью import-Module SQLServer , чтобы избежать параллельных проблем, если модуль SQLPS установлен на том же компьютере.

Этот раздел относится к скриптам, выполняемым из PowerShell, а не агента SQL. Новый модуль можно использовать с шагами задания агента SQL с помощью #NOSQLPS.

Компоненты SQL Server PowerShell

Компоненты модуля SqlServer:

  • Поставщики PowerShell — предоставляет простой механизм навигации, аналогичный путям в файловой системе. Можно построить пути, аналогичные путям файловой системы, где диску соответствует управляющая объектная модель SQL Server, а узлы основаны на классах объектной модели. Затем можно использовать привычные команды, такие как cd (псевдоним для Set-Location) и dir (псевдоним для Get-ChildItem), чтобы перемещаться по путям, аналогично переходу по структуре папок в окне командной строки. Для выполнения действий на узлах пути можно использовать другие команды, например ren (псевдоним для Rename-Item) или del (псевдоним для Remove-Item).

  • Набор командлетов, которые поддерживают такие действия, как запуск скрипта sqlcmd, содержащего инструкции Transact-SQL или XQuery.

  • Поставщик AS и командлеты, которые ранее устанавливались отдельно.

Версии SQL Server

Командлеты SQL PowerShell можно использовать для управления экземплярами базы данных SQL Azure, Azure Synapse Analytics и во всех поддерживаемых продуктах SQL Server.

Идентификаторы SQL Server, содержащие символы, не поддерживаемые в путях Windows PowerShell

Командлеты Encode-Sqlname (псевдоним для ConvertTo-EncodedSqlName) и Decode-Sqlname (псевдоним для ConvertFrom-EncodedSqlName) помогают указать идентификаторы SQL Server, содержащие символы, не поддерживаемые в путях PowerShell. Дополнительные сведения см. в статье SQL Server Identifiers in PowerShell.

Используйте командлет Convert-UrnToPath, чтобы преобразовать уникальное имя ресурса для объекта ядра СУБД в путь для поставщика SQL Server PowerShell. Дополнительные сведения см. в статье Convert URNs to SQL Server Provider Paths.

Выражения запросов и унифицированные имена ресурсов

Выражения запроса — это строки, которые используют синтаксис, напоминающий XPath для указания набора условий, перечисляющих один или несколько объектов в иерархии объектной модели. Универсальное имя ресурса (URN) — это конкретный тип строки выражения запроса, который уникально определяет один объект. Дополнительные сведения см. в статье Query Expressions and Uniform Resource Names.

Агент SQL Server

Модуль, используемый агентом SQL Server, не изменился. Таким образом, задания агента SQL Server, которые содержат шаги задания типа PowerShell, используют модуль SQLPS. Дополнительные сведения: Запуск PowerShell с помощью агента SQL Server. Однако начиная с версии SQL Server 2019 вы можете отключить SQLPS. Для этого в первой строке шага задания типа PowerShell можно добавить #NOSQLPS, что останавливает автоматическую загрузку модуля SQLPS агента SQL. После этого задание агента SQL Server запустит установленную на компьютере версию PowerShell, и вы можете использовать любой другой модуль PowerShell.

Устранение неполадок SQLPS

Если шаги задания агента (подсистема PowerShell) завершаются со следующей ошибкой, этот раздел поможет найти и устранить проблему.

Для шага задания возникла ошибка в строке 1 в скрипте PowerShell. Соответствующая строка — import-module SQLPS. Исправьте скрипт и запланируйте задание заново. PowerShell возвращает сведения об ошибке: The specified module 'SQLPS' was not loaded because no valid module file was found in any module directory (Указанный модуль SQLPS не был загружен, так как в каталоге модуля не найден допустимый файл модуля).

Модуль SQLPS должен быть доступен в переменной среды PSModulePath. При удалении SSMS 16.x можно удалить SQLPS из PSModulePath. Чтобы проверить текущие значения, хранящиеся в PSModulePath, выполните следующую команду PowerShell:

 $env:PSModulePath -split ";"

Если задан путь, вы увидите запись, аналогичную C:\Program Files (x86)\Microsoft SQL Server\130\Tools\PowerShell\Modules. Если путь не задан, найдите папку SQLPS на сервере и добавьте ее в значение переменной среды с помощью PowerShell или в расширенных>переменных среды свойств системы>.

Модуль SQLServer с агентом SQL

Если вы хотите использовать модуль SqlServer в шаге задания агента SQL, можно поместить этот код в первые две строки скрипта.

#NOSQLPS
Import-Module -Name SqlServer

Справочник по командлетам

Дальнейшие действия