Invoke-Sqlcmd
Esegue uno script contenente istruzioni supportate dall'utilità SQLCMD di SQL Server.
Sintassi
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>]
Descrizione
Il cmdlet Invoke-Sqlcmd esegue uno script contenente i linguaggi e i comandi supportati dall'utilità SQLCMD di SQL Server.
I comandi supportati sono Transact-SQL istruzioni e il subset della sintassi XQuery supportata dal motore di database.
Questo cmdlet accetta anche molti dei comandi supportati in modo nativo da SQLCMD, ad esempio GO e QUIT.
Questo cmdlet accetta anche le variabili di scripting di SQLCMD, ad esempio SQLCMDUSER. Per impostazione predefinita, questo cmdlet non imposta le variabili di scripting di SQLCMD.
Questo cmdlet non supporta l'uso di comandi correlati principalmente alla modifica interattiva degli script.
I comandi non supportati includono :!, :connect, :error, :out, :ed, :list, :listvar, :reset, :p erftrace e :serverlist.
Quando questo cmdlet viene eseguito, il primo set di risultati restituito dallo script viene visualizzato come tabella formattata.
Se i set di risultati successivi contengono elenchi di colonne diversi rispetto al primo, tali set di risultati non vengono visualizzati.
Se i set di risultati successivi dopo il primo set hanno lo stesso elenco di colonne, le relative righe vengono aggiunte alla tabella formattata contenente le righe restituite dal primo set di risultati.
È possibile visualizzare l'output dei messaggi di SQL Server, ad esempio quelli risultanti dall'istruzione SQL PRINT, specificando il parametro Verbose.
Esempio
Esempio 1: Connettersi a un'istanza denominata ed eseguire uno script
Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery" -ServerInstance "MyComputer\MainInstance"
TimeOfQuery
-----------
9/21/2017 2:48:24 PM
Questo comando si connette a un'istanza denominata del motore di database SQL in un computer ed esegue uno script di base Transact-SQL.
Esempio 2: Richiamare i comandi in un file di script e salvare l'output in un file di testo
Invoke-Sqlcmd -InputFile "C:\ScriptFolder\TestSqlCmd.sql" | Out-File -FilePath "C:\ScriptFolder\TestSqlCmd.rpt"
Output sent to TestSqlCmd.rpt.
Questo comando legge un file contenente istruzioni Transact-SQL e comandi SQLCMD, esegue il file e scrive l'output in un altro file.
Il file di output può contenere informazioni proprietarie, pertanto è necessario proteggere i file di output con le autorizzazioni NTFS appropriate.
Esempio 3: Richiamare uno script e passare valori di variabile da una stringa
$StringArray = "MYVAR1='String1'", "MYVAR2='String2'"
Invoke-Sqlcmd -Query "SELECT `$(MYVAR1) AS Var1, `$(MYVAR2) AS Var2" -Variable $StringArray
Var1 Var2
---- ----
String1 String2
Questo comando usa una matrice di stringhe di caratteri come input per il parametro Variable.
La matrice definisce più variabili SQLCMD.
L'istruzione $ sign in the SELECT che identifica le variabili SQLCMD viene preceduta da un carattere di escape usando il carattere back-tick (') .
Esempio 4: Richiamare uno script e passare variabili dal motore di database 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
Questo comando usa Set-Location per passare al percorso del provider SQL ServerWindows PowerShell per un'istanza del motore di database SQL.
Chiama quindi Get-Item per recuperare un oggetto SQL Management Object Server da usare come parametro ServerInstance di Invoke-Sqlcmd.
Esempio 5: Eseguire una query e visualizzare l'output dettagliato
Set-Location "SQLSERVER:\SQL\MyComputer\MainInstance"
Invoke-SqlCmd -Query "PRINT N'abc'" -Verbose
VERBOSE: abc
Questo comando usa il parametro Windows PowerShellVerbose per restituire l'output del messaggio del comando SQL PRINT.
Esempio 6: Richiamare un comando usando una stringa posizionale come input
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
Questo comando usa una stringa posizionale per fornire l'input al parametro Query.
Viene inoltre illustrato come Invoke-Sqlcmd usa il percorso corrente per impostare il contesto del database su MyDatabase.
Esempio 7: Acquisire dati in un oggetto 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 }
Questo comando usa il parametro As DataSet per acquisire i dati in un oggetto .Net System.Data.DataSet e archivia il risultato nella variabile '$DS'. L'oggetto può essere utilizzato per un'ulteriore elaborazione.
Esempio 8: Ottenere set di colonne specifici
$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
Il primo comando usa il parametro As DataTables per acquisire i dati in una raccolta di oggetti .Net System.Data.DataTable. Il comando ottiene due tabelle con set di colonne diversi.
Ogni tabella può essere elaborata singolarmente, in base al proprio schema.
Esempio 9: Ottenere il controllo completo di una connessione
Invoke-Sqlcmd -Query "SELECT COUNT(*) AS Count FROM MyTable" -ConnectionString "Data Source=MYSERVER;Initial Catalog=MyDatabase;Integrated Security=True;ApplicationIntent=ReadOnly"
Count
-----
127432
Questo comando consente di usare il parametro -ConnectionString per ottenere il controllo completo della connessione stabilita da questo cmdlet, anziché il Invoke-Sqlcmd per compilare la stringa di connessione in base ai parametri passati nella riga di comando.
Ciò è utile per le proprietà meno comuni che è possibile usare.
Esempio 10: Eseguire una stored procedure e acquisire gli errori 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
...
Questo comando consente di usare il parametro
Esempio 11: Connettersi al database SQL di Azure (o a Istanza gestita) usando un token di accesso
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'
Esempio 12: Connettersi al database SQL di Azure (o a Istanza gestita) usando un'entità servizio
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'
Esempio 13: Connettersi al database SQL di Azure (o a Istanza gestita) usando un'identità gestita assegnata dal sistema (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'
Esempio 14: Connettersi al database SQL di Azure (o a Istanza gestita) usando un'identità gestita assegnata dall'utente (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'
Esempio 15: Connettersi a un gruppo di disponibilità configurato per il routing Read-Only usando -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
che indica che, a seconda del valore del parametro -ApplicationIntent
, la connessione viene instradata a un server diverso nel gruppo di disponibilità. Per inciso, osservare gli usi dei parametri -ApplicationName
e -HostName
per distinguere visivamente i due risultati: si tratta di una tecnica comune che può essere usata per tracciare le connessioni e le relative finalità, oltre all'esempio -ApplicationIntent illustrato qui.
Esempio 16: Acquisire le statistiche di connessione tramite -StatisticsVariable parametro
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
In questo esempio viene illustrato come usare il parametro -StatisticsVariable
per acquisire informazioni sulla connessione, le istruzioni eseguite e il tempo di esecuzione durante l'esecuzione di alcuni T-SQL che crea una tabella temporanea, inserire un valore e infine eseguire una selezione per ottenere tutte le righe inserite.
Nota: quando la stessa query viene eseguita su più server ,ad esempio eseguendo il piping dei nomi dei server tramite il cmdlet , il StatisticsVariable
acquisisce una matrice di statistiche, una per ogni connessione. I risultati possono quindi essere aggregati usando, ad esempio, ($stats.IduRows | Measure-Object -Sum).Sum
.
Per altre informazioni sulle statistiche disponibili, vedere Statistiche provider per SQL Server.
Esempio 17: eseguire una query che decrittografa i dati recuperati dalle colonne crittografate usando Always Encrypted. Si supponga che la chiave master della colonna sia archiviata in un insieme di credenziali delle chiavi in 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
Parametri
-AbortOnError
Indica che questo cmdlet arresta il comando di SQL Server e restituisce un livello di errore alla variabile ERRORLEVEL di Windows PowerShell se questo cmdlet rileva un errore.
Il livello di errore restituito è 1 se l'errore ha una gravità superiore a 10 e il livello di errore è 0 se l'errore ha una gravità pari o inferiore a 10.
Se viene specificato anche il parametro ErrorLevel, questo cmdlet restituisce 1 solo se la gravità del messaggio di errore è uguale o superiore al valore specificato per ErrorLevel.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-AccessToken
Token di accesso usato per eseguire l'autenticazione a SQL Server, come alternativa all'autenticazione utente/password o windows.
Può essere usato, ad esempio, per connettersi a SQL Azure DB
e SQL Azure Managed Instance
usando un Service Principal
o un Managed Identity
(vedere i riferimenti nella parte inferiore di questa pagina)
Negli scenari comuni, questo parametro viene ottenuto con qualcosa di simile a (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token
(richiede il modulo Az.Account)
Non specificare UserName, Passwordo credenziali quando si usa questo parametro.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-ApplicationIntent
Tipo di carico di lavoro dell'applicazione durante la connessione a un database in un gruppo di disponibilità di SQL Server.
I valori consentiti sono: ReadOnly e ReadWrite.
Tipo: | ApplicationIntent |
Valori accettati: | ReadWrite, ReadOnly |
Posizione: | Named |
Valore predefinito: | ReadWrite |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-ApplicationName
Nome dell'applicazione associata alla connessione.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | .NET SqlClient Data Provider |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-ConnectionString
Specifica una stringa di connessione da connettere al server.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-ConnectionTimeout
Specifica il numero di secondi in cui si verifica il timeout di questo cmdlet se non riesce a connettersi correttamente a un'istanza del motore di database. Il valore di timeout deve essere un valore intero compreso tra 0 e 65534. Se si specifica 0, i tentativi di connessione non si verifica il timeout.
Tipo: | Int32 |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Credential
Oggetto PSCredential i cui campi Nome utente e Password verranno usati per connettersi all'istanza di SQL.
Tipo: | PSCredential |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Database
Specifica il nome di un database. Questo cmdlet si connette a questo database nell'istanza specificata nel parametro ServerInstance.
Se il parametro Database non viene specificato, il database utilizzato dipende dal fatto che il percorso corrente specifichi sia la cartella SQLSERVER:\SQL che il nome di un database. Se il percorso specifica sia la cartella SQL che il nome di un database, questo cmdlet si connette al database specificato nel percorso. Se il percorso non è basato sulla cartella SQL o il percorso non contiene un nome di database, questo cmdlet si connette al database predefinito per l'ID di accesso corrente. Se si specifica l'opzione del parametro IgnoreProviderContext, questo cmdlet non considera alcun database specificato nel percorso corrente e si connette al database definito come predefinito per l'ID di accesso corrente.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-DedicatedAdministratorConnection
Indica che questo cmdlet usa una connessione amministrativa dedicata per connettersi a un'istanza del motore di database.
L'applicazione livello dati viene usata dagli amministratori di sistema per azioni quali la risoluzione dei problemi di istanze che non accetteranno nuove connessioni standard.
L'istanza deve essere configurata per supportare l'applicazione livello dati.
Se l'applicazione livello dati non è abilitata, questo cmdlet segnala un errore e non verrà eseguito.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-DisableCommands
Indica che questo cmdlet disattiva alcune funzionalità di sqlcmd che potrebbero compromettere la sicurezza durante l'esecuzione in file batch.
Impedisce che le variabili di Windows PowerShell vengano passate allo script di Invoke-Sqlcmd.
Lo script di avvio specificato nella variabile di scripting SQLCMDINI non viene eseguito.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-DisableVariables
Indica che questo cmdlet ignora le variabili di scripting sqlcmd. Ciò è utile quando uno script contiene molte istruzioni INSERT che possono contenere stringhe con lo stesso formato delle variabili, ad esempio $(variable_name).
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Encrypt
Tipo di crittografia da usare per la connessione a SQL Server.
Questo valore esegue il mapping alla proprietà Encrypt
SqlConnectionEncryptOption
sull'oggetto SqlConnection del driver Microsoft.Data.SqlClient.
Se non specificato, il valore predefinito è Mandatory
.
Questo parametro è nuovo nella versione 22 del modulo. Per altri dettagli, vedere
Strict Connection Encryption
in collegamenti correlati.
Tipo: | String |
Valori accettati: | Mandatory, Optional, Strict |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-EncryptConnection
Indica che questo cmdlet usa la crittografia SSL/TLS (Secure Sockets Layer) per la connessione all'istanza del motore di database specificato nel parametro ServerInstance.
A partire dalla versione 22 del modulo, questo parametro è deprecato. Le connessioni vengono crittografate per impostazione predefinita. Prendere in considerazione l'uso del nuovo parametro -Encrypt. Per altri dettagli, vedere
Strict Connection Encryption
in collegamenti correlati.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-ErrorLevel
Specifica che questo cmdlet visualizza solo i messaggi di errore il cui livello di gravità è uguale o superiore al valore specificato. Tutti i messaggi di errore vengono visualizzati se questo parametro non è specificato o impostato su 0. I livelli di gravità degli errori del motore di database sono compresi tra 1 e 24.
Tipo: | Int32 |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-FailoverPartner
Nome o indirizzo del server partner a cui connettersi se il server primario è inattivo.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | "" |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-HostName
Specifica un nome di workstation. Il nome della workstation viene segnalato dalla stored procedure di sistema sp_who e nella colonna nome host della vista del catalogo sys.processes. Se questo parametro non viene specificato, il valore predefinito è il nome del computer in cui viene eseguito Invoke-Sqlcmd. Questo parametro può essere usato per identificare sessioni di Invoke-Sqlcmd diverse.
Tipo: | String |
Alias: | WorkstationID |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-HostNameInCertificate
Nome host da usare per convalidare il certificato TLS/SSL di SQL Server. È necessario passare questo parametro se l'istanza di SQL Server è abilitata per Forza crittografia e si vuole connettersi a un'istanza usando nome host/nome breve. Se questo parametro viene omesso, è necessario passare il nome di dominio completo (FQDN) a -ServerInstance per connettersi a un'istanza di SQL Server abilitata per Forza crittografia.
Questo parametro è nuovo nella versione 22 del modulo. Per altri dettagli, vedere
Strict Connection Encryption
in collegamenti correlati.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-IgnoreProviderContext
Indica che questo cmdlet ignora il contesto del database stabilito dal percorso SQLSERVER:\SQL corrente. Se il parametro Database non è specificato, questo cmdlet usa il database predefinito per l'ID di accesso corrente o l'account di Windows.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-IncludeSqlUserErrors
Indica che questo cmdlet restituisce errori di script utente SQL che altrimenti vengono ignorati per impostazione predefinita. Se questo parametro viene specificato, questo cmdlet corrisponde al comportamento predefinito dell'utilità sqlcmd.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-InputFile
Specifica un file da utilizzare come input della query per questo cmdlet. Il file può contenere istruzioni Transact-SQL, istruzioni XQuery e comandi sqlcmd e variabili di scripting. Specificare il percorso completo del file. È previsto che il file venga codificato con UTF-8.
È consigliabile eseguire script solo da origini attendibili. Assicurarsi che tutti gli script di input siano protetti con le autorizzazioni NTFS appropriate.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-KeyVaultAccessToken
Specifica un token di accesso per gli insiemi di credenziali delle chiavi in Azure Key Vault. Usare questo parametro se una colonna su cui eseguire query è protetta con Always Encrypted usando una chiave master della colonna archiviata in un insieme di credenziali delle chiavi in Azure Key Vault. In alternativa, è possibile eseguire l'autenticazione in Azure con Add-SqlAzureAuthenticationContext prima di chiamare questo cmdlet.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-ManagedHsmAccessToken
Specifica un token di accesso per i moduli di protezione hardware gestiti in Azure Key Vault. Usare questo parametro se una colonna su cui eseguire query è protetta con Always Encrypted usando una chiave master della colonna archiviata in un modulo di protezione hardware gestito in Azure Key Vault. In alternativa, è possibile eseguire l'autenticazione in Azure con Add-SqlAzureAuthenticationContext prima di chiamare questo cmdlet.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-MaxBinaryLength
Specifica il numero massimo di byte restituiti per le colonne con tipi di dati stringa binaria, ad esempio binary e varbinary. Il valore predefinito è 1.024 byte.
Tipo: | Int32 |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-MaxCharLength
Specifica il numero massimo di caratteri restituiti per le colonne con tipi di dati Unicode o carattere, ad esempio char, nchar, varchar e nvarchar. Il valore predefinito è 4.000 caratteri.
Tipo: | Int32 |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-MultiSubnetFailover
Se l'applicazione si connette a un gruppo di disponibilità AlwaysOn in subnet diverse, il passaggio di questo parametro fornisce un rilevamento più rapido di e la connessione al server attivo (attualmente).
Nota: il passaggio di -MultiSubnetFailover non è necessario con .NET Framework 4.6.1 o versioni successive.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-NewPassword
Specifica una nuova password per un ID di accesso di autenticazione di SQL Server. Questo cmdlet modifica la password e quindi viene chiusa. È inoltre necessario specificare i parametri Nome utente e Password, con Password che specifica la password corrente per l'account di accesso.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-OutputAs
Specifica il tipo dei risultati ottenuti da questo cmdlet.
Se non si specifica un valore per questo parametro, il cmdlet imposta il valore su DataRows.
Tipo: | OutputType |
Alias: | As |
Valori accettati: | DataSet, DataTables, DataRows |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-OutputSqlErrors
Indica che questo cmdlet visualizza i messaggi di errore nell'output Invoke-Sqlcmd.
Tipo: | Boolean |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Password
Specifica la password per l'ID di accesso di autenticazione di SQL Server specificato nel parametro Username . Le password fanno distinzione tra maiuscole e minuscole. Quando possibile, usare l'autenticazione di Windows. Non usare una password vuota, se possibile usare una password complessa.
Se si specifica il parametro Password seguito dalla password, la password è visibile a chiunque possa visualizzare il monitor.
Se si codifica la password seguita dalla password in uno script .ps1, chiunque legge il file di script visualizzerà la password.
Assegnare le autorizzazioni NTFS appropriate al file per impedire ad altri utenti di leggere il file.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-ProgressAction
Determina in che modo PowerShell risponde agli aggiornamenti dello stato generati da uno script, un cmdlet o un provider, ad esempio le barre di stato generate dal cmdlet Write-Progress. Il cmdlet Write-Progress crea barre di stato che mostrano lo stato di un comando.
Tipo: | ActionPreference |
Alias: | proga |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Query
Specifica una o più query eseguite da questo cmdlet. Le query possono essere Transact-SQL o istruzioni XQuery o comandi sqlcmd. È possibile specificare più query separate da un punto e virgola. Non specificare il separatore SQLcmd GO. Escape di tutte le virgolette doppie incluse nella stringa. Prendere in considerazione l'uso di identificatori tra parentesi quadre, ad esempio [MyTable] anziché identificatori tra virgolette, ad esempio "MyTable".
Tipo: | String |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-QueryTimeout
Specifica il numero di secondi prima del timeout delle query. Se non viene specificato un valore di timeout, le query non eseguono il timeout. Il timeout deve essere un valore intero compreso tra 1 e 65535.
Tipo: | Int32 |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-ServerInstance
Specifica una stringa di caratteri o un oggetto SMO (SQL Server Management Objects) che specifica il nome di un'istanza del motore di database. Per le istanze predefinite, specificare solo il nome del computer MyComputer. Per le istanze denominate, usare il formato NomeComputer\NomeIstanza.
Tipo: | PSObject |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-SeverityLevel
Specifica il limite inferiore per il livello di gravità del messaggio di errore restituito dalla variabile ERRORLEVEL di Windows PowerShell.
Questo cmdlet restituisce il livello di gravità più alto dai messaggi di errore generati dalle query eseguite, a condizione che la gravità sia uguale o superiore a quella specificata nel parametro SeverityLevel.
Se SeverityLevel non è specificato o impostato su 0, questo cmdlet restituisce 0 su ERRORLEVEL.
I livelli di gravità dei messaggi di errore del motore di database sono compresi tra 1 e 24.
Questo cmdlet non segnala i livelli di gravità per i messaggi informativi con gravità pari a 10
Tipo: | Int32 |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-StatisticsVariable
Specificare il nome di una variabile di PowerShell a cui verranno assegnate le statistiche di runtime di SQL Server quando viene eseguito il cmdlet.
L'uso comune per questo parametro consiste nell'acquisire la ExecutionTime
(la quantità cumulativa di tempo (in millisecondi) impiegato dal provider per l'elaborazione del cmdlet) o IduRows
(il numero totale di righe interessate dalle istruzioni INSERT, DELETE e UPDATE).
Per altre informazioni, vedere statistiche del provider per SQL Server.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-SuppressProviderContextWarning
Indica che questo cmdlet elimina l'avviso che questo cmdlet è stato usato nel contesto del database dall'impostazione del percorso SQLSERVER:\SQL corrente per stabilire il contesto del database per il cmdlet.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-TrustServerCertificate
Indica se il canale verrà crittografato durante il bypass della catena di certificati per convalidare l'attendibilità.
Questo parametro è nuovo nella versione 22 del modulo. Per altri dettagli, vedere
Strict Connection Encryption
in collegamenti correlati.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Username
Specifica l'ID di accesso per stabilire una connessione di autenticazione di SQL Server a un'istanza del motore di database.
La password deve essere specificata tramite il parametro Password.
Se nome utente e password non sono specificati, questo cmdlet tenta una connessione di autenticazione di Windows usando l'account di Windows che esegue la sessione di Windows PowerShell. Quando possibile, usare l'autenticazione di Windows.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Variable
Specifica un set di variabili di scripting sqlcmd da usare nello script sqlcmd e imposta un valore per le variabili.
Usare una matrice di Windows PowerShell per specificare più variabili e i relativi valori; in alternativa, usare un Hashtable
in cui la chiave rappresenta il nome della variabile e il valore della variabile.
Quando si usa una matrice, i valori dei parametri vengono tagliati. Questo comportamento è stato mantenuto nella versione 22 del modulo per garantire la compatibilità con le versioni precedenti con v21. È consigliabile non basarsi su questo comportamento, che potrebbe cambiare in una versione principale futura del modulo.
Il parametro di tipo
Hashtable
è disponibile solo nella versione 22+ del modulo.
Tipo: | PSObject |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
Input
System.Management.Automation.PSObject
Output
System.Object