Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Установка 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