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 (или Управляемый экземпляр) с помощью управляемого удостоверения

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).

## Obtain access token from the machine
if (Get-Command -All az -ErrorAction SilentlyContinue -CommandType Application) {
  # Obtain the Access Token from the Azure provider for database resources (using az az cli)
  az login
  $access_token = az account get-access-token --resource https://database.windows.net/ --query accessToken -o tsv
} else {
  # az cli not around: fall back and assume this is a VM in Azure
  $response = Invoke-WebRequest `
    -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatabase.windows.net'`
    -Method GET`
    -Headers @{Metadata="true"}
  $access_token = ($response.Content | ConvertFrom-Json).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'

Этот пример аналогичен приведенному выше. Он показывает только гибкость параметра AccessToken .

Пример 14. Подключение к группе доступности, настроенной для маршрутизации 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, показанного здесь.

Пример 15. Сбор статистики подключения с помощью параметра -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.

Пример 16. Выполнение запроса, который расшифровывает данные, полученные из столбцов, зашифрованных с помощью 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.

Это значение сопоставляется со свойством EncryptSqlConnectionEncryptOption объекта 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