Invoke-Sqlcmd

Menjalankan skrip yang berisi pernyataan yang didukung oleh utilitas SQLCMD SQL Server.

Sintaks

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>]

Deskripsi

Cmdlet Invoke-Sqlcmd menjalankan skrip yang berisi bahasa dan perintah yang didukung oleh utilitas SQLCMD SQL Server.

Perintah yang didukung adalah pernyataan Transact-SQL dan subset sintaks XQuery yang didukung oleh mesin database.

Cmdlet ini juga menerima banyak perintah yang didukung secara asli oleh SQLCMD, seperti GO dan QUIT.

Cmdlet ini juga menerima variabel pembuatan skrip SQLCMD, seperti SQLCMDUSER. Secara default, cmdlet ini tidak mengatur variabel pembuatan skrip SQLCMD.

Cmdlet ini tidak mendukung penggunaan perintah yang terutama terkait dengan pengeditan skrip interaktif.

Perintah yang tidak didukung meliputi :!, :connect, :error, :out, :ed, :list, :listvar, :reset, :p erftrace, dan :serverlist.

Saat cmdlet ini dijalankan, tataan hasil pertama yang dikembalikan skrip ditampilkan sebagai tabel yang diformat.

Jika tataan hasil berikutnya berisi daftar kolom yang berbeda dari yang pertama, kumpulan hasil tersebut tidak ditampilkan.

Jika tataan hasil berikutnya setelah kumpulan pertama memiliki daftar kolom yang sama, barisnya ditambahkan ke tabel yang diformat yang berisi baris yang dikembalikan oleh kumpulan hasil pertama.

Anda dapat menampilkan output pesan SQL Server, seperti yang dihasilkan dari pernyataan SQL PRINT, dengan menentukan parameter Verbose.

Contoh

Contoh 1: Menyambungkan ke instans bernama dan menjalankan skrip

Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery" -ServerInstance "MyComputer\MainInstance"

TimeOfQuery
-----------
9/21/2017 2:48:24 PM

Perintah ini terhubung ke instans bernama mesin SQL Database di komputer dan menjalankan skrip Transact-SQL dasar.

Contoh 2: Memanggil perintah dalam file skrip dan menyimpan output dalam file teks

Invoke-Sqlcmd -InputFile "C:\ScriptFolder\TestSqlCmd.sql" | Out-File -FilePath "C:\ScriptFolder\TestSqlCmd.rpt"
Output sent to TestSqlCmd.rpt.

Perintah ini membaca file yang berisi pernyataan Transact-SQL dan perintah SQLCMD, menjalankan file, dan menulis output ke file lain.

File output mungkin berisi informasi kepemilikan, jadi Anda harus mengamankan file output dengan izin NTFS yang sesuai.

Contoh 3: Memanggil skrip dan meneruskan nilai variabel dari string

$StringArray = "MYVAR1='String1'", "MYVAR2='String2'"
Invoke-Sqlcmd -Query "SELECT `$(MYVAR1) AS Var1, `$(MYVAR2) AS Var2" -Variable $StringArray

Var1     Var2
----     ----
String1  String2

Perintah ini menggunakan array string karakter sebagai input ke parameter Variabel.

Array mendefinisikan beberapa variabel SQLCMD.

Tanda $ dalam pernyataan SELECT yang mengidentifikasi variabel SQLCMD diloloskan menggunakan karakter back-tick (').

Contoh 4: Memanggil skrip dan meneruskan variabel dari mesin 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

Perintah ini menggunakan Set-Location untuk menavigasi ke jalur penyedia SQL ServerWindows PowerShell untuk instans mesin SQL Database.

Kemudian memanggil Get-Item untuk mengambil objek SQL Management Object Server untuk digunakan sebagai parameter ServerInstance dari Invoke-Sqlcmd.

Contoh 5: Menjalankan kueri dan menampilkan output verbose

Set-Location "SQLSERVER:\SQL\MyComputer\MainInstance"
Invoke-SqlCmd -Query "PRINT N'abc'" -Verbose
VERBOSE: abc

Perintah ini menggunakan parameter Windows PowerShellVerbose untuk mengembalikan output pesan dari perintah SQL PRINT.

Contoh 6: Memanggil perintah menggunakan string posisi sebagai 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

Perintah ini menggunakan string posisi untuk menyediakan input ke parameter Kueri.

Ini juga menunjukkan bagaimana Invoke-Sqlcmd menggunakan jalur saat ini untuk mengatur konteks database ke MyDatabase.

Contoh 7: Mengambil data ke dalam objek Himpunan Data

$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 }

