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


Invoke-Sqlcmd

Запускает скрипт, содержащий инструкции, поддерживаемые служебной программой SQL SERVER SQLCMD.

Синтаксис

Invoke-Sqlcmd
      [-ServerInstance <PSObject>]
      [-Database <String>]
      [-EncryptConnection]
      [-Username <String>]
      [-Password <String>]
      [[-Query] <String>]
      [-QueryTimeout <Int32>]
      [-ConnectionTimeout <Int32>]
      [-ErrorLevel <Int32>]
      [-SeverityLevel <Int32>]
      [-MaxCharLength <Int32>]
      [-MaxBinaryLength <Int32>]
      [-AbortOnError]
      [-DedicatedAdministratorConnection]
      [-DisableVariables]
      [-DisableCommands]
      [-HostName <String>]
      [-NewPassword <String>]
      [-Variable <String[]>]
      [-InputFile <String>]
      [-OutputSqlErrors <Boolean>]
      [-IncludeSqlUserErrors]
      [-SuppressProviderContextWarning]
      [-IgnoreProviderContext]
      [<CommonParameters>]

Описание

Командлет Invoke-Sqlcmd выполняет скрипт, содержащий языки и команды, поддерживаемые служебной программой SQL Server SQLCMD. Поддерживаются команды Transact-SQL и подмножество синтаксиса XQuery, поддерживаемого ядром СУБД. Этот командлет также принимает многие команды, которые изначально поддерживаются SQLCMD, например GO и QUIT. Этот командлет также принимает переменные скрипта SQLCMD, такие как SQLCMDUSER. По умолчанию этот командлет не устанавливает переменные скрипта SQLCMD.

Этот командлет не поддерживает использование команд, которые в основном связаны с интерактивным редактированием скриптов. К неподдерживаемым командам относятся :!!, :connect, :error, :out, :ed, :list, :listvar, :reset, :perftrace и :serverlist.

При выполнении этого командлета первый результирующий набор, возвращаемый скриптом, отображается в виде форматируемой таблицы. Если последующие результирующие наборы содержат списки столбцов, отличные от первого, эти результирующие наборы не отображаются. Если последующие результирующие наборы после первого набора имеют одинаковый список столбцов, их строки добавляются в форматированную таблицу, содержащую строки, возвращенные первым результирующим набором.

Вы можете отобразить SQL Server выходные данные сообщения, например выходные данные, полученные в результате инструкции SQL PRINT, указав параметр Verbose.

Примеры

Пример 1. Подключение к именованным экземплярам и запуск скрипта

PS C:\> Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance "MyComputer\MainInstance"
 TimeOfQuery
 -----------
 5/13/2010 8:49:43 PM

Эта команда подключается к именованным экземпляру обработчика База данных SQL на компьютере и запускает базовый скрипт Transact-SQL.

Пример 2. Вызов команд в файле скрипта и сохранение выходных данных в текстовом файле

PS C:\> Invoke-Sqlcmd -InputFile "C:\ScriptFolder\TestSqlCmd.sql" | Out-File -FilePath "C:\ScriptFolder\TestSqlCmd.rpt"
Output sent to TestSqlCmd.rpt.

Эта команда считывает файл, содержащий инструкции Transact-SQL и команды SQLCMD, запускает файл и записывает выходные данные в другой файл. Выходной файл может содержать проприетарную информацию, поэтому необходимо защитить выходные файлы с соответствующими разрешениями NTFS.

Пример 3. Вызов скрипта и передача переменных значений из строки

PS C:\> $StringArray = "MYVAR1='String1'", "MYVAR2='String2'"
PS C:\> Invoke-Sqlcmd -Query "SELECT `$(MYVAR1) AS Var1, `$(MYVAR2) AS Var2;" -Variable $StringArray
Var1     Var2
----     ----
String1  String2

Эта команда использует массив символьных строк в качестве входных данных для параметра Variable . Массив определяет несколько переменных SQLCMD. Знаки $ в инструкции SELECT, которые идентифицируют переменные SQLCMD, экранируются с помощью символа обратной галочки (').

Пример 4. Вызов скрипта и передача переменных из ядра СУБД SQL

PS C:\>Set-Location "SQLSERVER:\SQL\MyComputer\MainInstance"
PS C:\>Invoke-Sqlcmd -Query "SELECT SERVERPROPERTY('MachineName') AS ComputerName;" -ServerInstance (Get-Item .)
 ComputerName
 ------------
 MyComputer

Эта команда использует Set-Location для перехода по пути поставщика SQL Server Windows PowerShell для экземпляра обработчика База данных SQL. Затем он вызывает Get-Item , чтобы получить объект SQL Management Object Server для использования в качестве параметра ServerInstanceобъекта Invoke-Sqlcmd.

Пример 5. Выполнение запроса и отображение подробных выходных данных

PS C:\> Invoke-Sqlcmd -Query "PRINT N'abc'" -Verbose
VERBOSE: abc

Эта команда использует параметр Windows PowerShell Verbose для возврата выходных данных сообщения команды SQL PRINT.

Пример 6. Вызов команды с помощью позиционной строки в качестве входных данных

PS C:\> Invoke-Sqlcmd "SELECT DB_NAME() AS DatabaseName;"
 WARNING: Using provider context. Server = MyComputer, Database = AdventureWorks2014. 

 DatabaseName
 ------------
 AdventureWorks2014

Эта команда использует позициональную строку для ввода входных данных в параметр Query . В нем также показано, как Invoke-Sqlcmd использует текущий путь, чтобы задать для контекста базы данных значение AdventureWorks2014.

Параметры

-AbortOnError

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-ConnectionTimeout

Тип:Int32
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Database

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-DedicatedAdministratorConnection

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-DisableCommands

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-DisableVariables

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-EncryptConnection

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-ErrorLevel

Тип:Int32
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-HostName

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-IgnoreProviderContext

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-IncludeSqlUserErrors

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-InputFile

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-MaxBinaryLength

Тип:Int32
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-MaxCharLength

Тип:Int32
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-NewPassword

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-OutputSqlErrors

Тип:Boolean
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Password

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Query

Тип:String
Position:1
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-QueryTimeout

Тип:Int32
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-ServerInstance

Тип:PSObject
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-SeverityLevel

Тип:Int32
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-SuppressProviderContextWarning

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Username

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Variable

Тип:String[]
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

Входные данные

PSObject

Выходные данные

Отформатированная таблица