Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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