komut dosyası kullanan kullanan dosyası kullanan değişkenleri ile sqlCmd kullanma
komut dosyası kullanan kullanan dosyalarında kullanılan değişkenleri komut dosyası kullanan kullanan dosyası kullanan değişkenleri adı verilir.komut dosyası kullanan kullanan dosyası kullanan değişkenleri birden çok senaryolarda kullanılmak üzere komut dosyası kullanan kullanan kullanan dosyası kullanan sağlar.Örneğin, her sunucu için komut dosyası kullanan kullanan dosyasını değiştirmek yerine, birden çok sunucuya karşı komut dosyası kullanan kullanan kullanan dosyası kullanan çalıştırmak istiyorsanız, sunucu adı için komut dosyası kullanan kullanan kullanan dosyası kullanan değişkeni kullanabilirsiniz.komut dosyası kullanan kullanan dosyası kullanan değişkeni için sağladığı sunucu adını değiştirerek, farklı sunucularda aynı kod çalıştırılabilir.
Scripting variables can be defined explicitly by using the setvar command, or implicitly by using the sqlcmd-v option.
Bu konuda da örnekler cmd.exe komut istemi istemini kullanarak ortam değişkenleri tanımlama içerirküme.
Setvar komutu kullanılarak komut dosyası kullanan kullanan dosyası kullanan değişkenlerini ayarlama
The setvar command is used to define scripting variables.Kullanılarak tanımlanmış değişkenlerisetvar komut dahili olarak depolanır.komut dosyası kullanan kullanan istemi dosyası değişkenlerinin yok karıştı kullanarak komut dosyası kullanan kullanan istemi satırından tanımlanan ortam değişkenleri ileküme.Bir komut dosyası, başvuran bir ortam değişkeni olan veya olmayan olarak tanımlanan bir değişkensetvar, bir hata iletisi döndürülür ve komut dosyasını yürütmesini durdurma. olur Daha fazla bilgi için bkz:-b option in SQLCMD yardımcı programı.
Değişken (düşük yüksek) öncelik
Birden fazla değişken türü aynı ada sahip, en yüksek önceliğe sahip değişkeni kullanılır.
Sistem düzey ortam değişkenleri
Kullanıcı düzey ortam değişkenleri
Kabuk komutu ( küme X = Y) sqlcmd başlatmadan önce komut istemi ayarlayın.
sqlcmd-v X=Y
: Setvar X Y
Not
Ortam değişkenlerini, içinde görüntülemek içinDenetim MasasıSistemaçın ve Gelişmiş sekmesini tıklatın.
Dolaylı olarak komut dosyası kullanan kullanan dosyası kullanan değişkenlerini ayarlama
BaşlattığınızdasqlCmdsqlcmd ilgili değişken olan seçeneği sqlcmd değişken dolaylı olarak seçenek. ile belirtilen değere küme Aşağıdaki örnekte,sqlcmdile başlatılan-l seçenek.Bu dolaylı olarak SQLLOGINTIMEOUT değişkenini ayarlar.
c:\> sqlcmd -l 60
Ayrıca-v var olan komut dosyası kullanan kullanan kullanan dosyası kullanan değişkeni içinde script. seçeneği Aşağıdaki komut dosyası kullanan kullanan dosyasında (dosya adı testscript.sql),ColumnNamekomut dosyası kullanan kullanan dosyası kullanan bir değişkeni.
USE AdventureWorks;
SELECT x.$(ColumnName)
FROM Person.Contact x
WHERE c.ContactID < 5;
Sonra adını belirtebileceğiniz sütun kullanarak verilen istediğiniz-vseçeneği:
sqlcmd -v ColumnName ="FirstName" -i c:\testscript.sql
Aynı komut dosyası kullanan kullanan dosyası kullanan kullanarak farklı bir sütuna döndürmek için değerini değiştirin:ColumnNamekomut dosyası kullanan kullanan dosyası kullanan değişkeni.
sqlcmd -v ColumnName ="LastName" -i c:\testscript.sql
Değişken adları ve değerleri komut dosyası kullanan kullanan dosyası kullanan oluşturma yönergeleri
komut dosyası kullanan kullanan dosyası kullanan değişkenleri adı 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ı gerekir sahip bir değişken ifadesi olarak aynı form gibi$(var).
komut dosyası kullanan kullanan dosyası kullanan değişkenlerinin büyük/küçük harfe duyarsızdır
Not
Atanan değer, birsqlCmd ortam değişkeni değişken kaldırılır.Kullanma: VarName setvarbir değer değişken. temizler
komut dosyası kullanan kullanan dosyası kullanan değişkenlerinin değerleri belirlediğinizde aşağıdaki yönergeleri dikkate alın:
Değişken değerlerini kullanarak tanımlanansetvarveya -v seçeneği gerekir içine tırnak işaretleri değer boşluk içeriyorsa.
Tırnak işaretleri değişken değerinin bir parçası ise, bunlar öncesinde gerekir.Örnek: :setvar MyVar "spac""e".
Yönergeler için cmd.exe değişken değer ve adları küme
Değişkenleri kullanarak küme tanımlanan cmd.exe ortamının bir parçası olan ve başvuru tarafındansqlCmd.Aşağıdaki yönergeleri dikkate alın:
Değişken adları, boşluk charactersor tırnak işareti içermemelidir.
Değişken değerlerini, boşluklar veya tırnak işaretleri içerebilir.
SQLCmd komut dosyası kullanan kullanan dosyası kullanan değişkenleri
Değişkenleri tarafından tanımlanmışsqlCmd değişkenler. komut dosyası kullanan kullanan dosyası kullanan olarak bilinen Aşağıdaki tabloda listelenmektedir.sqlCmd komut dosyası kullanan kullanan dosyası kullanan değişkenlerinin.
Variable |
İ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,: Bağlantı is used.
R değeri yalnızca program başlatma sırasında saat ayarlanabilir gösterir.
R/W gösteren değeri kullanılarak sıfırlanabilirsetvar komut ve diğer komutları kullanma yeni değeri.
Örnekler
C.Setvar komutu bir komut dosyası kullanma
Pek çoksqlCmd seçeneklerini bir komut dosyası setvar komut. kullanarak kontrol edilebilir Aşağıdaki örnekte, komut dosyası kullanan kullanan dosyası kullanantest.sqloluşturulduğuSQLCMDLOGINTIMEOUT değişkeni küme60saniye ve başka komut dosyası kullanan kullanan kullanan dosyası kullanan değişkeniserverolarak ayarlanırsa,testserver.Aşağıdaki kod içinde olduğutest.sql.
:setvar SQLCMDLOGINTIMEOUT 60
:setvar server "testserver"
:connect $(server) -l $(SQLCMDLOGINTIMEOUT)
USE AdventureWorks;
SELECT FirstName, LastName
FROM Person.Contact;
The script is then called by using sqlcmd:
sqlcmd -i c:\test.sql
B.Etkileşimli setvar komutunu kullanma
Aşağıdaki örnekte gösterildiği nasıl küme etkileşimli olarak kullanarak bir komut dosyası kullanan kullanan kullanan dosyası değişkenisetvarkomut dosyası kullanan kullanan kullanan.
sqlcmd
:setvar MYDATABASE AdventureWorks
USE $(MYDATABASE);
GO
Here is the result set.
Changed database context to 'AdventureWorks'
1>
C.Sqlcmd içinden komut istemi istemini ortam değişkenlerini kullanma
Aşağıdaki örnekte, dört ortam değişkenleriareküme ve ardından gelensqlcmd.
C:\>SET tablename=Person.Contact
C:\>SET col1=FirstName
C:\>SET col2=LastName
C:\>SET title=Ms.
C:\>sqlcmd -d AdventureWorks
1> SELECT TOP 5 $(col1) + ' ' + $(col2) AS Name
2> FROM $(tablename)
3> WHERE Title ='$(title)'
4> GO
D.Kullanıcı - kullanma düzey sqlcmd içindeki ortam değişkenleri
Aşağıdaki örnekte kullanıcı-düzey ortam değişkeni%Temp%komut istemi istemine ayarlamak ve geçirilensqlcmdGiriş dosyası.Kullanıcı düzeyinde ortam değişkenini, elde etmeDenetim Masasısistemi' ni çift tıklatın.TıklatınÖncelikli sekmesini tıklatın ve sonra Ortam değişkenleri .
Aşağıdaki kodda olduğu giriş dosyasındac:\testscript.txt:
:OUT $(MyTempDirectory)
USE AdventureWorks;
SELECT FirstName
FROM AdventureWorks.Person.Contact
WHERE ContactID < 5;
Bu aşağıdaki kod, komut istemi satırına girilir:
C:\ >SET MyTempDirectory=%Temp%\output.txt
C:\ >sqlcmd -i C:\testscript.txt
Çıktı dosyası C:\Documents ve Settings\ aşağıdaki sonucu gönderilir<kullanıcı>\Local Settings\Temp\output.txt.
Changed database context to 'AdventureWorks'.
FirstName
--------------------------------------------------
Gustavo
Catherine
Kim
Humberto
(4 rows affected)
E.Başlangıç komut dosyası
AsqlCmd Başlangıç komut dosyası sqlcmd başlatıldığında yürütüldüğünde. Aşağıdaki örnek, ortam değişkenini ayarlarSQLCMDINI.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ılarıinit.sqlDosyasqlcmdbaşlatılan.
C:\> SET sqlcmdini=c:\init.sql
>1 Sqlcmd
Çıktı budur.
>1 < user > is connected to < server > (9.00.2047.00)
Not- X seçeneğini başlangıç komut dosyası özelliği. devre dışı bırakır
F.Değişkeni genişletmesini
Formda verilerle çalışma aşağıdaki örnekte gösterildiği birsqlCmd değişken.
USE AdventureWorks;
CREATE TABLE AdventureWorks.dbo.VariableTest
(
Col1 nvarchar(50)
);
GO
Bir satır olarak EkleCol1ofdbo.VariableTestdeğer içeren$(tablename).
INSERT INTO AdventureWorks.dbo.VariableTest(Col1)
VALUES('$(tablename)');
GO
Atsqlcmdkomut isteminde, hiçbir değişkeni eşit küme$(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
Here is the result set.
>1 Col1
>2 ------------------
>3 $(tablename)
>4
>5 (1 rows affected)
Belirtilen değişkenMyVarküme$(tablename).
>6 :setvar MyVar $(tablename)
Bu ifadeler satır döndürür ve de "'TabloAdı' komut dosyası kullanan kullanan dosyası kullanan değişkeni tanımlı değil." iletisi döndürür.
>6 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = '$(tablename)';
>7 GO
>1 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = N'$(tablename)';
>2 GO
Bu ifadeler 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
See Also