Bagikan melalui


Invoke-Sqlcmd

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

Sintaks

ByConnectionParameters (Default)

Invoke-Sqlcmd
    [[-Query] <String>]
    [-ServerInstance <PSObject>]
    [-Database <String>]
    [-Encrypt <String>]
    [-EncryptConnection]
    [-Username <String>]
    [-AccessToken <PSObject>]
    [-Password <String>]
    [-Credential <PSCredential>]
    [-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>]

ByConnectionString

Invoke-Sqlcmd
    [[-Query] <String>]
    -ConnectionString <String>
    [-AccessToken <PSObject>]
    [-QueryTimeout <Int32>]
    [-ErrorLevel <Int32>]
    [-SeverityLevel <Int32>]
    [-MaxCharLength <Int32>]
    [-MaxBinaryLength <Int32>]
    [-AbortOnError]
    [-DisableVariables]
    [-DisableCommands]
    [-Variable <PSObject>]
    [-InputFile <String>]
    [-OutputSqlErrors <Boolean>]
    [-IncludeSqlUserErrors]
    [-OutputAs <OutputType>]
    [-KeyVaultAccessToken <PSObject>]
    [-ManagedHsmAccessToken <PSObject>]
    [-StatisticsVariable <String>]
    [<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 -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 pilih untuk mendapatkan semua baris yang disisipkan.

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

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.Accounts)

Jenis parameter dapat berupa string (token teks bersih) atau SecureString (token terenkripsi, seperti yang dikembalikan oleh versi cmdlet Get-AzAccessToken yang lebih baru.)

Jangan tentukan UserName, Password, atau Credential saat menggunakan parameter ini.

Properti parameter

Jenis:PSObject
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-ApplicationIntent

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

Nilai yang diizinkan adalah: ReadOnly dan ReadWrite.

Properti parameter

Jenis:ApplicationIntent
Nilai default:ReadWrite
Nilai yang diterima:ReadWrite, ReadOnly
Mendukung wildcard:False
DontShow:False

Set parameter

ByConnectionParameters
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-ApplicationName

Nama aplikasi yang terkait dengan koneksi.

Properti parameter

Jenis:String
Nilai default:.NET SqlClient Data Provider
Mendukung wildcard:False
DontShow:False

Set parameter

ByConnectionParameters
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-ConnectionString

Menentukan string koneksi untuk menyambungkan ke server.

Properti parameter

Jenis:String
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

ByConnectionString
Position:Named
Wajib:True
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:Int32
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

ByConnectionParameters
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Credential

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

Properti parameter

Jenis:PSCredential
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

ByConnectionParameters
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:String
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

ByConnectionParameters
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

ByConnectionParameters
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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).

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Encrypt

Jenis enkripsi yang akan 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.

Properti parameter

Jenis:String
Nilai default:None
Nilai yang diterima:Mandatory, Optional, Strict
Mendukung wildcard:False
DontShow:False

Set parameter

ByConnectionParameters
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

ByConnectionParameters
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:Int32
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-FailoverPartner

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

Properti parameter

Jenis:String
Mendukung wildcard:False
DontShow:False

Set parameter

ByConnectionParameters
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:String
Nilai default:None
Mendukung wildcard:False
DontShow:False
Alias:WorkstationID

Set parameter

ByConnectionParameters
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:String
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

ByConnectionParameters
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

ByConnectionParameters
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:String
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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 parameter dapat berupa string (token teks bersih) atau SecureString (token terenkripsi, seperti yang dikembalikan oleh versi cmdlet Get-AzAccessToken yang lebih baru.)

Properti parameter

Jenis:PSObject
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

ByConnectionString
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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 parameter dapat berupa string (token teks bersih) atau SecureString (token terenkripsi, seperti yang dikembalikan oleh versi cmdlet Get-AzAccessToken yang lebih baru.)

Properti parameter

Jenis:PSObject
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

ByConnectionString
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:Int32
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:Int32
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

ByConnectionParameters
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:String
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

ByConnectionParameters
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-OutputAs

Menentukan jenis hasil yang didapat cmdlet ini.

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

Properti parameter

Jenis:OutputType
Nilai default:None
Nilai yang diterima:DataSet, DataTables, DataRows
Mendukung wildcard:False
DontShow:False
Alias:As

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-OutputSqlErrors

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

Properti parameter

Jenis:Boolean
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Password

Menentukan kata sandi untuk ID masuk Autentikasi SQL Server yang ditentukan dalam parameter Nama Pengguna. Kata sandi sensitif terhadap huruf besar dan 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.

Properti parameter

Jenis:String
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

ByConnectionParameters
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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".

Properti parameter

Jenis:String
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:0
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:Int32
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:PSObject
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

ByConnectionParameters
Position:Named
Wajib:False
Nilai dari alur:True
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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

Properti parameter

Jenis:Int32
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:String
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

ByConnectionParameters
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

ByConnectionParameters
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:String
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

ByConnectionParameters
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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 tempat 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.

Properti parameter

Jenis:PSObject
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

CommonParameters

Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.

Input

System.Management.Automation.PSObject

Output

System.Object