Bagikan melalui


Invoke-Sqlcmd

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

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

Deskripsi

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

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 kumpulan hasil berikutnya berisi daftar kolom yang berbeda dari yang pertama, kumpulan hasil tersebut tidak ditampilkan.

Jika kumpulan hasil berikutnya setelah set pertama memiliki daftar kolom yang sama, barisnya ditambahkan ke tabel yang diformat yang berisi baris yang dikembalikan oleh tataan 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 tersambung ke instans bernama Mesin Database SQL 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 menentukan 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 SQL Database Engine.

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 dibuat 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 ambil 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 kasus ini memberikan informasi tambahan seperti nama SP dan nomor baris tempat kesalahan terjadi.

Contoh 11: Menyambungkan ke Azure SQL Database (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 Azure SQL Database (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 Azure SQL Database (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 Azure SQL Database (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 parameter -ApplicationIntent, koneksi dirutekan ke server yang berbeda di AG. Kebetulan, amati penggunaan parameter -ApplicationName 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 parameter -StatisticsVariable 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 pilih untuk mendapatkan semua baris yang disisipkan.

Catatan: ketika kueri yang sama dijalankan terhadap beberapa server (misalnya dengan memilah 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 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.

Jenis:SwitchParameter
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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 ke SQL Azure DB dan SQL 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 UserName, Kata Sandi , atau Kredensial saat menggunakan parameter ini.

Jenis:String
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-ApplicationIntent

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

Nilai yang diizinkan adalah: ReadOnly dan ReadWrite.

Jenis:ApplicationIntent
Nilai yang diterima:ReadWrite, ReadOnly
Position:Named
Nilai default:ReadWrite
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-ApplicationName

Nama aplikasi yang terkait dengan koneksi.

Jenis:String
Position:Named
Nilai default:.NET SqlClient Data Provider
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-ConnectionString

Menentukan string koneksi untuk menyambungkan ke server.

Jenis:String
Position:Named
Nilai default:None
Diperlukan:True
Terima input alur:False
Terima karakter wildcard: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.

Jenis:Int32
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-Credential

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

Jenis:PSCredential
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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 dalam 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 didefinisikan sebagai default untuk ID masuk saat ini.

Jenis:String
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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 instans pemecahan masalah 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.

Jenis:SwitchParameter
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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.

Jenis:SwitchParameter
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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).

Jenis:SwitchParameter
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-Encrypt

Jenis enkripsi yang akan digunakan saat menyambungkan ke SQL Server.

Nilai ini memetakan ke properti EncryptSqlConnectionEncryptOption pada objek SqlConnection 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.

Jenis:String
Nilai yang diterima:Mandatory, Optional, Strict
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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. Koneksi dienkripsi secara default. Silakan, pertimbangkan untuk menggunakan parameter -Encrypt baru sebagai gantinya. Untuk detail selengkapnya, lihat Strict Connection Encryption di bawah Tautan Terkait.

Jenis:SwitchParameter
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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.

Jenis:Int32
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-FailoverPartner

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

Jenis:String
Position:Named
Nilai default:""
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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.

Jenis:String
Alias:WorkstationID
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-HostNameInCertificate

Nama host yang akan digunakan dalam memvalidasi sertifikat SQL Server TLS/SSL. 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.

Jenis:String
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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 saat ini atau akun Windows.

Jenis:SwitchParameter
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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.

Jenis:SwitchParameter
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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. File diharapkan dikodekan menggunakan UTF-8.

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

Jenis:String
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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.

Jenis:String
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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.

Jenis:String
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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.

Jenis:Int32
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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.

Jenis:Int32
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-MultiSubnetFailover

Jika aplikasi Anda tersambung 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: meneruskan -MultiSubnetFailover tidak diperlukan dengan .NET Framework 4.6.1 atau versi yang lebih baru.

Jenis:SwitchParameter
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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 masuk.

Jenis:String
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-OutputAs

Menentukan jenis hasil yang didapat cmdlet ini.

Jika Anda tidak menentukan nilai untuk parameter ini, cmdlet mengatur nilai ke DataRows.

Jenis:OutputType
Alias:As
Nilai yang diterima:DataSet, DataTables, DataRows
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-OutputSqlErrors

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

Jenis:Boolean
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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 membuat kode 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 dapat membaca file.

Jenis:String
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-ProgressAction

Menentukan bagaimana PowerShell merespons pembaruan kemajuan yang dihasilkan oleh skrip, cmdlet, atau penyedia, seperti bilah kemajuan yang dihasilkan oleh cmdlet Write-Progress. cmdlet Write-Progress membuat bilah kemajuan yang memperlihatkan status perintah.

Jenis:ActionPreference
Alias:proga
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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 seperti [MyTable] alih-alih pengidentifikasi yang dikutip seperti "MyTable".

Jenis:String
Position:0
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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.

Jenis:Int32
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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.

Jenis:PSObject
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:True
Terima karakter wildcard:False

-SeverityLevel

Menentukan batas bawah untuk tingkat keparahan pesan kesalahan cmdlet ini kembali 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

Jenis:Int32
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-StatisticsVariable

Tentukan nama variabel PowerShell yang akan diberi 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.

Jenis:String
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-SuppressProviderContextWarning

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

Jenis:SwitchParameter
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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.

Jenis:SwitchParameter
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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.

Jenis:String
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-Variable

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

Gunakan array Windows PowerShell untuk menentukan beberapa variabel dan nilainya; atau, gunakan Hashtable di mana kunci mewakili nama variabel dan nilai 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.

Jenis:PSObject
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

Input

System.Management.Automation.PSObject

Output

System.Object