Командлет 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. Подключение к именованным экземплярам и запуск скрипта
Эта команда подключается к именованным экземпляру обработчика База данных 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. Вызов скрипта и передача переменных значений из строки
Эта команда использует массив символьных строк в качестве входных данных для параметра Variable .
Массив определяет несколько переменных SQLCMD.
Знаки $ в инструкции SELECT, которые идентифицируют переменные SQLCMD, экранируются с помощью символа обратной галочки (').
Пример 4. Вызов скрипта и передача переменных из ядра СУБД SQL
Эта команда использует Set-Location для перехода по пути поставщика SQL Server Windows PowerShell для экземпляра обработчика База данных SQL.
Затем он вызывает Get-Item , чтобы получить объект SQL Management Object Server для использования в качестве параметра ServerInstanceобъекта Invoke-Sqlcmd.
Пример 5. Выполнение запроса и отображение подробных выходных данных
Эта команда использует параметр 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.