Invoke-Sqlcmd
Запускает скрипт, содержащий инструкции, поддерживаемые служебной программой SQL Server SQLCMD.
Синтаксис
Invoke-Sqlcmd
[-ServerInstance <PSObject>]
[-Database <String>]
[-Encrypt <String>]
[-EncryptConnection]
[-Username <String>]
[-AccessToken <String>]
[-Password <String>]
[-Credential <PSCredential>]
[[-Query] <String>]
[-QueryTimeout <Int32>]
[-ConnectionTimeout <Int32>]
[-ErrorLevel <Int32>]
[-SeverityLevel <Int32>]
[-MaxCharLength <Int32>]
[-MaxBinaryLength <Int32>]
[-AbortOnError]
[-DedicatedAdministratorConnection]
[-DisableVariables]
[-DisableCommands]
[-HostName <String>]
[-ApplicationName <String>]
[-ApplicationIntent <ApplicationIntent>]
[-MultiSubnetFailover]
[-FailoverPartner <String>]
[-HostNameInCertificate <String>]
[-TrustServerCertificate]
[-NewPassword <String>]
[-Variable <PSObject>]
[-InputFile <String>]
[-OutputSqlErrors <Boolean>]
[-IncludeSqlUserErrors]
[-SuppressProviderContextWarning]
[-IgnoreProviderContext]
[-OutputAs <OutputType>]
[-StatisticsVariable <String>]
[-ProgressAction <ActionPreference>]
[<CommonParameters>]
Invoke-Sqlcmd
[-AccessToken <String>]
[[-Query] <String>]
[-QueryTimeout <Int32>]
[-ErrorLevel <Int32>]
[-SeverityLevel <Int32>]
[-MaxCharLength <Int32>]
[-MaxBinaryLength <Int32>]
[-AbortOnError]
[-DisableVariables]
[-DisableCommands]
[-Variable <PSObject>]
[-InputFile <String>]
[-OutputSqlErrors <Boolean>]
[-IncludeSqlUserErrors]
[-OutputAs <OutputType>]
-ConnectionString <String>
[-KeyVaultAccessToken <String>]
[-ManagedHsmAccessToken <String>]
[-StatisticsVariable <String>]
[-ProgressAction <ActionPreference>]
[<CommonParameters>]
Описание
Командлет Invoke-Sqlcmd запускает скрипт, содержащий языки и команды, поддерживаемые служебной программой SQL Server SQLCMD.
Поддерживаемые команды — это Transact-SQL инструкции и подмножество синтаксиса XQuery, поддерживаемого ядром СУБД.
Этот командлет также принимает многие команды, поддерживаемые в собственном коде SQLCMD, такие как GO и QUIT.
Этот командлет также принимает переменные скриптов SQLCMD, такие как SQLCMDUSER. По умолчанию этот командлет не устанавливает переменные скриптов SQLCMD.
Этот командлет не поддерживает использование команд, которые в первую очередь связаны с интерактивным редактированием скриптов.
Команды не поддерживаются: :!, :connect, :error, :out, :ed, :list, :listvar, :reset, :p erftrace и :serverlist.
При выполнении этого командлета первый результирующий набор, возвращаемый скриптом, отображается как отформатированная таблица.
Если последующие результирующие наборы содержат разные списки столбцов, то эти результирующие наборы не отображаются.
Если последующие результирующие наборы после первого набора имеют тот же список столбцов, их строки добавляются в форматированную таблицу, содержащую строки, возвращаемые первым результирующий набор.
Вы можете отобразить выходные данные сообщения SQL Server, такие как результат инструкции SQL PRINT, указав подробный параметр.
Примеры
Пример 1. Подключение к именованным экземплярам и запуск скрипта
Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery" -ServerInstance "MyComputer\MainInstance"
TimeOfQuery
-----------
9/21/2017 2:48:24 PM
Эта команда подключается к именованным экземпляру ядра СУБД SQL на компьютере и выполняет базовый скрипт Transact-SQL.
Пример 2. Вызов команд в файле скрипта и сохранение выходных данных в текстовом файле
Invoke-Sqlcmd -InputFile "C:\ScriptFolder\TestSqlCmd.sql" | Out-File -FilePath "C:\ScriptFolder\TestSqlCmd.rpt"
Output sent to TestSqlCmd.rpt.
Эта команда считывает файл, содержащий инструкции Transact-SQL и команды SQLCMD, запускает файл и записывает выходные данные в другой файл.
Выходной файл может содержать конфиденциальную информацию, поэтому необходимо защитить выходные файлы с соответствующими разрешениями NTFS.
Пример 3. Вызов скрипта и передача значений переменных из строки
$StringArray = "MYVAR1='String1'", "MYVAR2='String2'"
Invoke-Sqlcmd -Query "SELECT `$(MYVAR1) AS Var1, `$(MYVAR2) AS Var2" -Variable $StringArray
Var1 Var2
---- ----
String1 String2
Эта команда использует массив символьных строк в качестве входных данных для параметра Переменной.
Массив определяет несколько переменных SQLCMD.
Знаки $в инструкции SELECT, определяющие переменные SQLCMD, экранируются с помощью символа back-tick (').
Пример 4. Вызов скрипта и передача переменных из ядра СУБД SQL
Set-Location "SQLSERVER:\SQL\MyComputer\MainInstance"
PS SQLSERVER:\SQL\MyComputer\MainInstance> Invoke-Sqlcmd -Query "SELECT SERVERPROPERTY('MachineName') AS ComputerName" -ServerInstance (Get-Item .)
ComputerName
------------
MyComputer
Эта команда использует Set-Location для перехода к пути поставщика SQL ServerWindows PowerShell для экземпляра ядра СУБД SQL.
Затем он вызывает Get-Item для получения объекта SQL Management Object Server для использования в качестве параметра ServerInstance invoke-Sqlcmd.
Пример 5. Выполнение запроса и отображение подробных выходных данных
Set-Location "SQLSERVER:\SQL\MyComputer\MainInstance"
Invoke-SqlCmd -Query "PRINT N'abc'" -Verbose
VERBOSE: abc
Эта команда использует параметр Windows PowerShellVerbose для возврата выходных данных сообщения команды SQL PRINT.
Пример 6. Вызов команды с помощью позиционной строки в качестве входных данных
Set-Location "SQLSERVER:\SQL\MyComputer\MainInstance\Databases\MyDatabase"
PS SQLSERVER:\SQL\MyComputer\MainInstance> Invoke-Sqlcmd "SELECT DB_NAME() AS DatabaseName"
WARNING: Using provider context. Server = MyComputer\MainInstance, Database = MyDatabase.
DatabaseName
------------
MyDatabase
Эта команда использует позициальную строку для предоставления входных данных параметру query.
В нем также показано, как Invoke-Sqlcmd использует текущий путь для задания контекста базы данных myDatabase.
Пример 7. Сбор данных в объект DataSet
$DS = Invoke-Sqlcmd -ServerInstance "MyComputer" -Query "SELECT ID, Item FROM MyDB.dbo.MyTable" -As DataSet
$DS.Tables[0].Rows | %{ echo "{ $($_['ID']), $($_['Item']) }" }
{ 10, AAA }
{ 20, BBB }
{ 30, CCC }
Эта команда использует параметр As DataSet для записи данных в объект .Net System.Data.DataSet и сохраняет результат в переменной "$DS". Объект можно использовать для дальнейшей обработки.
Пример 8. Получение определенных наборов столбцов
$Tables = Invoke-Sqlcmd -ServerInstance "MyComputer" -Query "SELECT Item, id FROM MyDatabase.dbo.MyTable; SELECT GETDATE() AS T" -As DataTables
$Tables[0].Rows | %{ echo $_.ID }
$Tables[1].Rows | %{ echo $_.T.DayOfWeek }
10
20
30
Monday
Первая команда использует параметр As DataTables для записи данных в коллекцию объектов .NET System.Data.DataTable. Команда получает две таблицы с разными наборами столбцов.
Каждая таблица может обрабатываться по отдельности на основе собственной схемы.
Пример 9. Получение полного управления подключением
Invoke-Sqlcmd -Query "SELECT COUNT(*) AS Count FROM MyTable" -ConnectionString "Data Source=MYSERVER;Initial Catalog=MyDatabase;Integrated Security=True;ApplicationIntent=ReadOnly"
Count
-----
127432
Эта команда использует параметр -ConnectionString, чтобы получить полный контроль над соединением, которое этот командлет устанавливает, а не Invoke-Sqlcmd для сборки строки подключения на основе параметров, переданных в командной строке.
Это полезно для менее распространенных свойств, которые можно использовать.
Пример 10. Выполнение хранимой процедуры и запись ошибок SQL
$script_sp_with_errors = @'
CREATE PROCEDURE [dbo].[TestProcedure3]
AS
BEGIN
CREATE TABLE [dbo].[TestTable] (col INT NOT NULL);
INSERT INTO [dbo].[TestTable] VALUES (NULL); -- will cause an error
END
GO
'@
# Create a test database
Invoke-SqlCmd -ServerInstance MyServer -Query 'CREATE DATABASE TestDB'
# ... adds a stored procedure that has errors in it...
Invoke-SqlCmd -ServerInstance MyServer -Database 'TestDB' -Query $script_sp_with_errors
# ... executes the SP and collected the errors
Invoke-SqlCmd -ServerInstance MyServer -Database 'TestDB' -Query 'EXEC TestProcedure3' -OutputSqlErrors $true
Here's the output:
Invoke-SqlCmd : Cannot insert the value NULL into column 'col', table 'TestDB.dbo.TestTable'; column does not allow nulls. INSERT fails.
The statement has been terminated.
Msg 515, Level 16, State 2, Procedure TestProcedure3, Line 5.
At line:1 char:1
...
Эта команда использует параметр -OutputSqlErrors, чтобы сообщить об ошибках пользователю. Обратите внимание, что в этом случае сообщение об ошибке содержит дополнительные сведения, такие как имя субъекта-службы и номер строки, в котором произошла ошибка.
Пример 11. Подключение к базе данных SQL Azure (или управляемому экземпляру) с помощью маркера доступа
Import-Module SQLServer
Import-Module Az.Accounts -MinimumVersion 2.2.0
# Note: the sample assumes that you or your DBA configured the server to accept connections using
# that Service Principal and has granted it access to the database (in this example at least
# the SELECT permission).
### Obtain the Access Token: this will bring up the login dialog
Connect-AzAccount
$access_token = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token
# Now that we have the token, we use it to connect to the database 'mydb' on server 'myserver'
Invoke-Sqlcmd -ServerInstance myserver.database.windows.net -Database mydb -AccessToken $access_token`
-query 'select * from Table1'
Пример 12. Подключение к базе данных SQL Azure (или управляемому экземпляру) с помощью субъекта-службы
Import-Module SQLServer
# Note: the sample assumes that you or your DBA configured the server to accept connections using
# that Service Principal and has granted it access to the database (in this example at least
# the SELECT permission).
$clientid = "enter application id that corresponds to the Service Principal" # Do not confuse with its display name
$tenantid = "enter the tenant ID of the Service Principal"
$secret = "enter the secret associated with the Service Principal"
$request = Invoke-RestMethod -Method POST `
-Uri "https://login.microsoftonline.com/$tenantid/oauth2/token"`
-Body @{ resource="https://database.windows.net/"; grant_type="client_credentials"; client_id=$clientid; client_secret=$secret }`
-ContentType "application/x-www-form-urlencoded"
$access_token = $request.access_token
# Now that we have the token, we use it to connect to the database 'mydb' on server 'myserver'
Invoke-Sqlcmd -ServerInstance myserver.database.windows.net -Database mydb -AccessToken $access_token`
-query 'select * from Table1'
Пример 13. Подключение к базе данных SQL Azure (или управляемому экземпляру) с помощью управляемого удостоверения, назначаемого системой (SAMI)
Import-Module SQLServer
# Note: the sample assumes that you or your DBA configured the server to accept connections using
# that VM Identity you are running on and has granted it access to the database (in this
# example at least the SELECT permission).
Connect-AzAccount -Identity
$access_token = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token
# Now that we have the token, we use it to connect to the database 'mydb' on server 'myserver'
Invoke-Sqlcmd -ServerInstance myserver.database.windows.net -Database mydb -AccessToken $access_token `
-query 'select * from Table1'
Пример 14. Подключение к базе данных SQL Azure (или управляемому экземпляру) с помощью управляемого удостоверения, назначаемого пользователем (UAMI)
Import-Module SQLServer
# Note: the sample assumes that you or your DBA configured the server to accept connections using
# that VM Identity you are running on and has granted it access to the database (in this
# example at least the SELECT permission).
Connect-AzAccount -Identity -AccountId '<your-user-assigned-managed-identity-client-id>'
$access_token = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token
# Now that we have the token, we use it to connect to the database 'mydb' on server 'myserver'
Invoke-Sqlcmd -ServerInstance myserver.database.windows.net -Database mydb -AccessToken $access_token `
-query 'select * from Table1'
Пример 15. Подключение к группе доступности, настроенной для маршрутизации Read-Only с помощью -ApplicationIntent
# In the following example:
# - MT_2009250511 is a listener for an AG configured for Read-Only Routing (port 5555)
# - AGDB_2_1 is the DB in the AG
# - VLM00226138 is the primary replica configured to only allow ReadWrite connections
# - VLM00226137 is the secondary replica
#
Invoke-Sqlcmd -ServerInstance "MT_2009250511,5555" -Database AGDB_2_1 `
-HostName "PowershellBox1" -ApplicationName "ReadWrite" -ApplicationIntent ReadWrite `
-Query "select HOST_NAME() AS HostName, APP_NAME() AS ApplicationIntent, @@SERVERNAME AS ServerName"
Invoke-Sqlcmd -ServerInstance "MT_2009250511,5555" -Database AGDB_2_1 `
-HostName "PowershellBox2" -ApplicationName "ReadOnly" -ApplicationIntent ReadOnly `
-Query "select HOST_NAME() AS HostName, APP_NAME() AS ApplicationIntent, @@SERVERNAME AS ServerName"
# When you run the 2 cmdlets above, the output is going to be something like this:
#
# HostName ApplicationIntent ServerName
# -------- ----------------- ----------
# PowershellBox1 ReadWrite VLM00226138
#
# HostName ApplicationIntent ServerName
# -------- ----------------- ----------
# PowershellBox2 ReadOnly VLM00226137
которое показывает, что в зависимости от значения параметра -ApplicationIntent
подключение направляется на другой сервер в группе доступности. Кстати, обратите внимание на использование -ApplicationName
и -HostName
параметров для визуального отличия двух результатов: это распространенный метод, который можно использовать для трассировки соединений и их намерений, помимо примера -ApplicationIntent, показанного здесь.
Пример 16. Сбор статистики подключения с помощью параметра -StatisticsVariable
Import-Module SQLServer
Invoke-Sqlcmd -ServerInstance localhost -StatisticsVariable stats `
-Query 'CREATE TABLE #Table (ID int); INSERT INTO #Table VALUES(1), (2); INSERT INTO #Table VALUES(3); SELECT * FROM #Table'
Write-Host "Number of rows affected......: $($stats.IduRows)"
Write-Host "Number of insert statements..: $($stats.IduCount)"
Write-Host "Number of select statements..: $($stats.SelectCount)"
Write-Host "Total execution time.........: $($stats.ExecutionTime)ms"
# When you run the code fragment above, is going to be something like this:
#
# Number of rows affected......: 3
# Number of insert statements..: 2
# Number of select statements..: 1
# Total execution time.........: 5ms
В этом примере показано, как использовать параметр -StatisticsVariable
для сбора сведений о соединении, выполняемых инструкций и времени выполнения при запуске некоторой T-SQL, создающей временную таблицу, вставляя некоторое значение, и, наконец, выдает выбор, чтобы получить все вставленные строки.
Примечание. Если один и тот же запрос выполняется на нескольких серверах (например, путем отправки имен серверов через командлет), StatisticsVariable
записывает массив статистики, по одному для каждого подключения. Затем результаты можно агрегировать с помощью, например, ($stats.IduRows | Measure-Object -Sum).Sum
.
Дополнительные сведения о доступной статистике см. в статистике поставщика для SQL Server.
Пример 17. Выполнение запроса, расшифровывающего данные, полученные из столбцов, зашифрованных с помощью Always Encrypted. Предположим, что главный ключ столбца хранится в хранилище ключей в Azure Key Vault.
# Connect to Azure account.
Import-Module Az.Accounts -MinimumVersion 2.2.0
Connect-AzAccount
# Obtain an access token for key vaults.
$keyVaultAccessToken = (Get-AzAccessToken -ResourceUrl https://vault.azure.net).Token
# Pass the token to the cmdlet, so that it can use it to authenticate to Azure when decrypting data protected with Always Encrypted.
$connString = 'Data Source=MYSERVER;Initial Catalog=MyDatabase;Integrated Security=True;ApplicationIntent=ReadOnly;Column Encryption Setting=Enabled'
Invoke-Sqlcmd -Query 'SELECT COUNT(*) AS Count FROM MyTable' -ConnectionString $connString -KeyVaultAccessToken $keyVaultAccessToken
Параметры
-AbortOnError
Указывает, что этот командлет останавливает команду SQL Server и возвращает уровень ошибки переменной Windows PowerShell ERRORLEVEL, если этот командлет обнаруживает ошибку.
Возвращаемый уровень ошибки равен 1, если ошибка имеет уровень серьезности выше 10, а уровень ошибки равен 0, если ошибка имеет уровень серьезности 10 или меньше.
Если параметр ErrorLevel также указан, этот командлет возвращает значение 1, только если серьезность сообщения об ошибке также равна или выше, чем значение, указанное для ErrorLevel.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-AccessToken
Маркер доступа, используемый для проверки подлинности в SQL Server, в качестве альтернативы пользователю или паролю или проверке подлинности Windows.
Это можно использовать, например, для подключения к SQL Azure DB
и SQL Azure Managed Instance
с помощью Service Principal
или Managed Identity
(см. ссылки в нижней части этой страницы).
В распространенных сценариях этот параметр получается примерно с (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token
(требуется модуль Az.Account).
Не указывайте userName, парольили учетные данные при использовании этого параметра.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-ApplicationIntent
Тип рабочей нагрузки приложения при подключении к базе данных в группе доступности SQL Server.
Допустимые значения: ReadOnly и ReadWrite.
Тип: | ApplicationIntent |
Допустимые значения: | ReadWrite, ReadOnly |
Position: | Named |
Default value: | ReadWrite |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-ApplicationName
Имя приложения, связанного с подключением.
Тип: | String |
Position: | Named |
Default value: | .NET SqlClient Data Provider |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-ConnectionString
Указывает строку подключения для подключения к серверу.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-ConnectionTimeout
Указывает количество секунд при истечении времени ожидания этого командлета, если он не может успешно подключиться к экземпляру ядра СУБД. Значение времени ожидания должно быть целым значением от 0 до 65534. Если задано значение 0, попытки подключения не истекает.
Тип: | Int32 |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Credential
Объект PSCredential, поля имени пользователя и пароля которого будут использоваться для подключения к экземпляру SQL.
Тип: | PSCredential |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Database
Указывает имя базы данных. Этот командлет подключается к этой базе данных в экземпляре, указанном в параметре ServerInstance.
Если параметр базы данных не указан, используемая база данных зависит от того, указывает ли текущий путь как папку SQLSERVER:\SQL, так и имя базы данных. Если путь указывает папку SQL и имя базы данных, этот командлет подключается к базе данных, указанной в пути. Если путь не основан на папке SQL или путь не содержит имя базы данных, этот командлет подключается к базе данных по умолчанию для текущего идентификатора входа. Если указать переключатель параметра IgnoreProviderContext, этот командлет не учитывает любую базу данных, указанную в текущем пути, и подключается к базе данных, определенной в качестве значения по умолчанию для текущего идентификатора входа.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-DedicatedAdministratorConnection
Указывает, что этот командлет использует выделенное подключение администратора (DAC) для подключения к экземпляру ядра СУБД.
DAC используется системными администраторами для таких действий, как устранение неполадок экземпляров, которые не будут принимать новые стандартные подключения.
Экземпляр должен быть настроен для поддержки DAC.
Если DAC не включен, этот командлет сообщает об ошибке и не будет выполняться.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-DisableCommands
Указывает, что этот командлет отключает некоторые функции sqlcmd, которые могут компрометировать безопасность при выполнении в пакетных файлах.
Он предотвращает передаче переменных Windows PowerShell в скрипт Invoke-Sqlcmd.
Скрипт запуска, указанный в переменной скрипта SQLCMDINI, не выполняется.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-DisableVariables
Указывает, что этот командлет игнорирует переменные скриптов sqlcmd. Это полезно, если скрипт содержит множество инструкций INSERT, которые могут содержать строки с тем же форматом, что и переменные, такие как $(variable_name).
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Encrypt
Тип шифрования, используемый при подключении к SQL Server.
Это значение сопоставляется со свойством Encrypt
SqlConnectionEncryptOption
в объекте SqlConnection драйвера Microsoft.Data.SqlClient.
Если значение по умолчанию не указано, Mandatory
.
Этот параметр является новым в версии 22 модуля. Дополнительные сведения см. в разделе
Strict Connection Encryption
в разделе Связанные ссылки.
Тип: | String |
Допустимые значения: | Mandatory, Optional, Strict |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-EncryptConnection
Указывает, что этот командлет использует шифрование ssl/TLS для подключения к экземпляру ядра СУБД, указанного в параметре ServerInstance.
Начиная с версии 22 модуля этот параметр не рекомендуется. Подключения шифруются по умолчанию. Вместо этого рекомендуется использовать новый параметр -Encrypt. Дополнительные сведения см. в разделе
Strict Connection Encryption
в разделе Связанные ссылки.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-ErrorLevel
Указывает, что этот командлет отображает только сообщения об ошибках, уровень серьезности которых равен или выше указанного значения. Все сообщения об ошибках отображаются, если этот параметр не указан или имеет значение 0. Серьезность ошибок ядра СУБД составляет от 1 до 24.
Тип: | Int32 |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-FailoverPartner
Имя или адрес сервера партнера, к которому нужно подключиться, если основной сервер отключен.
Тип: | String |
Position: | Named |
Default value: | "" |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-HostName
Указывает имя рабочей станции. Имя рабочей станции сообщается системной хранимой процедурой sp_who и в столбце имени узла представления каталога sys.processes. Если этот параметр не указан, по умолчанию используется имя компьютера, на котором выполняется Invoke-Sqlcmd. Этот параметр можно использовать для идентификации различных Invoke-Sqlcmd сеансов.
Тип: | String |
Aliases: | WorkstationID |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-HostNameInCertificate
Имя узла, используемое при проверке TLS/SSL-сертификата SQL Server. Этот параметр необходимо передать, если экземпляр SQL Server включен для принудительного шифрования и требуется подключиться к экземпляру с помощью имени узла или короткого имени. Если этот параметр опущен, передача полного доменного имени (FQDN) в -ServerInstance необходима для подключения к экземпляру SQL Server, включенного для принудительного шифрования.
Этот параметр является новым в версии 22 модуля. Дополнительные сведения см. в разделе
Strict Connection Encryption
в разделе Связанные ссылки.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-IgnoreProviderContext
Указывает, что этот командлет игнорирует контекст базы данных, установленный текущим путем SQLSERVER:\SQL. Если параметр базы данных не указан, этот командлет использует базу данных по умолчанию для текущего идентификатора входа или учетной записи Windows.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-IncludeSqlUserErrors
Указывает, что этот командлет возвращает ошибки пользовательского скрипта SQL, которые в противном случае игнорируются по умолчанию. Если этот параметр указан, этот командлет соответствует по умолчанию служебной программы sqlcmd.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-InputFile
Указывает файл, который будет использоваться в качестве входных данных запроса для этого командлета. Файл может содержать Transact-SQL инструкции, инструкции XQuery и команды sqlcmd и переменные скриптов. Укажите полный путь к файлу. Ожидается, что файл закодирован с помощью UTF-8.
Следует запускать только скрипты из надежных источников. Убедитесь, что все входные скрипты защищены соответствующими разрешениями NTFS.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-KeyVaultAccessToken
Указывает маркер доступа для хранилищ ключей в Azure Key Vault. Используйте этот параметр, если любой столбец для запроса защищен с помощью Always Encrypted с помощью главного ключа столбца, хранящегося в хранилище ключей Azure Key Vault. Кроме того, вы можете пройти проверку подлинности в Azure с помощью Add-SqlAzureAuthenticationContext перед вызовом этого командлета.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-ManagedHsmAccessToken
Указывает маркер доступа для управляемых HSM в Azure Key Vault. Используйте этот параметр, если любой столбец, запрашиваемый с помощью Always Encrypted, использует главный ключ столбца, хранящийся в управляемом HSM в Azure Key Vault. Кроме того, вы можете пройти проверку подлинности в Azure с помощью Add-SqlAzureAuthenticationContext перед вызовом этого командлета.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-MaxBinaryLength
Указывает максимальное количество байтов, возвращаемых для столбцов с типами данных двоичной строки, такими как двоичный и varbinary. Значение по умолчанию — 1024 байта.
Тип: | Int32 |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-MaxCharLength
Задает максимальное количество символов, возвращаемых для столбцов с типами данных символов или Юникода, такими как char, nchar, varchar и nvarchar. Значение по умолчанию — 4000 символов.
Тип: | Int32 |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-MultiSubnetFailover
Если приложение подключается к группе доступности AlwaysOn в разных подсетях, передача этого параметра обеспечивает быстрое обнаружение и подключение к активному серверу (в настоящее время).
Примечание. Передача -MultiSubnetFailover не требуется в .NET Framework 4.6.1 или более поздних версиях.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-NewPassword
Задает новый пароль для идентификатора входа проверки подлинности SQL Server. Этот командлет изменяет пароль, а затем завершает работу. Необходимо также указать параметры имени пользователя и пароля с паролем, указывающим текущий пароль для входа.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-OutputAs
Указывает тип результатов, которые получает этот командлет.
Если значение этого параметра не указано, командлет задает значение DataRows.
Тип: | OutputType |
Aliases: | As |
Допустимые значения: | DataSet, DataTables, DataRows |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-OutputSqlErrors
Указывает, что этот командлет отображает сообщения об ошибках в выходных данных Invoke-Sqlcmd.
Тип: | Boolean |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Password
Указывает пароль для идентификатора входа проверки подлинности SQL Server, указанного в параметре имени пользователя. Пароли чувствительны к регистру. По возможности используйте проверку подлинности Windows. Не используйте пустой пароль, если возможно, используйте надежный пароль.
Если вы укажете параметр пароля, за которым следует пароль, пароль отображается любому, кто может видеть монитор.
Если вы закодируйте пароль, за которым следует пароль в скрипте .ps1, любой пользователь, прочитавший файл скрипта, увидит свой пароль.
Назначьте соответствующие разрешения NTFS файлу, чтобы другие пользователи могли читать файл.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-ProgressAction
Определяет, как PowerShell реагирует на обновления хода выполнения, созданные скриптом, командлетом или поставщиком, например индикаторами хода выполнения, созданными командлетом Write-Progress. Командлет Write-Progress создает индикаторы хода выполнения, показывающие состояние команды.
Тип: | ActionPreference |
Aliases: | proga |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Query
Указывает один или несколько запросов, которые выполняет этот командлет. Запросы могут быть Transact-SQL или инструкции XQuery или команды sqlcmd. Можно указать несколько запросов, разделенных точкой с запятой. Не указывайте разделитель SQLcmd GO. Экранируйте все двойные кавычки, включенные в строку. Рекомендуется использовать квадратные идентификаторы, такие как [MyTable], а не кавычек, например MyTable.
Тип: | String |
Position: | 0 |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-QueryTimeout
Указывает количество секунд до истечения времени ожидания запросов. Если значение времени ожидания не указано, запросы не истекает. Время ожидания должно быть целым значением от 1 до 65535.
Тип: | Int32 |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-ServerInstance
Указывает символьную строку или объект объектов SMO SQL Server, указывающий имя экземпляра ядра СУБД. Для экземпляров по умолчанию укажите только имя компьютера: MyComputer. Для именованных экземпляров используйте формат ComputerName\InstanceName.
Тип: | PSObject |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-SeverityLevel
Задает нижний предел для уровня серьезности сообщения об ошибке, который этот командлет возвращает в переменную ERRORLEVEL Windows PowerShell.
Этот командлет возвращает самый высокий уровень серьезности из сообщений об ошибках, создаваемых запросами, которые он выполняет, при условии, что уровень серьезности равен или выше, чем указано в параметре SeverityLevel.
Если уровень серьезности не указан или имеет значение 0, этот командлет возвращает значение 0 в ERRORLEVEL.
Уровни серьезности сообщений об ошибках ядра СУБД варьируются от 1 до 24.
Этот командлет не сообщает о серьезности информационных сообщений с серьезностью 10
Тип: | Int32 |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-StatisticsVariable
Укажите имя переменной PowerShell, которая будет назначена статистике времени выполнения SQL Server при выполнении командлета.
Для этого параметра используется запись ExecutionTime
(совокупное количество времени (в миллисекундах), которое поставщик потратил на обработку командлета), или IduRows
(общее количество строк, затронутых инструкцией INSERT, DELETE и UPDATE).
Дополнительные сведения см. в статистике поставщика sql Server.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-SuppressProviderContextWarning
Указывает, что этот командлет подавляет предупреждение о том, что этот командлет использовался в контексте базы данных из текущего параметра пути SQLSERVER:\SQL, чтобы установить контекст базы данных для командлета.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-TrustServerCertificate
Указывает, будет ли канал зашифрован при обходе цепочки сертификатов для проверки доверия.
Этот параметр является новым в версии 22 модуля. Дополнительные сведения см. в разделе
Strict Connection Encryption
в разделе Связанные ссылки.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Username
Указывает идентификатор входа для подключения проверки подлинности SQL Server к экземпляру ядра СУБД.
Пароль необходимо указать с помощью параметра Password.
Если имя пользователя и пароль не указаны, этот командлет пытается подключиться к проверке подлинности Windows с помощью учетной записи Windows под управлением сеанса Windows PowerShell. По возможности используйте проверку подлинности Windows.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Variable
Задает набор переменных скриптов sqlcmd для использования в скрипте sqlcmd и задает значения для переменных.
Используйте массив Windows PowerShell для указания нескольких переменных и их значений; кроме того, используйте Hashtable
, где ключ представляет имя переменной и значение переменной.
При использовании массива значения параметров обрезаются. Это поведение было сохранено в модуле версии 22 для обратной совместимости с версией 21. Рекомендуется не полагаться на это поведение, которое может измениться в будущей основной версии модуля.
Параметр типа
Hashtable
доступен только в версии 22+ модуля.
Тип: | PSObject |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
System.Management.Automation.PSObject
Выходные данные
System.Object