Поделиться через


Что такое SQL Server PowerShell?

Установка SQL Server PowerShell

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

Модуль SqlServer — это текущий модуль PowerShell для использования.

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

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

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

Рекомендуется запустить скрипт с 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, содержащие символы, которые не поддерживаются в путях PowerShell

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

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

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

Выражения запросов — это строки, которые используют синтаксис, аналогичный XPath, чтобы указать набор критериев, перечисляющих один или несколько объектов в иерархии объектной модели. Универсальное имя ресурса (URN) — это конкретный тип строки выражения запроса, которая однозначно идентифицирует один объект. Дополнительные сведения см. в разделе "Выражения запросов" и "Универсальные имена ресурсов".

Агент SQL Server

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

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

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

Для шага задания возникла ошибка в строке 1 в скрипте PowerShell. Соответствующая строка — import-module SQLPS. Исправьте скрипт и запланируйте задание заново. Сведения об ошибке, возвращаемые PowerShell: "Указанный модуль "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

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