Perintah ini menggunakan parameter Sebagai DataSet untuk mengambil data ke dalam objek .Net System.Data.DataSet dan menyimpan hasilnya dalam variabel '$DS'. Objek dapat digunakan untuk pemrosesan lebih lanjut.

Contoh 8: Mendapatkan kumpulan kolom tertentu

$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

Perintah pertama menggunakan parameter Sebagai DataTables untuk mengambil data ke dalam kumpulan objek .Net System.Data.DataTable. Perintah mendapatkan dua tabel dengan kumpulan kolom yang berbeda.

Setiap tabel dapat diproses satu per satu, berdasarkan skemanya sendiri.

Contoh 9: Mendapatkan kontrol penuh atas koneksi

Invoke-Sqlcmd -Query "SELECT COUNT(*) AS Count FROM MyTable" -ConnectionString "Data Source=MYSERVER;Initial Catalog=MyDatabase;Integrated Security=True;ApplicationIntent=ReadOnly"
Count
-----
127432

Perintah ini menggunakan parameter -ConnectionString untuk mendapatkan kontrol penuh atas koneksi yang ditetapkan cmdlet ini, alih-alih Invoke-Sqlcmd untuk membangun string koneksi berdasarkan parameter yang diteruskan pada baris perintah.

Ini berguna untuk properti yang kurang umum yang mungkin ingin Anda gunakan.

Contoh 10: Jalankan prosedur tersimpan dan tangkap kesalahan 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
...

Perintah ini menggunakan parameter -OutputSqlErrors untuk melaporkan kesalahan kepada pengguna. Perhatikan bahwa pesan kesalahan dalam hal ini memberikan informasi tambahan seperti nama SP dan nomor baris tempat kesalahan terjadi.

Contoh 11: Menyambungkan ke database Azure SQL (atau Instans Terkelola) menggunakan Token Akses

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'

Contoh 12: Menyambungkan ke Database Azure SQL (atau Instans Terkelola) menggunakan Perwakilan Layanan

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'

