SQLCMD Scripting değişkenleri ile kullanma
komut dosyası kullanan kullanan kullanan dosyası değişkenleri komut dosyası kullanan kullanan kullanan dosyalarında kullanılan değişkenleri olarak adlandırılır.Komut dosyası değişkenleri birden fazla senaryolarda kullanılmak üzere bir komut dosyası sağlar.Örneğin, her sunucu için komut dosyası kullanan kullanan kullanan dosyasını değiştirmek yerine birden çok sunucuya karşı komut dosyası kullanan kullanan kullanan kullanan dosyası çalıştırmak istiyorsanız sunucu adı için komut dosyası kullanan kullanan kullanan kullanan dosyası değişkeni kullanabilirsiniz.Değiştirerek sunucu adı komut dosyası kullanan kullanan kullanan dosyası değişkeni için sağladığı, aynı kod farklı sunucularda yapılabilecek.
Scripting variables can be defined explicitly by using the setvar command, or implicitly by using the sqlcmd-v option.
Bu konuda da ortam değişkenleri Cmd.exe komut istemi istemini kullanarak tanımlama örnekler içerir set.
Komut dosyası değişkenleri setvar komutunu kullanarak ayarlama
The setvar command is used to define scripting variables.Kullanılarak tanımlanmış değişkenleri setvar komut dahili olarak saklanır.Komut dosyası değişkenleri karıştırılmaması gerekir komut istemi kullanılarak tanımlanmış ortam değişkenleri ile set.Bir komut dosyası kullanılarak tanımlanmış veya bir ortam değişkeni olmayan bir değişken başvuruyorsa setvarkomut dosyasının çalışmasını durdurur ve bir hata iletisi döndürülür.Daha fazla bilgi için bkz: -b 'de seçenek sqlcmd Yardımcı Programı.
Değişken öncelik (yüksek düşük)
Birden fazla değişken türü aynı ada sahipse, en yüksek önceliğe sahip bir değişkeni kullanılır.
Sistem düzey ortam değişkenleri
Kullanıcı düzey ortam değişkenleri
komut istemi kabuğu (küme x = y) başlatmadan önce komut istemi isteminde küme sqlcmd
sqlcmd-v X=Y
: Setvar y x
Not
Ortam değişkenlerini görüntülemek için Denetim Masası, açık Sistemve i Gelişmiş sekmesi.
Komut dosyası değişkenleri örtülü olarak ayarlama
Başlattığınızda sqlcmd ile ilgili olan bir seçenek sqlcmd değişkeni, sqlcmd değişken küme örtülü olarak seçeneğini kullanarak belirtilen değere.Aşağıdaki örnekte, sqlcmd ile çalışmaya -l seçeneği.Örtülü olarak SQLLOGINTIMEOUT değişkenini ayarlar.
c:\> sqlcmd -l 60
Ayrıca - v seçenek küme komut dosyası kullanan kullanan kullanan kullanan dosyasında komut dosyası kullanan kullanan kullanan kullanan dosyası değişkeni.Aşağıdaki komut dosyası kullanan kullanan kullanan dosyasını (dosya adı testscript.sql), ColumnName komut dosyası kullanan kullanan kullanan dosyası bir değişkeni.
USE AdventureWorks2008R2;
SELECT x.$(ColumnName)
FROM Person.Person x
WHERE c.BusinessEntityID < 5;
Daha sonra adını belirtmek sütun kullanarak istediğiniz şekilde -v seçeneği:
sqlcmd -v ColumnName ="FirstName" -i c:\testscript.sql
Aynı komut dosyası kullanan kullanan kullanan dosyası kullanarak farklı bir sütun dönmek için değerini değiştirmek ColumnName komut dosyası kullanan kullanan kullanan dosyası değişkeni.
sqlcmd -v ColumnName ="LastName" -i c:\testscript.sql
Değişken adları ve değerleri Scripting yönergeleri
komut dosyası kullanan kullanan kullanan dosyası değişkenleri adlandırdığınızda aşağıdaki yönergeleri dikkate alın:
Değişken adları boşluk karakterleri veya tırnak işareti içermemelidir.
Değişken adları aynı form bir değişken ifade olarak gibi olmamalıdır $(var).
Komut dosyası değişkenleri durum duyarsızdır
Not
Herhangi bir değer atanmışsa bir sqlcmd ortam değişkeni değişken kaldırılır.Kullanarak : setvar VarName olmayan bir değer değişkeni temizler.
komut dosyası kullanan kullanan kullanan dosyası değişkenleri için değerleri belirttiğinizde, aşağıdaki yönergeleri dikkate alın:
Kullanılarak tanımlanmış değişken değerlerini setvar veya - v seçeneği içine yerleştirilmesi gerekir tırnak işaretleri dize boşluk içeriyorsa.
Tırnak işaretleri değişken değerinin bir parçası iseniz, bunlar konulmalıdır.Örneğin: :setvar MyVar "spac""e".
Değişken değerlerini ve adları Cmd.exe yönergeleri ayarlayın
KÜMESİ kullanılarak tanımlanmış değişkenleri Cmd.exe ortamının parçası olan ve tarafından başvurulan sqlcmd.Aşağıdaki yönergeleri dikkate alın:
Değişken adları boşluk karakterleri veya tırnak işareti içermemelidir.
Değişken değerleri boşluklar veya tırnak işaretleri içerebilir.
SQLCMD Scripting değişkenleri
Tarafından tanımlanan değişkenleri sqlcmd komut dosyası kullanan kullanan kullanan dosyası değişkenleri bilinir.Aşağıdaki tablo listeleri sqlcmd değişkenleri komut dosyası kullanan kullanan kullanan dosyası.
Değişken |
İlgili seçeneği |
R/W |
Default |
---|---|---|---|
SQLCMDUSER * |
-U |
R |
"" |
SQLCMDPASSWORD * |
-P |
-- |
"" |
SQLCMDSERVER * |
-S |
R |
"defaultlocalinstance" |
SQLCMDWORKSTATION |
-H |
R |
"Bilgisayaradı" |
SQLCMDDBNAME |
-d |
R |
"" |
SQLCMDLOGINTIMEOUT |
-l |
R/W |
"8" (saniye) |
SQLCMDSTATTIMEOUT |
-t |
R/W |
"0" süresiz olarak bekleme = |
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" = sınırsız |
SQLCMDEDITOR |
R/W |
"edit.com" |
|
SQLCMDINI |
R |
"" |
* sqlcmduser, sqlcmdpassword ve sqlcmdserver küme ne zaman : bağlanmak kullanılır.
R gösterir değeri yalnızca ayarlanabilir bir saat program başlatma sırasında.
R/w gösterir değeri kullanılarak sıfırlanabilir setvar komutu ve izleyen komutları yeni değerini kullanacaktır.
Örnekler
A.Bir komut dosyasında setvar komutunu kullanarak
Pek çok sqlcmd seçenekleri denetlenebilir bir komut dosyası kullanarak setvar komut.Aşağıdaki örnekte, komut dosyası kullanan kullanan kullanan dosyası test.sql oluşturulduğu SQLCMDLOGINTIMEOUT değişkeni küme 60 saniye ve başka komut dosyası kullanan kullanan kullanan kullanan dosyası değişkeni serverolarak ayarlanırsa, testserver.Aşağıdaki kodda bulunan test.sql.
:setvar SQLCMDLOGINTIMEOUT 60
:setvar server "testserver"
:connect $(server) -l $(SQLCMDLOGINTIMEOUT)
USE AdventureWorks2008R2;
SELECT FirstName, LastName
FROM Person.Person;
The script is then called by using sqlcmd:
sqlcmd -i c:\test.sql
B.Etkileşimli setvar komutunu kullanma
Aşağıdaki örnek komut dosyası kullanan kullanan kullanan dosyası bir değişkeni kullanarak etkileşimli olarak küme gösterilmiştir setvar komut dosyası kullanan kullanan kullanan.
sqlcmd
:setvar MYDATABASE AdventureWorks2008R2
USE $(MYDATABASE);
GO
Sonuç kümesi buradadır.
Changed database context to 'AdventureWorks2008R2'
1>
C.komut istemi isteminde sqlcmd içinde ortam değişkenlerini kullanma
Aşağıdaki örnekte, dört ortam değişkenleri are küme dan adı verilen ve sqlcmd.
C:\>SET tablename=Person.Person
C:\>SET col1=FirstName
C:\>SET col2=LastName
C:\>SET title=Ms.
C:\>sqlcmd -d AdventureWorks2008R2
1> SELECT TOP 5 $(col1) + ' ' + $(col2) AS Name
2> FROM $(tablename)
3> WHERE Title ='$(title)'
4> GO
D.Kullanıcı düzey ortam değişkenlerini sqlcmd içinde kullanma
Aşağıdaki örnek kullanıcı düzey çevresel değişkeni içinde %Temp% olan küme için geçirilen ve komut istemi istemi komut istemi isteminde sqlcmd Giriş dosyası.Kullanıcı düzey ortam değişkeni içinde elde etmek için Denetim Masası, çift Sistem.' I öncelikli sekmesini ve sonra Ortam değişkenleri.
The following code is in the input file c:\testscript.txt:
:OUT $(MyTempDirectory)
USE AdventureWorks2008R2;
SELECT FirstName
FROM AdventureWorks2008R2.Person.Person
WHERE BusinessEntityID< 5;
Aşağıdaki kod bu komut istemi satırına girilir:
C:\ >SET MyTempDirectory=%Temp%\output.txt
C:\ >sqlcmd -i C:\testscript.txt
Aşağıdaki sonucu çıktı dosyası C:\Documents and Settings\ gönderilen<kullanıcı>\Local Settings\Temp\output.txt.
Changed database context to 'AdventureWorks2008R2'.
FirstName
--------------------------------------------------
Gustavo
Catherine
Kim
Humberto
(4 rows affected)
E.Başlangıç komut dosyası kullanma
A sqlcmd başlangıç komut dosyası yürütüldüğünde, sqlcmd başlatılır.Aşağıdaki örnek ortam değişkenini ayarlar SQLCMDINI.Bu içeriği 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
Bu çağrı init.sql dosyasının sqlcmd başlatılır.
C:\> SET sqlcmdini=c:\init.sql
>1 Sqlcmd
Bu çıkış alınır.
>1 < user > is connected to < server > (9.00.2047.00)
Not
The -X option disables the startup script feature.
F.Değişken genişletme
Aşağıdaki örnek verilerle çalışma biçiminde gösterir bir sqlcmd değişkeni.
USE AdventureWorks2008R2;
CREATE TABLE AdventureWorks2008R2.dbo.VariableTest
(
Col1 nvarchar(50)
);
GO
Bir satıra eklemek Col1 , dbo.VariableTest değeri içeren $(tablename).
INSERT INTO AdventureWorks2008R2.dbo.VariableTest(Col1)
VALUES('$(tablename)');
GO
En sqlcmd değişken olduğunda istemi küme eşit $(tablename), aşağıdaki ifadeleri iade satır.
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
Sonuç kümesi buradadır.
>1 Col1
>2 ------------------
>3 $(tablename)
>4
>5 (1 rows affected)
Değişken verilen MyVar olarak küme $(tablename).
>6 :setvar MyVar $(tablename)
Bu deyimleri satır döndürür ve de '' tablename' iletisi döndürür değil tanımlanan komut dosyası kullanan kullanan kullanan dosyası değişkeni."
>6 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = '$(tablename)';
>7 GO
>1 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = N'$(tablename)';
>2 GO
Bu deyimleri satır döndürür.
>1 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = '$(MyVar)';
>2 GO
>1 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = N'$(MyVar)';
>2 GO
Ayrıca bkz.