Bagikan melalui


Invoke-Sqlcmd cmdlet

Invoke-Sqlcmd adalah cmdlet SQL Server yang menjalankan skrip yang berisi pernyataan dari bahasa (Transact-SQL dan XQuery) dan perintah yang didukung oleh utilitas sqlcmd .

Menggunakan Invoke-Sqlcmd

Cmdlet Invoke-Sqlcmd memungkinkan Anda menjalankan file skrip sqlcmd di lingkungan Windows PowerShell. Banyak hal yang dapat Anda lakukan dengan sqlcmd juga dapat dilakukan menggunakan Invoke-Sqlcmd.

Ini adalah contoh panggilan Invoke-Sqlcmd untuk menjalankan kueri sederhana, mirip dengan menentukan sqlcmd dengan opsi -Q dan -S :

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

Ini adalah contoh panggilan Invoke-Sqlcmd, menentukan file input dan mempipa output ke file Ini mirip dengan menentukan sqlcmd dengan opsi -i dan -o :

Invoke-Sqlcmd -InputFile "C:\MyFolder\TestSQLCmd.sql" | Out-File -FilePath "C:\MyFolder\TestSQLCmd.rpt"  

Ini adalah contoh penggunaan array Windows PowerShell untuk meneruskan beberapa variabel skrip sqlcmd ke Invoke-Sqlcmd. Karakter "$" yang mengidentifikasi variabel pembuatan skrip sqlcmd dalam pernyataan SELECT telah diloloskan dengan menggunakan karakter escape "'" centang belakang PowerShell:

$MyArray = "MyVar1 = 'String1'", "MyVar2 = 'String2'"  
Invoke-Sqlcmd -Query "SELECT `$(MyVar1) AS Var1, `$(MyVar2) AS Var2;" -Variable $MyArray  

Ini adalah contoh penggunaan penyedia SQL Server untuk Windows PowerShell untuk menavigasi ke instans Mesin Database, lalu menggunakan cmdlet Get-Item Windows PowerShell untuk mengambil objek SMO Server untuk instans dan meneruskannya ke Invoke-Sqlcmd:

Set-Location SQLSERVER:\SQL\MyComputer\MyInstance  
Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance (Get-Item .)  

Parameter -Query bersifat posisi dan tidak harus diberi nama. Jika string pertama yang diteruskan ke Invoke-Sqlcmd: tidak disebutkan namanya, string tersebut diperlakukan sebagai parameter -Query.

Invoke-Sqlcmd "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance "MyComputer\MyInstance"  

Konteks Jalur dalam Invoke-Sqlcmd

Jika Anda tidak menggunakan parameter -Database, konteks database untuk Invoke-Sqlcmd diatur oleh jalur yang aktif saat cmdlet dipanggil.

Jalur Konteks Database
Dimulai dengan drive selain SQLSERVER: Database bawaan untuk ID login dalam instans bawaan di komputer lokal.
SQLSERVER:\SQL Basis data bawaan untuk ID login pada instans bawaan di komputer lokal.
SQLSERVER:\SQL\ComputerName Database bawaan untuk ID login pada instance default di komputer yang ditentukan.
SQLSERVER:\SQL\ComputerName\InstanceName Database bawaan untuk ID login pada instans yang ditentukan di komputer yang ditentukan.
SQLSERVER:\SQL\ComputerName\InstanceName\Databases Basis data default untuk ID login pada instans yang ditentukan di komputer yang ditentukan.
SQLSERVER:\SQL\ComputerName\InstanceName\Databases\DatabaseName Database yang ditentukan pada instans yang ditentukan di komputer yang ditentukan. Ini juga berlaku untuk jalur yang lebih panjang, seperti jalur yang menentukan simpul Tabel dan Kolom dalam database.

Misalnya, asumsikan bahwa database default untuk akun Windows Anda dalam instans default komputer lokal adalah master. Kemudian, perintah berikut akan mengembalikan master:

Set-Location SQLSERVER:\SQL  
Invoke-Sqlcmd "SELECT DB_NAME() AS DatabaseName;"  

Perintah berikut akan mengembalikan AdventureWorks2012:

Set-Location SQLSERVER:\SQL\MyComputer\DEFAULT\Databases\AdventureWorks2012\Tables\Person.Person  
Invoke-Sqlcmd "SELECT DB_NAME() AS DatabaseName;"  

Invoke-Sqlcmd memberikan peringatan saat menggunakan konteks database jalur. Anda dapat menggunakan parameter -SuppressProviderContextWarning untuk menonaktifkan pesan peringatan. Anda dapat menggunakan parameter -IgnoreProviderContext untuk memberi tahu Invoke-Sqlcmd untuk selalu menggunakan database default untuk login.