Contoh 13: Menyambungkan ke Database Azure SQL (atau Instans Terkelola) menggunakan Identitas Terkelola yang Ditetapkan Sistem (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'

Contoh 14: Menyambungkan ke Database Azure SQL (atau Instans Terkelola) menggunakan Identitas Terkelola yang Ditetapkan Pengguna (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'

Contoh 15: Menyambungkan ke Grup Ketersediaan yang dikonfigurasi untuk perutean Read-Only menggunakan -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

yang menunjukkan bahwa, tergantung pada nilai -ApplicationIntent parameter, koneksi dirutekan ke server yang berbeda di AG. Kebetulan, amati penggunaan -ApplicationName parameter dan -HostName untuk membedakan dua hasil secara visual: ini adalah teknik umum yang dapat digunakan untuk melacak koneksi dan niatnya, di luar contoh -ApplicationIntent yang diilustrasikan di sini.

Contoh 16: Mengambil statistik koneksi melalui parameter -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

Contoh ini menunjukkan cara menggunakan -StatisticsVariable parameter untuk mengambil informasi tentang koneksi, pernyataan yang dijalankan, dan waktu eksekusi saat menjalankan beberapa T-SQL yang membuat tabel sementara, menyisipkan beberapa nilai, dan akhirnya mengeluarkan pilihan untuk mendapatkan semua baris yang disisipkan.

Catatan: ketika kueri yang sama dijalankan terhadap beberapa server (misalnya dengan menyalurkan nama server melalui cmdlet), StatisticsVariable mengambil array statistik, satu untuk setiap koneksi. Hasil kemudian dapat diagregasi dengan menggunakan, misalnya, ($stats.IduRows | Measure-Object -Sum).Sum.

Lihat Statistik Penyedia untuk SQL Server untuk informasi selengkapnya tentang statistik yang tersedia.

Contoh 17: Jalankan kueri yang mendekripsi data yang diambil dari kolom yang dienkripsi menggunakan Always Encrypted. Asumsikan kunci master kolom disimpan dalam brankas kunci di 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

Parameter

-AbortOnError

Menunjukkan bahwa cmdlet ini menghentikan perintah SQL Server dan mengembalikan tingkat kesalahan ke variabel ERRORLEVEL Windows PowerShell jika cmdlet ini mengalami kesalahan.

Tingkat kesalahan yang dikembalikan adalah 1 jika kesalahan memiliki tingkat keparahan yang lebih tinggi dari 10, dan tingkat kesalahan adalah 0 jika kesalahan memiliki tingkat keparahan 10 atau kurang.

Jika parameter ErrorLevel juga ditentukan, cmdlet ini mengembalikan 1 hanya jika tingkat keparahan pesan kesalahan juga sama dengan atau lebih tinggi dari nilai yang ditentukan untuk ErrorLevel.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AccessToken

Token akses yang digunakan untuk mengautentikasi ke SQL Server, sebagai alternatif untuk pengguna/kata sandi atau Autentikasi Windows.

Ini dapat digunakan, misalnya, untuk menyambungkan dan SQL Azure DBSQL Azure Managed Instance menggunakan Service Principal atau Managed Identity (lihat referensi di bagian bawah halaman ini)

Dalam skenario umum, parameter ini diperoleh dengan sesuatu seperti (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token (memerlukan modul Az.Account)

Jangan tentukan Nama Pengguna, Kata Sandi, atau Kredensial saat menggunakan parameter ini.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ApplicationIntent

Jenis beban kerja aplikasi saat menyambungkan ke database dalam Grup Ketersediaan SQL Server.

Nilai yang diizinkan adalah: ReadOnly dan ReadWrite.

Type:ApplicationIntent
Accepted values:ReadWrite, ReadOnly
Position:Named
Default value:ReadWrite
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ApplicationName

Nama aplikasi yang terkait dengan koneksi.

Type:String
Position:Named
Default value:.NET SqlClient Data Provider
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ConnectionString

Menentukan string koneksi untuk menyambungkan ke server.

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-ConnectionTimeout

Menentukan jumlah detik ketika cmdlet ini kehabisan waktu jika tidak berhasil tersambung ke instans Mesin Database. Nilai batas waktu harus berupa nilai bilangan bulat antara 0 dan 65534. Jika 0 ditentukan, upaya koneksi tidak kehabisan waktu.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

Objek PSCredential yang bidang Nama Pengguna dan Kata Sandinya akan digunakan untuk menyambungkan ke instans SQL.

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Database

Menentukan nama database. Cmdlet ini tersambung ke database ini dalam instans yang ditentukan dalam parameter ServerInstance.

Jika parameter Database tidak ditentukan, database yang digunakan bergantung pada apakah jalur saat ini menentukan folder SQLSERVER:\SQL dan nama database. Jika jalur menentukan folder SQL dan nama database, cmdlet ini tersambung ke database yang ditentukan di jalur. Jika jalur tidak didasarkan pada folder SQL, atau jalur tidak berisi nama database, cmdlet ini tersambung ke database default untuk ID masuk saat ini. Jika Anda menentukan sakelar parameter IgnoreProviderContext, cmdlet ini tidak mempertimbangkan database apa pun yang ditentukan di jalur saat ini, dan menyambungkan ke database yang ditentukan sebagai default untuk ID masuk saat ini.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DedicatedAdministratorConnection

Menunjukkan bahwa cmdlet ini menggunakan Koneksi Administrator Khusus (DAC) untuk menyambungkan ke instans Mesin Database.

DAC digunakan oleh administrator sistem untuk tindakan seperti pemecahan masalah instans yang tidak akan menerima koneksi standar baru.

Instans harus dikonfigurasi untuk mendukung DAC.

Jika DAC tidak diaktifkan, cmdlet ini melaporkan kesalahan dan tidak akan berjalan.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DisableCommands

Menunjukkan bahwa cmdlet ini menonaktifkan beberapa fitur sqlcmd yang mungkin membahayakan keamanan saat dijalankan dalam file batch.

Ini mencegah variabel Windows PowerShell diteruskan ke skrip Invoke-Sqlcmd.

Skrip startup yang ditentukan dalam variabel pembuatan skrip SQLCMDINI tidak dijalankan.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DisableVariables

Menunjukkan bahwa cmdlet ini mengabaikan variabel pembuatan skrip sqlcmd. Ini berguna ketika skrip berisi banyak pernyataan INSERT yang mungkin berisi string yang memiliki format yang sama dengan variabel, seperti $(variable_name).

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encrypt

Jenis enkripsi yang digunakan saat menyambungkan ke SQL Server.

Nilai ini memetakan ke Encrypt properti SqlConnectionEncryptOption pada objek SqlConnection dari driver Microsoft.Data.SqlClient.

Ketika tidak ditentukan, nilai defaultnya adalah Mandatory.

Parameter ini baru dalam v22 modul. Untuk detail selengkapnya, lihat Strict Connection Encryption di bawah Tautan Terkait.

Type:String
Accepted values:Mandatory, Optional, Strict
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EncryptConnection

Menunjukkan bahwa cmdlet ini menggunakan enkripsi Secure Sockets Layer (SSL/TLS) untuk koneksi ke instans Mesin Database yang ditentukan dalam parameter ServerInstance.

Mulai dari modul v22, parameter ini tidak digunakan lagi. Connections dienkripsi secara default. Silakan, pertimbangkan untuk menggunakan parameter -Encrypt baru sebagai gantinya. Untuk detail selengkapnya, lihat Strict Connection Encryption di bawah Tautan Terkait.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ErrorLevel

Menentukan bahwa cmdlet ini hanya menampilkan pesan kesalahan yang tingkat keparahannya sama dengan atau lebih tinggi dari nilai yang ditentukan. Semua pesan kesalahan ditampilkan jika parameter ini tidak ditentukan atau diatur ke 0. Tingkat keparahan kesalahan Mesin Database berkisar antara 1 hingga 24.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FailoverPartner

Nama atau alamat server mitra yang akan disambungkan jika server utama tidak berfungsi.

Type:String
Position:Named
Default value:""
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HostName

Menentukan nama stasiun kerja. Nama stasiun kerja dilaporkan oleh prosedur tersimpan sistem sp_who dan di kolom nama host tampilan katalog sys.processes. Jika parameter ini tidak ditentukan, defaultnya adalah nama komputer tempat Invoke-Sqlcmd dijalankan. Parameter ini dapat digunakan untuk mengidentifikasi sesi Invoke-Sqlcmd yang berbeda.

Type:String
Aliases:WorkstationID
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HostNameInCertificate

Nama host yang akan digunakan dalam memvalidasi sertifikat TLS/SSL SQL Server. Anda harus meneruskan parameter ini jika instans SQL Server Anda diaktifkan untuk Enkripsi Paksa dan Anda ingin terhubung ke instans menggunakan nama host/nama pendek. Jika parameter ini dihilangkan, maka meneruskan Nama Domain yang Sepenuhnya Memenuhi Syarat (FQDN) ke -ServerInstance diperlukan untuk terhubung ke instans SQL Server yang diaktifkan untuk Enkripsi Paksa.

Parameter ini baru dalam v22 modul. Untuk detail selengkapnya, lihat Strict Connection Encryption di bawah Tautan Terkait.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IgnoreProviderContext

Menunjukkan bahwa cmdlet ini mengabaikan konteks database yang ditetapkan oleh jalur SQLSERVER:\SQL saat ini. Jika parameter Database tidak ditentukan, cmdlet ini menggunakan database default untuk ID masuk atau akun Windows saat ini.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IncludeSqlUserErrors

Menunjukkan bahwa cmdlet ini mengembalikan kesalahan skrip pengguna SQL yang diabaikan secara default. Jika parameter ini ditentukan, cmdlet ini cocok dengan perilaku default utilitas sqlcmd.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputFile

Menentukan file yang akan digunakan sebagai input kueri ke cmdlet ini. File dapat berisi pernyataan Transact-SQL, pernyataan XQuery, dan perintah sqlcmd dan variabel pembuatan skrip. Tentukan jalur lengkap ke file. Spasi tidak diperbolehkan di jalur file atau nama file. File diharapkan dikodekan menggunakan UTF-8.

Anda seharusnya hanya menjalankan skrip dari sumber tepercaya. Pastikan semua skrip input diamankan dengan izin NTFS yang sesuai.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-KeyVaultAccessToken

Menentukan token akses untuk brankas kunci di Azure Key Vault. Gunakan parameter ini jika ada kolom yang akan dikueri dilindungi dengan Always Encrypted menggunakan kunci master kolom yang disimpan dalam brankas kunci di Azure Key Vault. Atau, Anda dapat mengautentikasi ke Azure dengan Add-SqlAzureAuthenticationContext sebelum memanggil cmdlet ini.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ManagedHsmAccessToken

Menentukan token akses untuk HSM terkelola di Azure Key Vault. Gunakan parameter ini jika ada kolom yang akan dikueri dilindungi dengan Always Encrypted menggunakan kunci master kolom yang disimpan dalam HSM terkelola di Azure Key Vault. Atau, Anda dapat mengautentikasi ke Azure dengan Add-SqlAzureAuthenticationContext sebelum memanggil cmdlet ini.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaxBinaryLength

Menentukan jumlah maksimum byte yang dikembalikan untuk kolom dengan jenis data string biner, seperti biner dan varbinary. Nilai defaultnya adalah 1.024 byte.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaxCharLength

Menentukan jumlah maksimum karakter yang dikembalikan untuk kolom dengan karakter atau jenis data Unicode, seperti karakter, nchar, varchar, dan nvarchar. Nilai defaultnya adalah 4.000 karakter.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MultiSubnetFailover

Jika aplikasi Anda terhubung ke Grup Ketersediaan AlwaysOn (AG) pada subnet yang berbeda, meneruskan parameter ini memberikan deteksi dan koneksi yang lebih cepat ke server aktif (saat ini).

Catatan: passing -MultiSubnetFailover tidak diperlukan dengan .NET Framework 4.6.1 atau versi yang lebih baru.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-NewPassword

Menentukan kata sandi baru untuk ID masuk autentikasi SQL Server. Cmdlet ini mengubah kata sandi lalu keluar. Anda juga harus menentukan parameter Nama Pengguna dan Kata Sandi, dengan Kata Sandi yang menentukan kata sandi saat ini untuk login.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-OutputAs

Menentukan jenis hasil yang didapat cmdlet ini.

Jika Anda tidak menentukan nilai untuk parameter ini, cmdlet mengatur nilai ke 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

Menunjukkan bahwa cmdlet ini menampilkan pesan kesalahan dalam output Invoke-Sqlcmd.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Password

Menentukan kata sandi untuk ID masuk autentikasi SQL Server yang ditentukan dalam parameter Nama pengguna. Kata sandi peka huruf besar/kecil. Jika memungkinkan, gunakan Autentikasi Windows. Jangan gunakan kata sandi kosong, jika memungkinkan gunakan kata sandi yang kuat.

Jika Anda menentukan parameter Kata Sandi diikuti oleh kata sandi Anda, kata sandi akan terlihat oleh siapa pun yang dapat melihat monitor Anda.

Jika Anda mengodekan Kata Sandi diikuti dengan kata sandi Anda dalam skrip .ps1, siapa pun yang membaca file skrip akan melihat kata sandi Anda.

Tetapkan izin NTFS yang sesuai ke file untuk mencegah pengguna lain membaca file.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Query

Menentukan satu atau beberapa kueri yang dijalankan cmdlet ini. Kueri dapat berupa pernyataan Transact-SQL atau XQuery, atau perintah sqlcmd. Beberapa kueri yang dipisahkan oleh titik koma dapat ditentukan. Jangan tentukan pemisah sqlcmd GO. Lolos dari tanda kutip ganda yang disertakan dalam string. Pertimbangkan untuk menggunakan pengidentifikasi kurung siku seperti [MyTable] alih-alih pengidentifikasi yang dikutip seperti "MyTable".

Type:String
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-QueryTimeout

Menentukan jumlah detik sebelum waktu kueri habis. Jika nilai batas waktu tidak ditentukan, kueri tidak kehabisan waktu. Batas waktu harus berupa nilai bilangan bulat antara 1 dan 65535.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ServerInstance

Menentukan string karakter atau objek SQL Server Management Objects (SMO) yang menentukan nama instans Mesin Database. Untuk instans default, hanya tentukan nama komputer: MyComputer. Untuk instans bernama, gunakan format ComputerName\InstanceName.

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-SeverityLevel

Menentukan batas bawah untuk tingkat keparahan pesan kesalahan yang dikembalikan cmdlet ini ke variabel errorLEVEL Windows PowerShell.

Cmdlet ini mengembalikan tingkat keparahan tertinggi dari pesan kesalahan yang dihasilkan oleh kueri yang dijalankannya, asalkan tingkat keparahan sama dengan atau lebih tinggi dari yang ditentukan dalam parameter SeverityLevel.

Jika SeverityLevel tidak ditentukan atau diatur ke 0, cmdlet ini mengembalikan 0 ke ERRORLEVEL.

Tingkat keparahan pesan kesalahan Mesin Database berkisar antara 1 hingga 24.

Cmdlet ini tidak melaporkan tingkat keparahan untuk pesan informasi yang memiliki tingkat keparahan 10

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-StatisticsVariable

Tentukan nama variabel PowerShell yang akan ditetapkan statistik run-time SQL Server saat cmdlet dijalankan.

Penggunaan umum untuk parameter ini adalah untuk menangkap ExecutionTime (jumlah waktu kumulatif (dalam milidetik) yang telah dihabiskan penyedia untuk memproses cmdlet), atau IduRows (jumlah total baris yang terpengaruh oleh pernyataan INSERT, DELETE, dan UPDATE).

Untuk detail selengkapnya, lihat Statistik Penyedia untuk SQL Server.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SuppressProviderContextWarning

Menunjukkan bahwa cmdlet ini menekan peringatan yang telah digunakan cmdlet ini dalam konteks database dari pengaturan jalur SQLSERVER:\SQL saat ini untuk menetapkan konteks database untuk cmdlet.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TrustServerCertificate

Menunjukkan apakah saluran akan dienkripsi saat melewati rantai sertifikat untuk memvalidasi kepercayaan.

Parameter ini baru dalam v22 modul. Untuk detail selengkapnya, lihat Strict Connection Encryption di bawah Tautan Terkait.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Username

Menentukan ID masuk untuk membuat koneksi Autentikasi SQL Server ke instans Mesin Database.

Kata sandi harus ditentukan melalui parameter Kata Sandi.

Jika Nama Pengguna dan Kata Sandi tidak ditentukan, cmdlet ini mencoba koneksi Autentikasi Windows menggunakan akun Windows yang menjalankan sesi Windows PowerShell. Jika memungkinkan, gunakan Autentikasi Windows.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Variable

Menentukan sekumpulan variabel skrip sqlcmd untuk digunakan dalam skrip sqlcmd, dan menetapkan nilai untuk variabel.

Gunakan array Windows PowerShell untuk menentukan beberapa variabel dan nilainya; atau, gunakan Hashtable tempat kunci mewakili nama variabel dan nilai variabel.

Saat menggunakan array, nilai parameter dipangkas. Perilaku ini disimpan di v22 modul untuk kompatibilitas mundur dengan v21. Disarankan untuk tidak mengandalkan perilaku ini, yang dapat berubah dalam versi utama modul di masa mendatang.

Parameter jenis Hashtable hanya tersedia di v22+ modul.

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Input

System.Management.Automation.PSObject

Output

System.Object