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.
Variabel yang digunakan dalam skrip disebut variabel pembuatan skrip. Variabel pembuatan skrip memungkinkan satu skrip digunakan dalam beberapa skenario. Misalnya, jika Anda ingin menjalankan satu skrip terhadap beberapa server, alih-alih memodifikasi skrip untuk setiap server, Anda dapat menggunakan variabel pembuatan skrip untuk nama server. Dengan mengubah nama server yang disediakan ke variabel pembuatan skrip, skrip yang sama dapat dijalankan di server yang berbeda.
Variabel pembuatan skrip dapat didefinisikan secara eksplisit dengan menggunakan perintah setvar , atau secara implisit dengan menggunakan opsi sqlcmd-v .
Topik ini juga mencakup contoh yang menentukan variabel lingkungan pada prompt perintah Cmd.exe dengan menggunakan SET.
Mengatur Variabel Pembuatan Skrip dengan Menggunakan Perintah setvar
Perintah setvar digunakan untuk menentukan variabel pembuatan skrip. Variabel yang ditentukan dengan menggunakan perintah setvar disimpan secara internal. Variabel pembuatan skrip tidak boleh dikacaukan dengan variabel lingkungan yang ditentukan pada prompt perintah dengan menggunakan SET. Jika skrip mereferensikan variabel yang bukan variabel lingkungan atau tidak ditentukan dengan menggunakan setvar, pesan kesalahan dikembalikan dan eksekusi skrip akan berhenti. Untuk informasi selengkapnya, lihat opsi -b di Utilitas sqlcmd.
Prioritas Variabel (Rendah ke Tinggi)
Jika lebih dari satu jenis variabel memiliki nama yang sama, variabel dengan prioritas tertinggi digunakan.
Variabel lingkungan tingkat sistem
Variabel lingkungan tingkat pengguna
Command shell (SET X=Y) diatur pada prompt perintah sebelum memulai sqlcmd
sqlcmd-v X=Y
:Setvar X Y
Nota
Untuk melihat variabel lingkungan, di Panel Kontrol, buka Sistem, lalu klik tab Tingkat Lanjut .
Mengatur Variabel Pembuatan Skrip Secara Implisit
Saat Anda memulai sqlcmd dengan opsi yang memiliki variabel sqlcmd terkait, variabel sqlcmd diatur secara implisit ke nilai yang ditentukan dengan menggunakan opsi . Dalam contoh berikut, sqlcmd dimulai dengan opsi -l. Ini secara implisit mengatur variabel SQLLOGINTIMEOUT.
c:\> sqlcmd -l 60
Anda juga dapat menggunakan opsi -v untuk mengatur variabel skrip yang ada dalam skrip. Dalam skrip berikut (nama file adalah testscript.sql), ColumnName adalah variabel pembuatan skrip.
USE AdventureWorks2012;
SELECT x.$(ColumnName)
FROM Person.Person x
WHERE c.BusinessEntityID < 5;
Anda kemudian dapat menentukan nama kolom yang ingin Anda kembalikan dengan menggunakan -v opsi :
sqlcmd -v ColumnName ="FirstName" -i c:\testscript.sql
Untuk mengembalikan kolom yang berbeda dengan menggunakan skrip yang sama, ubah nilai ColumnName variabel pembuatan skrip.
sqlcmd -v ColumnName ="LastName" -i c:\testscript.sql
Panduan untuk Membuat Skrip Nama dan Nilai Variabel
Pertimbangkan panduan berikut saat Anda memberi nama variabel pembuatan skrip:
Nama variabel tidak boleh berisi karakter spasi kosong atau tanda kutip.
Nama variabel tidak boleh memiliki formulir yang sama dengan ekspresi variabel, seperti $(var).
Variabel skrip tidak membedakan huruf besar/kecil
Nota
Jika tidak ada nilai yang ditetapkan ke variabel lingkungan sqlcmd , variabel akan dihapus. Menggunakan :setvar VarName tanpa nilai akan menghapus variabel.
Pertimbangkan panduan berikut saat Anda menentukan nilai untuk variabel pembuatan skrip:
Nilai variabel yang ditentukan dengan menggunakan setvar atau opsi -v harus diapit oleh tanda kutip jika nilai string berisi spasi.
Jika tanda kutip merupakan bagian dari nilai variabel, tanda kutip tersebut harus di-escape. Misalnya: :
setvar MyVar "spac""e".
Panduan untuk Nilai dan Nama Variabel Cmd.exe SET
Variabel yang ditentukan dengan menggunakan SET adalah bagian dari lingkungan Cmd.exe dan dapat dirujuk oleh sqlcmd. Pertimbangkan panduan berikut:
Nama variabel tidak boleh berisi karakter spasi kosong atau tanda kutip.
Nilai variabel mungkin berisi spasi atau tanda kutip.
Variabel Pembuatan Skrip sqlcmd
Variabel yang didefinisikan oleh sqlcmd dikenal sebagai variabel pembuatan skrip. Tabel berikut mencantumkan variabel pembuatan skrip sqlcmd .
| Variabel | Opsi terkait | R/W | Bawaan |
|---|---|---|---|
| SQLCMDUSER* | -U | R | "" |
| SQLCMDPASSWORD* | -P | -- | "" |
| SQLCMDSERVER* | -S | R | "DefaultLocalInstance" |
| SQLCMDWORKSTATION | -H | R | NamaKomputer |
| SQLCMDDBNAME | -d | R | "" |
| SQLCMDLOGINTIMEOUT | -L | R/W | "8" (detik) |
| SQLCMDSTATTIMEOUT | -t | R/W | "0" = tunggu tanpa batas waktu |
| SQLCMDHEADERS | -h | R/W | 0 |
| SQLCMDCOLSEP | -s | R/W | " " |
| SQLCMDCOLWIDTH | w- | R/W | 0 |
| SQLCMDPACKETSIZE | -a | R | "4096" |
| SQLCMDERRORLEVEL | -m | R/W | 0 |
| SQLCMDMAXVARTYPEWIDTH | -y | R/W | "256" |
| SQLCMDMAXFIXEDTYPEWIDTH | -Y | R/W | "0" = tidak terbatas |
| SQLCMDEDITOR | R/W | edit.com | |
| SQLCMDINI | R | "" |
* SQLCMDUSER, SQLCMDPASSWORD dan SQLCMDSERVER diatur saat :Connect digunakan.
R menunjukkan nilai hanya dapat diatur satu kali selama inisialisasi program.
R/W menunjukkan bahwa nilai dapat diatur ulang dengan menggunakan perintah setvar dan perintah berikutnya akan menggunakan nilai baru.
Contoh
Sebuah. Menggunakan perintah setvar dalam skrip
Banyak opsi sqlcmd dapat dikontrol dalam skrip dengan menggunakan perintah setvar . Dalam contoh berikut, skrip test.sql dibuat di mana SQLCMDLOGINTIMEOUT variabel diatur ke 60 detik dan variabel skrip lainnya, server, diatur ke testserver. Kode berikut ada di test.sql.
:setvar SQLCMDLOGINTIMEOUT 60
:setvar server "testserver"
:connect $(server) -l $(SQLCMDLOGINTIMEOUT)
USE AdventureWorks2012;
SELECT FirstName, LastName
FROM Person.Person;
The script is then called by using sqlcmd:
sqlcmd -i c:\test.sql
B. Menggunakan perintah setvar secara interaktif
Contoh berikut menunjukkan cara mengatur variabel pembuatan skrip secara interaktif dengan menggunakan setvar perintah .
sqlcmd
:setvar MYDATABASE AdventureWorks2012
USE $(MYDATABASE);
GO
Berikut adalah hasilnya.
Changed database context to 'AdventureWorks2012'
1>
C. Menggunakan variabel lingkungan Command Prompt dalam sqlcmd
Dalam contoh berikut, empat variabel are lingkungan diatur lalu dipanggil dari sqlcmd.
C:\>SET tablename=Person.Person
C:\>SET col1=FirstName
C:\>SET col2=LastName
C:\>SET title=Ms.
C:\>sqlcmd -d AdventureWorks2012
1> SELECT TOP 5 $(col1) + ' ' + $(col2) AS Name
2> FROM $(tablename)
3> WHERE Title ='$(title)'
4> GO
D. Menggunakan variabel lingkungan tingkat pengguna dalam sqlcmd
Dalam contoh berikut, variabel lingkungan tingkat pengguna diatur dan ditransfer melalui prompt perintah ke berkas masukan sqlcmd. Untuk mendapatkan variabel lingkungan tingkat pengguna, di Panel Kontrol, klik dua kali Sistem. Klik tab Lanjutan , lalu klik Variabel Lingkungan.
Kode berikut ada dalam file c:\testscript.txtinput :
:OUT $(MyTempDirectory)
USE AdventureWorks2012;
SELECT FirstName
FROM AdventureWorks2012.Person.Person
WHERE BusinessEntityID
< 5;
Kode berikut dimasukkan di prompt perintah:
C:\ >SET MyTempDirectory=%Temp%\output.txt
C:\ >sqlcmd -i C:\testscript.txt
Hasil berikut dikirim ke file output C:\Documents and Settings\<user>\Local Settings\Temp\output.txt.
Changed database context to 'AdventureWorks2012'.
FirstName
--------------------------------------------------
Gustavo
Catherine
Kim
Humberto
(4 rows affected)
E. Menggunakan skrip startup
Skrip startup sqlcmd dijalankan saat sqlcmd dimulai. Contoh berikut mengatur variabel lingkungan SQLCMDINI. Ini adalah isi dari init.sql.
SET NOCOUNT ON
GO
DECLARE @nt_username nvarchar(128)
SET @nt_username = (SELECT rtrim(convert(nvarchar(128), nt_username))
FROM sys.dm_exec_sessions WHERE spid = @@SPID)
SELECT @nt_username + ' is connected to ' +
rtrim(CONVERT(nvarchar(20), SERVERPROPERTY('servername'))) +
' (' +
rtrim(CONVERT(nvarchar(20), SERVERPROPERTY('productversion'))) +
')'
:setvar SQLCMDMAXFIXEDTYPEWIDTH 100
SET NOCOUNT OFF
GO
:setvar SQLCMDMAXFIXEDTYPEWIDTH
Pemanggilan file init.sql ini terjadi ketika sqlcmd dimulai.
C:\> SET sqlcmdini=c:\init.sql
>1 Sqlcmd
Ini adalah keluaran.
>1 < user > is connected to < server > (9.00.2047.00)
Nota
Opsi -X menonaktifkan fitur skrip startup.
F. Ekspansi variabel
Contoh berikut menunjukkan bekerja dengan data dalam bentuk variabel sqlcmd .
USE AdventureWorks2012;
CREATE TABLE AdventureWorks2012.dbo.VariableTest
(
Col1 nvarchar(50)
);
GO
Sisipkan satu baris ke dalam Col1dbo.VariableTest yang berisi nilai $(tablename).
INSERT INTO AdventureWorks2012.dbo.VariableTest(Col1)
VALUES('$(tablename)');
GO
Pada prompt sqlcmd, ketika tidak ada variabel yang ditetapkan sama dengan $(tablename), pernyataan berikut menghasilkan baris.
C:\> sqlcmd
>1 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = '$(tablename)';
>2 GO
>3 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = N'$(tablename)';
>4 GO
Berikut adalah hasilnya.
>1 Col1
>2 ------------------
>3 $(tablename)
>4
>5 (1 rows affected)
Karena variabel MyVar diatur ke $(tablename).
>6 :setvar MyVar $(tablename)
Pernyataan ini mengembalikan baris dan juga mengembalikan pesan "'tablename' variabel skrip tidak ditentukan."
>6 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = '$(tablename)';
>7 GO
>1 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = N'$(tablename)';
>2 GO
Pernyataan ini mengembalikan baris data.
>1 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = '$(MyVar)';
>2 GO
>1 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = N'$(MyVar)';
>2 GO
Lihat Juga
Menggunakan Utilitas sqlcmd
Utilitas sqlcmd
Referensi Utilitas Command Prompt (Mesin Basis Data)