Membandingkan Invoke-Sqlcmd dan Utilitas sqlcmd

Invoke-Sqlcmd dapat digunakan untuk menjalankan banyak skrip yang dapat dijalankan menggunakan utilitas sqlcmd . Namun, Invoke-Sqlcmd berjalan di lingkungan Windows PowerShell yang berbeda dari lingkungan prompt perintah tempat sqlcmd dijalankan. Perilaku Invoke-Sqlcmd telah dimodifikasi untuk bekerja di lingkungan Windows PowerShell.

Tidak semua perintah sqlcmd diimplementasikan dalam Invoke-Sqlcmd. Perintah yang tidak diimplementasikan meliputi: :!!, :connect, :error, :out, :ed, :list, :listvar, :reset, :p erftrace, dan :serverlist.

Invoke-Sqlcmd tidak menginisialisasi lingkungan sqlcmd atau variabel pembuatan skrip seperti SQLCMDDBNAME atau SQLCMDWORKSTATION.

Invoke-Sqlcmd tidak menampilkan pesan, seperti output pernyataan PRINT, kecuali Anda menentukan parameter umum Windows PowerShell -Verbose . Contohnya:

Invoke-Sqlcmd -Query "PRINT N'abc';" -Verbose  

Tidak semua parameter sqlcmd diperlukan di lingkungan PowerShell. Misalnya, Windows PowerShell memformat semua output dari cmdlet, sehingga parameter sqlcmd yang menentukan opsi pemformatan tidak diimplementasikan dalam Invoke-Sqlcmd. Tabel berikut menunjukkan hubungan antara parameter Invoke-Sqlcmd dan opsi sqlcmd :

Deskripsi opsi sqlcmd Invoke-Sqlcmd parameter
Nama server dan instance-nya. -S -ServerInstance
Database awal yang akan digunakan. -d Database
Jalankan kueri yang ditentukan dan keluar. -Q -Kueri
ID masuk Autentikasi SQL Server. -U -Nama pengguna
Kata sandi Autentikasi SQL Server. -P -Kata sandi
Definisi variabel. -v -Variabel
Interval batas waktu kueri. -t -QueryTimeout
Hentikan program ketika terjadi kesalahan -b -AbortOnError
Koneksi Administrator Khusus. -Sebuah -DedicatedAdministratorConnection
Nonaktifkan perintah interaktif, skrip startup, dan variabel lingkungan. -X NonaktifkanPerintah
Nonaktifkan substitusi variabel. -x -NonaktifkanVariabel
Tingkat keparahan minimum yang harus dilaporkan. -V -Tingkat Keparahan
Tingkat kesalahan minimum untuk dilaporkan. -m -ErrorLevel
Interval batas waktu masuk. -L -ConnectionTimeout
Nama host. -H -HostName
Ubah kata sandi dan keluar. -Z -NewPassword
File masukan yang berisi kueri -saya -InputFile
Panjang maksimum output karakter. w- -MaxCharLength
Panjang maksimum output biner. w- -MaxBinaryLength
Sambungkan menggunakan enkripsi SSL. Tidak ada parameter -EncryptConnection
Tampilkan kesalahan Tidak ada parameter -OutputSqlErrors
Keluarkan pesan ke stderr. -r Tidak ada parameter
Menggunakan pengaturan regional klien -R Tidak ada parameter
Jalankan kueri yang ditentukan dan biarkan tetap beroperasi. -q Tidak ada parameter
Halaman kode yang akan digunakan untuk data output. -f Tidak ada parameter
Mengubah kata sandi dan tetap berjalan -z Tidak ada parameter
Ukuran paket - Tidak ada parameter
Pemisah kolom -s Tidak ada parameter
Mengontrol header output -h Tidak ada parameter
Tentukan karakter kontrol -k Tidak ada parameter
Lebar tampilan dengan panjang tetap -Y Tidak ada parameter
Lebar tampilan dengan panjang variabel -y Tidak ada parameter
Input echo -e Tidak ada parameter
Aktifkan pengenal berformat kutipan -Saya Tidak ada parameter
Menghapus spasi di akhir -W Tidak ada parameter
Daftar Instans -L Tidak ada parameter
Format output sebagai Unicode -u Tidak ada parameter
Statistik cetak -p Tidak ada parameter
Akhir perintah -c Tidak ada parameter
Menyambungkan menggunakan Autentikasi Windows -E Tidak ada parameter

Lihat Juga

Menggunakan cmdlet Mesin Database
Utilitas sqlcmd
Menggunakan Utilitas sqlcmd