Использование командлетов SQL Server

Командлеты Windows PowerShell представляют собой команды из одной функции, в именах которых, как правило, используется соглашение об именах «глагол-существительное», например Get-Help или Set-MachineName. Поставщик SQL Server для Windows PowerShell предоставляет командлеты, относящиеся к SQL Server.

Командлеты SQL Server

В SQL Server 2008 реализовано небольшое количество командлетов SQL Server.

В среде Windows PowerShell справочные сведения о каждом командлете предоставляются командлетом Get-Help. Командлет Get-Help возвращает такую информацию, как синтаксис, определения параметров, типы входных и выходных данных, а также описание действий, выполняемых командлетом.

В следующих примерах возвращается основная справка, полная справка, синтаксис, параметры и примеры, относящихся к командлету SQL ServerEncode-SqlName:

get-help "Encode-SqlName"
get-help "Encode-SqlName" -Full
get-help "Encode-SqlName" -Syntax
get-help "Encode-SqlName" -Parameter *
get-help "Encode-SqlName" -Examples

Invoke-Sqlcmd

Командлет Invoke-Sqlcmd поддерживает выполнение скриптов sqlcmd или команд, которые содержат инструкции Transact-SQL или XQuery. Он может принимать входные данные sqlcmd в виде символьного строкового входного параметра или имени открываемого файла скрипта. Дополнительные сведения см. в разделе Использование командлета Invoke-Sqlcmd.

Invoke-PolicyEvaluation

Командлет Invoke-PolicyEvaluation сообщает, соответствует ли целевой набор объектов SQL Server условиям, определенным в схемах управления на основе политик. Кроме того, этот командлет можно использовать для повторного задания любых настраиваемых параметров в целевых объектах, которые не соответствуют условиям политики. Дополнительные сведения см. в разделе Использование командлета Invoke-PolicyEvaluation.

Кодировка и декодирование идентификаторов SQL Server

Идентификаторы представляют собой имена объектов SQL Server. В идентификаторах SQL Server поддерживается более широкий диапазон символов, чем в языке Windows PowerShell. Заключенные в скобки или заключенные в кавычки идентификаторы компонента Database Engine имеют очень мало ограничений на используемые в именах символы. Некоторые символы, используемые в заключенных в скобки или кавычки идентификаторах, нельзя экранировать с помощью escape-символа Windows PowerShell (`), поэтому они могут стать причиной проблем при использовании поставщика SQL Server.

Командлет Encode-SqlName принимает идентификатор SQL Server в качестве входного параметра и переформатирует все символы, не поддерживаемые языком Windows PowerShell, заменяя их представлением, допустимым в среде Windows PowerShell. Командлет Decode-SqlName принимает в качестве входных данных закодированный идентификатор SQL Server и возвращает исходный идентификатор. Например:

  • Вызов командлета Encode-SqlName с параметром "Table:Test" возвращает строку "Table%3ATest".

  • Вызов командлета Decode-SqlName с параметром "Table%3ATest" возвращает "Table:Test".

Дополнительные сведения см. в разделе Использование идентификаторов SQL Server в PowerShell.

Преобразование имен URN в пути

Модель объектов SMO формирует URN-имена для своих объектов. Каждое имя URN содержит ту же информацию, что и путь к объекту, но представленную в другой форме. Например, ниже показан путь к таблице:

SQLSERVER:\SQL\MyComputer\DEFAULT\Databases\AdventureWorks2008R2\Tables\Person.Address

А ниже приведено имя URN, указывающее на тот же объект:

Server[@Name='MyComputer']\Database[@Name='AdventureWorks2008R2']\Table[@Name='Address' and @Schema='Person']

Командлет Convert-UrnToPath преобразует строки URN объектов SMO в пути Windows PowerShell. Если имена узлов содержат символы национального алфавита, которые не поддерживаются в именах путей Windows PowerShell, командлет Convert-UrnToPath кодирует их, преобразуя в шестнадцатеричное представление. Например, строка «My:Table» возвращается как «My%3ATable».

В среде Windows PowerShell запустите команду Get-Help Convert-UrnToPath -Examples, чтобы ознакомиться с примерами использования этого командлета.

Частичные имена параметров

Полное имя параметра командлета указывать не обязательно. Необходимо только указать достаточную часть имени, чтобы уникально отделить его от других параметров, поддерживаемых данным командлетом. В следующих примерах показано три способа задания параметра Invoke-Sqlcmd -QueryTimeout:

Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryTimeout 3
Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryTime 3
Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryT 3