Среда PowerShell стала важным инструментом в арсенале специалистов по SQL Server. И если первоначальные варианты продукта не обеспечивали возможность использования различных средств управления SQL Server, Microsoft быстро исправляет положение. Ныне почти все функции управления SQL Server поддерживаются средствами PowerShell.

Технология PowerShell дает возможность перемещаться по схемам и иерархиям управления баз данных SQL Server, а также выполнять запросы, формировать группы репликации и группы доступности и, наконец, запускать резервные копии и процедуры восстановления. Оболочка PowerShell может стать превосходным средством управления группой серверов и удаленными системами.

Новый модуль PowerShell

Несомненно, самая значительная модификация PowerShell в версии SQL Server 2016 — это новый модуль PowerShell, который разработчики Microsoft включили в состав среды SQL Server Management Studio (SSMS) 2016. В модуле SQL Server PowerShell, поставляемом с SSMS, вместо утилиты SQLPS используется служба SqlServer. В версии SQL Server 2016 специалисты Microsoft реализовали новую EXE-оболочку, которую SSMS применяет для формирования среды SQL PowerShell. Новый модуль устанавливается в каталог %Program Files\WindowsPowerShell\Modules\SqlServer, а это значит, что нет необходимости вносить какие-либо изменения в путь $env: PSModulePath. При использовании нового модуля все сценарии PowerShell, содержащие команду Import-Module из SQLPS, должны быть преобразованы в команду Import-Module из SqlServer, с тем чтобы в них могли применяться новые функции. Сохраняется и прежний модуль sqlps.

Усовершенствованная команда Invoke-SqlCmd

Команда Invoke-SqlCmd, применяемая для выполнения запросов T-SQL, теперь может принимать параметр OutputAs. Новый параметр дает возможность среди типов возвращаемых объектов указывать такие объекты, как DataRows, DataTables и DataSet.

Новые команды

Как и следовало ожидать, в новом модуле PowerShell реализован ряд новых команд. Команды SQL PowerShell взаимодействуют со всеми поддерживаемыми версиями SQL Server, при условии, что соответствующая версия SQL Server оснащена тем или иным набором средств. Ниже приведен список новых команд SQL Server 2016 PowerShell.

  • Add-SqlAzureAuthenticationContext — осуществляет проверку подлинности в Azure и получает аутентификационный маркер.
  • Add-SqlColumnEncryptionKeyValue — добавляет новое зашифрованное значение для существующего объекта базы данных «ключ шифрования столбца».
  • Complete-SqlColumnMasterKeyRotation — завершает ротацию главного ключа столбца.
  • Get-SqlColumnEncryptionKey — возвращает все объекты «ключ шифрования столбца», определенные в базе данных, или один объект «ключ шифрования столбца» с указанным именем.
  • Get-SqlColumnMasterKey — возвращает объекты «главный ключ столбца», определенные в базе данных, или один объект «главный ключ столбца» с указанным именем.
  • Invoke-SqlColumnMasterKeyRotation — инициирует ротацию главного ключа столбца.
  • New-SqlAzureKeyVaultColumnMasterKeySettings — создает объект SqlColumnMasterKeySettings с описанием асимметричного ключа, который хранится в Azure Key Vault.
  • New-SqlCertificateStoreColumnMasterKeySettings — создает объект SqlColumnMasterKeySettings со ссылкой на определенный сертификат.
  • New-SqlCngColumnMasterKeySettings — создает объект SqlColumnMasterKeySettings с описанием асимметричного ключа, который содержится в хранилище ключей, совместимом с API CNG (Cryptography Next Generation API).
  • New-SqlColumnEncryptionKey — создает в базе данных новый объект «ключ шифрования столбца».
  • New-SqlColumnEncryptionKeyEncryptedValue — генерирует зашифрованное значение ключа шифрования столбца.
  • New-SqlColumnEncryptionSettings — создает новый объект SqlColumnEncryptionSettings, который инкапсулирует сведения о шифровании одного столбца, включая ключ шифрования контента CEK и тип шифрования.
  • New-SqlColumnMasterKey — создает в базе данных новый объект «главный ключ столбца».
  • New-SqlCspColumnMasterKeySettings — создает объект SqlColumnMasterKeySettings с описанием асимметричного ключа, находящегося в хранилище ключей с поставщиком Cryptography Service Provider (CSP), который совместим с интерфейсом Cryptography API (CAPI).
  • Remove-SqlColumnEncryptionKey — удаляет из базы данных объект «ключ шифрования столбца».
  • Remove-SqlColumnEncryptionKeyValue — удаляет зашифрованное значение из существующего объекта базы данных «ключ шифрования столбца».
  • Remove-SqlColumnMasterKey — удаляет из базы данных объект «главный ключ столбца».
  • Set-SqlColumnEncryption — зашифровывает, расшифровывает или перешифровывает указанные столбцы базы данных.
  • Get-SqlAgent — возвращает объект SQL Agent (JobServer), представленный в целевом экземпляре SQL Server.
  • Get-SqlAgentJob — возвращает задание агента SQL для каждого задания, представленного в целевом экземпляре агента SQL.
  • Get-SqlAgentJobHistory — возвращает историю заданий (JobHistory), представленную в целевом экземпляре агента SQL.
  • Get-SqlAgentJobSchedule — возвращает объект JobSchedule для каждого графика, представленного в целевом экземпляре SQL Agent Job.
  • Get-SqlAgentJobStep — возвращает объект JobStep для каждого шага, представленного в целевом экземпляре SQL Agent Job.
  • Get-SqlAgentSchedule — возвращает объект SQL JobSchedule для каждого графика, представленного в целевом экземпляре агента SQL.
  • Get-SqlErrorLog — считывает содержимое журналов SQL Server Logs.
  • Set-SqlErrorLog — устанавливает или переустанавливает максимальное число журнальных файлов ошибок, перед тем как они направляются на переработку.