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>]
[<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>]
[<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. Подключение к именованным экземплярам и запуск скрипта
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
Эта команда использует массив символьных строк в качестве входных данных для параметра Variable.
Массив определяет несколько переменных SQLCMD.
Знаки $ в инструкции SELECT, которые идентифицируют переменные SQLCMD, экранируются с помощью символа обратного деления (').
Пример 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. Подключение к базе данных Azure SQL (или Управляемый экземпляр) с помощью маркера доступа
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. Подключение к базе данных Azure SQL (или Управляемый экземпляр) с помощью субъекта-службы
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. Подключение к базе данных Azure SQL (или Управляемый экземпляр) с помощью управляемого удостоверения, назначаемого системой (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. Подключение к базе данных Azure SQL (или Управляемый экземпляр) с помощью управляемого удостоверения, назначаемого пользователем (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
параметра подключение направляется на другой сервер в группе доступности. Кстати, обратите внимание на использование параметров и -HostName
для визуальной -ApplicationName
дифференцировки двух результатов: это распространенный метод, который можно использовать для трассировки соединений и их намерений, помимо примера -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. Предположим, что столбец master ключ хранится в хранилище ключей в 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.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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, Password или Credential при использовании этого параметра.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ApplicationIntent
Тип рабочей нагрузки приложения при подключении к базе данных в группе доступности SQL Server.
Допустимые значения: ReadOnly и ReadWrite.
Type: | ApplicationIntent |
Accepted values: | ReadWrite, ReadOnly |
Position: | Named |
Default value: | ReadWrite |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ApplicationName
Имя приложения, связанного с подключением.
Type: | String |
Position: | Named |
Default value: | .NET SqlClient Data Provider |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ConnectionString
Указывает строка подключения для подключения к серверу.
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ConnectionTimeout
Указывает время ожидания этого командлета в секундах, если ему не удается успешно подключиться к экземпляру ядра СУБД. Значение времени ожидания должно быть целым числом от 0 до 65534. Если указано значение 0, попытки соединения не прекращаются.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
Объект PSCredential, поля имя пользователя и пароль которого будут использоваться для подключения к экземпляру SQL.
Type: | PSCredential |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Database
Указывает имя базы данных. Этот командлет подключается к этой базе данных в экземпляре, указанном в параметре ServerInstance.
Если параметр Database не указан, используемая база данных зависит от того, указывает ли текущий путь как папку SQLSERVER:\SQL, так и имя базы данных. Если путь указывает папку SQL и имя базы данных, этот командлет подключается к базе данных, указанной в пути. Если путь не основан на папке SQL или путь не содержит имя базы данных, этот командлет подключается к базе данных по умолчанию для текущего идентификатора входа. Если указать параметр IgnoreProviderContext, этот командлет не учитывает базу данных, указанную в текущем пути, и подключается к базе данных, определенной по умолчанию для текущего идентификатора входа.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DedicatedAdministratorConnection
Указывает, что этот командлет использует выделенное административное подключение (DAC) для подключения к экземпляру ядра СУБД.
Соединение DAC используется системными администраторами для выполнения таких задач, как диагностика экземпляров, не принимающих новые стандартные соединения.
Для экземпляра необходимо настроить поддержку приложения уровня данных.
Если приложение уровня данных не включено, этот командлет сообщает об ошибке и не будет выполняться.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DisableCommands
Указывает, что этот командлет отключает некоторые функции sqlcmd, которые могут нарушить безопасность при выполнении в пакетных файлах.
Это предотвращает Windows PowerShell переменные от отправки в скрипт Invoke-Sqlcmd.
Скрипт запуска, указанный в переменной скрипта SQLCMDINI, не запускается.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DisableVariables
Указывает, что этот командлет игнорирует переменные скрипта sqlcmd. Это может отказаться полезным в случае, если в скрипте содержится много инструкций INSERT, которые могут содержать строки, имеющие тот же формат, что и обычные переменные, т. е. «$(имя_переменной)».
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encrypt
Тип шифрования, используемый при подключении к SQL Server.
Это значение сопоставляется со свойством Encrypt
SqlConnectionEncryptOption
объекта SqlConnection драйвера Microsoft.Data.SqlClient.
Когда не задано, по умолчанию используется значение Mandatory
.
Этот параметр является новым в версии 22 модуля. Дополнительные сведения см. в разделе
Strict Connection Encryption
Связанные ссылки.
Type: | String |
Accepted values: | Mandatory, Optional, Strict |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-EncryptConnection
Указывает, что этот командлет использует шифрование SSL/TLS для подключения к экземпляру ядра СУБД, указанному в параметре ServerInstance.
Начиная с версии 22 модуля этот параметр является устаревшим. Connections шифруются по умолчанию. Рекомендуется использовать новый параметр -Encrypt. Дополнительные сведения см. в разделе
Strict Connection Encryption
Связанные ссылки.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ErrorLevel
Указывает, что этот командлет отображает только сообщения об ошибках, уровень серьезности которых равен или выше указанного значения. Все сообщения об ошибках отображаются, если этот параметр не указан или имеет значение 0. Диапазон значений серьезности ошибок компонента ядра СУБД: от 1 до 24.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FailoverPartner
Имя или адрес сервера-партнера, к которому необходимо подключиться, если сервер-источник не работает.
Type: | String |
Position: | Named |
Default value: | "" |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-HostName
Указывает имя рабочей станции. Имя рабочей станции определяется хранимой процедурой sp_who и указывается в столбце hostname представления каталога sys.processes. Если этот параметр не указан, по умолчанию используется имя компьютера, на котором выполняется Invoke-Sqlcmd. Этот параметр можно использовать для идентификации различных сеансов Invoke-Sqlcmd.
Type: | String |
Aliases: | WorkstationID |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-HostNameInCertificate
Имя узла используется для проверки TLS/SSL-сертификата SQL Server. Этот параметр необходимо передать, если экземпляр SQL Server включен для принудительного шифрования и вы хотите подключиться к экземпляру с помощью имени узла или shortname. Если этот параметр опущен, необходимо передать полное доменное имя (FQDN) в -ServerInstance для подключения к экземпляру SQL Server, включенного для принудительного шифрования.
Этот параметр является новым в версии 22 модуля. Дополнительные сведения см. в разделе
Strict Connection Encryption
Связанные ссылки.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-IgnoreProviderContext
Указывает, что этот командлет игнорирует контекст базы данных, установленный текущим путем SQLSERVER:\SQL. Если параметр Database не указан, этот командлет использует базу данных по умолчанию для текущего идентификатора входа или учетной записи Windows.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-IncludeSqlUserErrors
Указывает, что этот командлет возвращает ошибки пользовательского скрипта SQL, которые в противном случае игнорируются по умолчанию. Если указан этот параметр, этот командлет соответствует поведению программы sqlcmd по умолчанию.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputFile
Указывает файл, который будет использоваться в качестве входных данных запроса для этого командлета. Этот файл может содержать инструкции Transact-SQL, инструкции XQuery, команды sqlcmd и переменные скриптов. Задается полный путь к файлу. Пробелы в пути к файлу и имени файла не допускаются. Ожидается, что файл будет закодирован с помощью UTF-8.
Скрипты следует запускать только из надежных источников. Защитите все входные скрипты с помощью соответствующих разрешений NTFS.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-KeyVaultAccessToken
Указывает маркер доступа для хранилищ ключей в Azure Key Vault. Используйте этот параметр, если любой запрашиваемый столбец защищен с помощью Always Encrypted с помощью ключа master столбца, хранящегося в хранилище ключей в Azure Key Vault. Кроме того, вы можете пройти проверку подлинности в Azure с помощью Add-SqlAzureAuthenticationContext перед вызовом этого командлета.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ManagedHsmAccessToken
Указывает маркер доступа для управляемых модулей HSM в Azure Key Vault. Используйте этот параметр, если любой запрашиваемый столбец защищен с помощью Always Encrypted с помощью ключа master столбца, хранящегося в управляемом устройстве HSM в Azure Key Vault. Кроме того, вы можете пройти проверку подлинности в Azure с помощью Add-SqlAzureAuthenticationContext перед вызовом этого командлета.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MaxBinaryLength
Указывает максимальное число байтов, возвращаемых для столбцов с типом данных двоичной строки, например binary или varbinary. Значение по умолчанию — 1024 байта.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MaxCharLength
Указывает максимальное количество символов, возвращаемых для столбцов с символьным типом данных или в Юникоде, включая char, nchar, varchar и nvarchar. Значение по умолчанию — 4000 символов.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MultiSubnetFailover
Если приложение подключается к группе доступности AlwaysOn в разных подсетях, передача этого параметра обеспечивает более быстрое обнаружение активного сервера и подключение к нему.
Примечание. Передача -MultiSubnetFailover не требуется для платформа .NET Framework 4.6.1 или более поздних версий.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NewPassword
Задает новый пароль для идентификатора входа проверки подлинности SQL Server. Этот командлет изменяет пароль и завершает работу. Необходимо также указать параметры Имя пользователя и Пароль, указав пароль, который указывает текущий пароль для имени входа.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OutputAs
Указывает тип результатов, которые получает этот командлет.
Если вы не укажете значение для этого параметра, командлет задает значение DataRows.
Type: | OutputType |
Aliases: | As |
Accepted values: | DataSet, DataTables, DataRows |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OutputSqlErrors
Указывает, что этот командлет отображает сообщения об ошибках в выходных данных Invoke-Sqlcmd.
Type: | Boolean |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Password
Указывает пароль для SQL Server идентификатор входа для проверки подлинности, указанный в параметре Username. В паролях учитывается регистр символов. По возможности используйте аутентификацию Windows. Не следует использовать пустые пароли. Если возможно, используйте надежный пароль.
Если вы укажете параметр Пароль, за которым следует пароль, пароль будет виден всем, кто может видеть ваш монитор.
Если в скрипте .ps1 закодирован пароль, за которым следует пароль, любой пользователь, читающий файл скрипта, увидит ваш пароль.
Для предотвращения несанкционированного чтения файла задайте для файла соответствующие разрешения NTFS.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Query
Указывает один или несколько запросов, выполняемых этим командлетом. Запросы могут быть инструкциями Transact-SQL или XQuery, а также командами sqlcmd. Допускается указание нескольких запросов, разделенных точкой с запятой. Не следует использовать разделитель GO sqlcmd. Необходимо экранировать все двойные кавычки, включенные в строку. Рекомендуется использовать идентификаторы, заключенные в квадратные скобки, такие как [MyTable], вместо заключенных в кавычки идентификаторов, таких как «MyTable».
Type: | String |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-QueryTimeout
Указывает количество секунд до истечения времени ожидания запросов. Если значение времени ожидания не указано, время ожидания запросов не истекает. Время ожидания должно быть целым числом от 1 до 65535.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ServerInstance
Задает символьную строку или объект SQL Server управляющих объектов (SMO), указывающий имя экземпляра ядра СУБД. Для экземпляров по умолчанию укажите только имя компьютера MyComputer. Для именованных экземпляров используйте формат Имя_компьютера\Имя_экземпляра.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-SeverityLevel
Задает нижний предел уровня серьезности сообщения об ошибке, который этот командлет возвращает в переменную Windows PowerShell ERRORLEVEL.
Этот командлет возвращает самый высокий уровень серьезности из сообщений об ошибках, создаваемых запросами, при условии, что уровень серьезности равен или выше, чем указано в параметре SeverityLevel.
Если severityLevel не указан или задано значение 0, этот командлет возвращает значение 0 в ERRORLEVEL.
Степени серьезности сообщений об ошибках компонента Database Engine имеют значения в диапазоне от 1 до 24.
Этот командлет не сообщает о серьезности для информационных сообщений с уровнем серьезности 10
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-StatisticsVariable
Укажите имя переменной PowerShell, которой будет назначена SQL Server статистики времени выполнения при выполнении командлета.
Обычно этот параметр используется для записи ExecutionTime
(совокупное количество времени (в миллисекундах), затраченного поставщиком на обработку командлета) или IduRows
(общее количество строк, затронутых инструкциями INSERT, DELETE и UPDATE).
Дополнительные сведения см. в разделе Статистика поставщиков для SQL Server.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SuppressProviderContextWarning
Указывает, что этот командлет подавляет предупреждение о том, что этот командлет использовал в контексте базы данных из текущего параметра SQLSERVER:\SQL path для установки контекста базы данных для командлета.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TrustServerCertificate
Указывает, будет ли канал зашифрован при обходе цепочки сертификатов для проверки доверия.
Этот параметр является новым в версии 22 модуля. Дополнительные сведения см. в разделе
Strict Connection Encryption
Связанные ссылки.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Username
Указывает идентификатор входа для создания соединения, использующего проверку подлинности SQL Server, с экземпляром компонента Database Engine.
Пароль необходимо указать с помощью параметра Password.
Если имя пользователя и пароль не указаны, этот командлет пытается установить подключение проверки подлинности Windows с помощью учетной записи Windows, в которой выполняется сеанс Windows PowerShell. По возможности используйте аутентификацию Windows.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Variable
Задает набор переменных скрипта sqlcmd для использования в скрипте sqlcmd и задает значения для переменных.
Используйте массив Windows PowerShell для указания нескольких переменных и их значенийHashtable
; либо используйте , где ключ представляет имя переменной, а значение переменной — значение.
При использовании массива значения параметров обрезаются. Это поведение сохранялось в модуле версии 22 для обеспечения обратной совместимости с версией 21. Рекомендуется не полагаться на такое поведение, которое может измениться в будущей основной версии модуля.
Параметр типа
Hashtable
доступен только в версии 22+ модуля.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Входные данные
System.Management.Automation.PSObject
Выходные данные
System.Object