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.

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