Ekinlikler
31 Mar 23 - 2 Nis 23
En büyük SQL, Fabric ve Power BI öğrenme etkinliği. 31 Mart – 2 Nisan. 400 ABD doları tasarruf etmek için FABINSIDER kodunu kullanın.
Bugün kaydolunBu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analytics Platform Sistemi (PDW)
Microsoft Fabric'teki SQL Veritabanı
sqlcmd yardımcı programı çeşitli modlar aracılığıyla Transact-SQL deyimleri, sistem yordamlarını ve betik dosyalarını girmenizi sağlar:
cmd.exe
) iş adımı.Not
Microsoft Entra ID, Azure Active Directory (Azure AD) içinyeni ad olsa da, mevcut ortamların kesintiye uğramasını önlemek için Azure AD yine de kullanıcı arabirimi alanları, bağlantı sağlayıcıları, hata kodları ve cmdlet'ler gibi sabit kodlanmış bazı öğelerde kalır. Bu makalede, iki ad birbirinin yerine kullanılabilir.
sqlcmdiki sürümü vardır:
go-mssqldb
tabanlı sqlcmd, bazen go-sqlcmdolarak stillendirilir. Bu sürüm, SQL Server'ı bağımsız olarak indirebileceğiniz tek başına bir araçtır.
ODBC tabanlı sqlcmd, SQL Server veya Microsoft Komut Satırı Yardımcı Programları ile kullanılabilir ve Linux'ta mssql-tools
paketinin bir parçasıdır.
Yüklediğiniz sürümü belirlemek için komut satırında aşağıdaki deyimi çalıştırın:
sqlcmd "-?"
sqlcmd "-?"
sqlcmd -?
sqlcmd (Go) yeni sürümünü kullanıyorsanız, çıktı aşağıdaki örneğe benzer:
Version: 1.3.1
Hangi sürümün yüklü olduğunu belirlemek için sqlcmd --version
kullanabilirsiniz. En az 1.0.0 sürümünü yüklemiş olmanız gerekir.
Önemli
sqlcmd (Go) paketini bir paket yöneticisi aracılığıyla yüklemek, ortam yolunuzda sqlcmd (ODBC) yerine sqlcmd (Go) ile değiştirir. Bunun etkili olması için tüm geçerli komut satırı oturumları kapatılmalı ve yeniden açılmalıdır.
sqlcmd (ODBC) kaldırılmaz ve yürütülebilir dosyanın tam yolu belirtilerek kullanılabilir. Ayrıca, hangi önceliklerin öncelikli olduğunu belirtmek için PATH
değişkeninizi güncelleştirebilirsiniz. Windows 11'de bunu yapmak için Sistem ayarları açın ve Hakkında Gelişmiş sistem ayarları> hakkında bölümüne gidin. sistem özellikleri açıldığında, Ortam Değişkenleri düğmesini seçin. Alt yarıda, Sistem değişkenlerialtında Yol öğesini seçin ve ardından Düzenleseçeneğini seçin. sqlcmd (Go) konumu C:\Program Files\Microsoft SQL Server\<version>\Tools\Binn
önce (C:\Program Files\sqlcmd
varsayılandır) olarak kaydedilirse, sqlcmd (Go) kullanılır.
sırasını tersine çevirerek sqlcmd (ODBC) tekrar varsayılan yapabilirsiniz.
sqlcmd (Go), Microsoft Windows, macOS ve Linux'ta platformlar arası yüklenebilir. 1.6'dan yeni sürümler tüm paket yöneticilerinde kullanılamayabilir. Mevcut olmaları için henüz tahmini bir tarih yok.
Açık depo GPG anahtarlarını içeri aktarın.
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
Microsoft deposunu ekleyin; burada ubuntu/20.04
kesimi debian/11
, ubuntu/20.04
veya ubuntu/22.04
olabilir.
add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/prod.list)"
aptkullanarak sqlcmd (Go)'yu yükleyin.
apt-get update
apt-get install sqlcmd
Microsoft depo anahtarını içeri aktarın.
rpm --import https://packages.microsoft.com/keys/microsoft.asc
fedora/32
kesiminin opensuse/42.3
, rhel/8
veya sles/15
olabileceği depo yapılandırma dosyasını indirin. İşletim sisteminizin sürümü bu seçeneklerden birine doğrudan karşılık gelmiyorsa, bir sürümden depo yapılandırma dosyası kullanabilirsiniz.
curl -o /etc/yum.repos.d/packages-microsoft-com-prod.repo https://packages.microsoft.com/config/fedora/40/prod.repo
yumile sqlcmd (Go) yükleyin.
yum install sqlcmd
GitHub kod deposundan sqlcmd (Go)'nun en son sürümündeki ilgili -linux-x64.tar.bz2
veya -linux-arm.tar.bz2
dosyasını indiriniz.
İndirilen zip klasöründen sqlcmd
dosyasını ayıklayın.
Varsayılan olarak önceden yüklendiği için Azure Cloud Shell'den sqlcmd yardımcı programını deneyebilirsiniz:
Azure Data Studio'nde SQLCMD deyimlerini çalıştırmak için düzenleyici araç çubuğundan SQLCMD Etkinleştir seçeneğini seçin.
SQL Server Management Studio (SSMS) SQLCMD deyimlerini çalıştırmak için üst gezinti Sorgu Menüsü açılan listesinden SQLCMD Modu'nu seçin.
SSMS, Sorgu Düzenleyicisinormal ve SQLCMD modunda yürütülmesi için Microsoft .NET Framework SqlClient
kullanır. komut satırından sqlcmd çalıştırıldığında sqlcmd ODBC sürücüsünü kullanır. Farklı varsayılan seçenekler geçerli olabileceğinden, SQLCMD Modunda SSMS'de ve sqlcmd yardımcı programı aynı sorguyu yürütürken farklı davranışlar görebilirsiniz.
Usage:
sqlcmd [flags]
sqlcmd [command]
Examples:
# Install/Create, Query, Uninstall SQL Server
sqlcmd create mssql --accept-eula --using https://aka.ms/AdventureWorksLT.bak
sqlcmd open ads
sqlcmd query "SELECT @@version"
sqlcmd delete
# View configuration information and connection strings
sqlcmd config view
sqlcmd config cs
Available Commands:
completion Generate the autocompletion script for the specified shell
config Modify sqlconfig files using subcommands like "sqlcmd config use-context mssql"
create Install/Create SQL Server, Azure SQL, and Tools
delete Uninstall/Delete the current context
help Help about any command
open Open tools (e.g ADS) for current context
query Run a query against the current context
start Start current context
stop Stop current context
Flags:
-?, --? help for backwards compatibility flags (-S, -U, -E etc.)
-h, --help help for sqlcmd
--sqlconfig string configuration file (default "/Users/<currentUser>/.sqlcmd/sqlconfig")
--verbosity int log level, error=0, warn=1, info=2, debug=3, trace=4 (default 2)
--version print version of sqlcmd
Use "sqlcmd [command] --help" for more information about a command.
sqlcmd söz dizimi ve kullanımı hakkında daha ayrıntılı bilgi için bkz. odbc sqlcmd söz dizimi .
sqlcmd (Go) yardımcı programındaki çeşitli anahtarlar ve davranışlar değiştirilmiştir. Geriye dönük uyumluluk için eksik bayrakların en up-totarih listesi için GitHub tartışmasını arka uyumluluk bayraklarının uygulanmasına öncelik adresini ziyaret edin.
sqlcmd (Go) önceki sürümlerinde -P
anahtarı geçici olarak kaldırılmıştır ve SQL Server Kimlik Doğrulaması parolaları yalnızca şu mekanizmalar aracılığıyla sağlanabilirdi:
SQLCMDPASSWORD
ortam değişkeni:CONNECT
komutu
-r
bir 0
veya 1
bağımsız değişkeni gerektirir
-R
anahtarı kaldırılır.
-I
anahtarı kaldırılır. Tırnaklı tanımlayıcı davranışını devre dışı bırakmak için betiklerinize SET QUOTED IDENTIFIER OFF
ekleyin.
-N
artık şifreleme seçimini belirtmek için true
, false
veya disable
biri olabilecek bir dize değeri alır. (default
parametresinin atlanmasıyla aynıdır)
-N
ve -C
sağlanmazsa, sqlcmd sunucu sertifikasını doğrulamadan sunucuyla kimlik doğrulaması müzakeresi yapar.-N
sağlanmışsa ancak -C
sağlanmadıysa, sqlcmd sunucu sertifikasının doğrulanması gerekir. Şifreleme için false
değeri yine de oturum açma paketinin şifrelenmesini sağlayabilir.-N
hem de -C
sağlanırsa, sqlcmd şifreleme anlaşması için değerlerini kullanır.
-u
Oluşturulan Unicode çıkış dosyasında UTF-16 Little-Endian Byte-order işareti (BOM) yazılmıştır.
bazı veri türleri için sütun üst bilgilerinin hizalaması gibi OSQL
uyumluluğunu korumak için tutulan bazı davranışlar değiştirilebilir.
tüm komutlar, EXIT
bile tek satıra sığmalıdır. Etkileşimli mod, komutlar için açık parantezleri veya tırnak işaretlerini kontrol etmez ve ardışık satırlar için uyarıda bulunmaz. Bu davranış, EXIT(query)
tarafından çalıştırılan sorgunun birden çok satıra yayılmasına olanak tanıyan ODBC sürümünden farklıdır.
sqlcmd (Go) yardımcı programındaki bağlantılar TCP bağlantılarıyla sınırlıdır. Şu anda adlandırılmış kanallar go-mssqldb
sürücüsünde desteklenmiyor.
:Connect
artık Azure SQL Veritabanı için kimlik doğrulama yöntemlerinden birini seçmek için isteğe bağlı bir -G
parametresi vardır: SqlAuthentication
, ActiveDirectoryDefault
, ActiveDirectoryIntegrated
, ActiveDirectoryServicePrincipal
, ActiveDirectoryManagedIdentity
, ActiveDirectoryPassword
. Daha fazla bilgi için bkz. Microsoft Entra kimlik doğrulaması.
-G
sağlanmazsa, -U
kullanıcı adı parametresinin varlığına bağlı olarak Tümleşik güvenlik veya SQL Server kimlik doğrulaması kullanılır.
Yeni --driver-logging-level
komut satırı parametresi, go-mssqldb
sürücüsünden izlemeleri görmenizi sağlar. Tüm izleri görmek için 64
kullanın.
sqlcmd artık dikey biçim kullanarak sonuçları yazdırabilir. Ayarlamak için yeni -F vertical
komut satırı anahtarını kullanın.
SQLCMDFORMAT
betik değişkeni de bunu denetler.
Ayrılmış yönetici bağlantısıyla (DAC) SQL Server'da oturum açar. Bu tür bir bağlantı, sunucu sorunlarını gidermek için kullanılır. Bu bağlantı yalnızca DAC destekleyen sunucu bilgisayarlarıyla çalışır. DAC kullanılamıyorsa, sqlcmd bir hata iletisi oluşturur ve sonra çıkar. DAC hakkında daha fazla bilgi için bkz. Veritabanı Yöneticileri için Tanılama Bağlantısı.
-A
seçeneği -G
seçeneğiyle desteklenmez.
-A
kullanarak Azure SQL Veritabanı'na bağlanırken mantıksal SQL sunucusunda yönetici olmanız gerekir. DAC, Microsoft Entra yöneticisi tarafından kullanılamaz.
Bu seçenek istemci tarafından sunucu sertifikasına doğrulama olmadan örtük olarak güvenecek şekilde yapılandırmak için kullanılır. Bu seçenek, TRUSTSERVERCERTIFICATE = true
ADO.NET seçeneğine eşdeğerdir.
sqlcmd (Go) yardımcı programı için aşağıdaki koşullar da geçerlidir:
-N
ve -C
sağlanmadığında, sqlcmd sunucu sertifikasını doğrulamadan sunucuyla kimlik doğrulaması gerçekleştirir.-N
sağlanmışsa ancak -C
sağlanmadıysa, sqlcmd sunucu sertifikasının doğrulanması gerekir. Şifreleme için false
değeri yine de oturum açma paketinin şifrelenmesini sağlayabilir.-N
hem de -C
sağlanırsa, sqlcmd şifreleme anlaşması için değerlerini kullanır.sqlcmd başlattığınızda bir USE <db_name>
deyimi oluşturur. Bu seçenek, sqlcmd betik oluşturma değişkenini SQLCMDDBNAME
ayarlar. Bu parametre ilk veritabanını belirtir. Varsayılan, giriş bilgilerinizin varsayılan veritabanı özelliğidir. Veritabanı mevcut değilse bir hata mesajı oluşturulur ve sqlcmd kapanır.
-S
için sağlanan sunucu adını konak adı yerine DSN olarak yorumlar. Daha fazla bilgi için bkz. sqlcmd ve bcp'de DSN desteği ve sqlcmdile bağlantı kurma.
Not
-D
seçeneği yalnızca Linux ve macOS istemcilerinde kullanılabilir. Windows istemcilerinde, artık kullanılmayan ve yoksayılan, önceki bir seçeneğe atıfta bulunuyordu.
Bir sunucuya bağlanmaya çalıştığınızda sqlcmd ODBC sürücüsünde oturum açma işleminin zaman aşımına uğramasına önce geçmesi gereken saniye sayısını belirtir. Bu seçenek, sqlcmd betik oluşturma değişkenini SQLCMDLOGINTIMEOUT
ayarlar.
sqlcmd'e oturum açmak için varsayılan zaman aşımı 8 saniyedir. Azure SQL Veritabanı'na veya Azure Synapse Analytics'e bağlanmak ve Microsoft Entra Id kullanarak kimlik doğrulaması yapmak için -G
seçeneğini kullanırken en az 30 saniyelik bir zaman aşımı değeri önerilir. Oturum açma zaman aşımı, 0
ile 65534
arasında bir sayı olmalıdır. Sağlanan değer sayısal değilse veya bu aralığa girmiyorsa sqlcmd bir hata iletisi oluşturur.
0
değeri zaman aşımının sonsuz olacağını belirtir.
SQL Server'da oturum açmak için kullanıcı adı ve parola kullanmak yerine güvenilir bir bağlantı kullanır. Varsayılan olarak, -E
belirtilmediğinde sqlcmd güvenilen bağlantı seçeneğini kullanır.
-E
seçeneği, SQLCMDPASSWORD
gibi olası kullanıcı adı ve parola ortam değişkeni ayarlarını yoksayar.
-E
seçeneği -U
seçeneği veya -P
seçeneğiyle birlikte kullanılırsa bir hata iletisi oluşturulur.
Sütun Şifrelemesi ayarını Enabled
olarak ayarlar. Daha fazla bilgi için bkz. Always Encrypted . Yalnızca Windows Sertifika Deposu'nda depolanan ana anahtarlar desteklenir.
-g
seçeneği için en az sqlcmd sürümü 13.1gerekir. Sürümünüzü belirlemek için sqlcmd -?
'ı yürütün.
Bu seçenek istemci tarafından Azure SQL Veritabanı'na veya Azure Synapse Analytics'e bağlanırken kullanıcının Kimliğinin Microsoft Entra kimlik doğrulaması kullanılarak doğrulandığını belirtmek için kullanılır. Bu seçenek, sqlcmd betik oluşturma değişkenini SQLCMDUSEAAD = true
ayarlar.
-G
seçeneği için en az sqlcmd sürümü 13.1gerekir. Sürümünüzü belirlemek için sqlcmd -?
yürütün. Daha fazla bilgi için bkz. Microsoft Entra kimlik doğrulamasını kullanarak SQL Veritabanına veya Azure Synapse Analytics'e bağlanma.
-A
seçeneği -G
seçeneğiyle desteklenmez.
-G
seçeneği yalnızca Azure SQL Veritabanı ve Azure Synapse Analytics için geçerlidir.
Microsoft Entra etkileşimli kimlik doğrulaması şu anda Linux veya macOS'ta desteklenmiyor. Microsoft Entra tümleşik kimlik doğrulaması, SQL Server sürüm 17.6.1 veya üzeri için Microsoft ODBC Sürücüsü 17 ve Yapılandırılmış Kerberos ortamıgerektirir.
Microsoft Entra kimlik doğrulaması hakkında daha fazla bilgi için bkz. sqlcmd 'de Microsoft Entra kimlik doğrulaması.
İş istasyonu adı. Bu seçenek, sqlcmd betik oluşturma değişkenini ayarlar SQLCMDWORKSTATION
. İş istasyonu adı, sys.sysprocesses
katalog görünümünün hostname
sütununda listelenir ve sp_who
saklı yordamı kullanılarak döndürülebilir. Bu seçenek belirtilmezse, varsayılan değer geçerli bilgisayar adıdır. Bu ad, farklı sqlcmd oturumlarını tanımlamak için kullanılabilir.
Ham hata iletilerini ekrana yazdırır.
Sunucuya bağlanırken uygulama iş yükü türünü bildirir. Şu anda desteklenen tek değer ReadOnly
.
-K
belirtilmezse, sqlcmd bir kullanılabilirlik grubundaki ikincil çoğaltmaya bağlantıyı desteklemez. Daha fazla bilgi için bkz. Etkin İkinciller: Okunabilir İkincil Kopya (Her Zaman Açık Kullanılabilirlik Grupları).
SQL Server kullanılabilirlik grubunun veya SQL Server Yük Devretme Kümesi Örneğinin kullanılabilirlik grubu dinleyicisine bağlanırken her zaman -M
belirtin.
-M
, (şu anda) etkin sunucuya daha hızlı algılama ve bağlantı sağlar.
-M
belirtilmezse -M
kapalıdır.
Dinleyiciler, İstemci Bağlantısı, Uygulama Yük Devretmesi, Kullanılabilirlik Gruplarının Oluşturulması ve Yapılandırılması (SQL Server), Yük Devretme Kümelemesi ve Always On Kullanılabilirlik Grupları (SQL Server)ve Etkin İkinciller: Okunabilir İkincil Çoğaltmalar (Always On Kullanılabilirlik Grupları).
Bu seçenek, istemci tarafından şifreli bir bağlantı istemek için kullanılır.
sqlcmd (Go) yardımcı programı için -N
artık şifreleme seçimini belirtmek için true
, false
veya disable
biri olabilecek bir dize değeri alır. (default
parametresinin atlanmasıyla aynıdır):
-N
ve -C
sağlanmazsa, sqlcmd sunucu sertifikasını doğrulamadan sunucuyla kimlik doğrulaması anlaşması sağlar.-N
sağlanmışsa ancak -C
sağlanmadıysa, sqlcmd sunucu sertifikasının doğrulanması gerekir. Şifreleme için false
değeri yine de oturum açma paketinin şifrelenmesini sağlayabilir.-N
hem de -C
sağlanırsa, sqlcmd şifreleme anlaşması için değerlerini kullanır.Kullanıcı tarafından belirtilen bir parola. Parolalar büyük/küçük harfe duyarlıdır.
-U
seçeneği kullanılırsa ve -P
seçeneği kullanılmazsa ve SQLCMDPASSWORD
ortam değişkeni ayarlanmamışsa sqlcmd kullanıcıdan parola ister. Null (boş) parola kullanılmasını önermeyiz, ancak parametre değeri (""
) için bitişik çift tırnak işareti çifti kullanarak null parolayı belirtebilirsiniz.
Önemli
-P
kullanımı güvensiz olarak kabul edilmelidir. Komut satırında parola vermekten kaçının. Alternatif olarak, SQLCMDPASSWORD
ortam değişkenini kullanın veya -P
seçeneğini atlayarak parolayı etkileşimli olarak girin.
güçlü bir parola kullanmanızı öneririz.
Parola istemi konsola aşağıdaki gibi yazdırılarak görüntülenir: Password:
Kullanıcı girişi gizlidir. Başka bir deyişle hiçbir şey görüntülenmez ve imleç konumunda kalır.
SQLCMDPASSWORD
ortam değişkeni, geçerli oturum için varsayılan bir parola ayarlamanıza olanak tanır. Bu nedenle, parolaların toplu iş dosyalarına sabit kodlanması gerekmez. Aşağıdaki örnek önce komut isteminde SQLCMDPASSWORD
değişkenini ayarlar ve ardından sqlcmd yardımcı programına erişir.
Komut istemine şunu yazın:
SET SQLCMDPASSWORD=p@a$$w0rd
sqlcmd
SET SQLCMDPASSWORD=p@a$$w0rd
sqlcmd
SET SQLCMDPASSWORD=p@a$$w0rd
sqlcmd
Kullanıcı adı ve parola bileşimi yanlışsa bir hata iletisi oluşturulur.
Not
OSQLPASSWORD
ortam değişkeni geriye dönük uyumluluk için saklanmıştır.
SQLCMDPASSWORD
ortam değişkeni, OSQLPASSWORD
ortam değişkenine göre önceliklidir. Başka bir deyişle sqlcmd ve osql yan yana girişim olmadan kullanılabilir. Eski betikler çalışmaya devam ediyor.
-E
seçeneğiyle -P
seçeneği kullanılırsa bir hata iletisi oluşturulur.
-P
seçeneğinin ardından birden fazla bağımsız değişken gelirse, bir hata mesajı üretilir ve program sona erer.
Özel karakterler içeren bir parola bir hata iletisi oluşturabilir.
-P
kullanırken özel karakterlerden kurtulmanız veya bunun yerine SQLCMDPASSWORD
ortam değişkenini kullanmanız gerekir.
Bağlanacak SQL Server örneğini belirtir.
sqlcmd betik değişkenini ayarlar SQLCMDSERVER
.
Bu sunucu bilgisayardaki varsayılan SQL Server örneğine bağlanmak için server_name belirtin. Sunucu bilgisayardaki adlandırılmış bir SQL Server örneğine bağlanmak için [\instance_name] server_namebelirtin. Hiçbir sunucu bilgisayarı belirtilmezse, sqlcmd yerel bilgisayardaki varsayılan SQL Server örneğine bağlanır. Bu seçenek, ağdaki uzak bir bilgisayardan sqlcmd yürütürken gereklidir.
protokoltcp
(TCP/IP), lpc
(paylaşılan bellek) veya np
(adlandırılmış kanallar) olabilir.
sqlcmd başlattığınızda [\instance_name] server_namebelirtmezseniz, SQL Server SQLCMDSERVER
ortam değişkenini denetler ve bu değişkeni kullanır.
Not
OSQLSERVER
ortam değişkeni geriye dönük uyumluluk için saklanmıştır.
SQLCMDSERVER
ortam değişkeni, OSQLSERVER
ortam değişkenine göre önceliklidir. Başka bir deyişle sqlcmd ve osql yan yana girişim olmadan kullanılabilir. Eski yazılımlar çalışmaya devam ediyor.
Oturum açma adı veya içeriğinde bulunan veritabanı kullanıcı adı. İçerilen veritabanı kullanıcıları için veritabanı adı seçeneğini (-d
) sağlamanız gerekir.
Not
OSQLUSER
ortam değişkeni geriye dönük uyumluluk için saklanmıştır.
SQLCMDUSER
ortam değişkeni, OSQLUSER
ortam değişkenine göre önceliklidir. Başka bir deyişle sqlcmd ve osql yan yana girişim olmadan kullanılabilir. Eski betikler çalışmaya devam ediyor.
-U
veya -P
seçeneğini belirtmezseniz sqlcmd Windows Kimlik Doğrulama modunu kullanarak bağlanmaya çalışır. Kimlik doğrulaması, sqlcmd çalıştıran kullanıcının Windows hesabını temel alır.
-U
seçeneği -E
seçeneğiyle birlikte kullanılıyorsa (bu makalenin ilerleyen bölümlerinde açıklanmaktadır), bir hata iletisi oluşturulur.
-U
seçeneğinin ardından birden fazla bağımsız değişken gelirse, bir hata iletisi verilir ve program sonlanır.
Parolayı değiştirin:
sqlcmd -U someuser -P s0mep@ssword -z a_new_p@a$$w0rd
sqlcmd -U someuser -P s0mep@ssword -z a_new_p@a$$w0rd
sqlcmd -U someuser -P s0mep@ssword -z a_new_p@a$$w0rd
Parolayı değiştirin ve çıkın:
sqlcmd -U someuser -P s0mep@ssword -Z a_new_p@a$$w0rd
sqlcmd -U someuser -P s0mep@ssword -Z a_new_p@a$$w0rd
sqlcmd -U someuser -P s0mep@ssword -Z a_new_p@a$$w0rd
Giriş ve çıkış kodu sayfalarını belirtir. Kod sayfası numarası, yüklü bir Windows kod sayfasını belirten sayısal bir değerdir.
Kod sayfası dönüştürme kuralları:
Kod sayfası belirtilmezse, giriş dosyası Unicode dosyası olmadığı sürece sqlcmd hem giriş hem de çıkış dosyaları için geçerli kod sayfasını kullanır ve bu durumda dönüştürme gerekmez.
sqlcmd hem büyük hem de küçük endian Unicode giriş dosyalarını otomatik olarak tanır.
-u
seçeneği belirtilmişse, çıkış her zaman küçük endian Unicode olur.
Hiçbir çıkış dosyası belirtilmezse, çıkış kodu sayfası konsol kodu sayfasıdır. Bu yaklaşım, çıkışın konsolda doğru görüntülenmesini sağlar.
Birden çok giriş dosyasının aynı kod sayfasında olduğu varsayılır. Unicode ve Unicode olmayan giriş dosyaları karıştırılabilir.
cmd.exe
kod sayfasını doğrulamak için komut istemine chcp
girin.
Bir grup Transact-SQL deyimi veya saklı yordam içeren dosyayı tanımlar. Sırayla okunan ve işlenen birden çok dosya belirtilebilir. Dosya adları arasında boşluk kullanmayın.
sqlcmd, belirtilen tüm dosyaların mevcut olup olmadığını görmek için önce denetler. Bir veya daha fazla dosya yoksa sqlcmd çıkar.
-i
ve -Q
/-q
seçenekleri birbirini dışlar.
Not
-i
seçeneğini ve ardından bir veya daha fazla ek parametre kullanırsanız, parametre ile değer arasında bir boşluk kullanmanız gerekir. Bu, sqlcmd (Go) bilinen bir sorundur.
Yol örnekleri:
-i C:\<filename>
-i \\<Server>\<Share$>\<filename>
-i "C:\Some Folder\<file name>"
Boşluk içeren dosya yolları tırnak içine alınmalıdır.
Bu seçenek birden çok kez kullanılabilir:
sqlcmd -i <input_file1> -i <input_file2>
sqlcmd -i <input_file1> -i <input_file2>
sqlcmd -i <input_file1> -i <input_file2>
sqlcmdçıktısını alan dosyayı tanımlar.
-u
belirtilirse, output_file Unicode biçiminde depolanır. Dosya adı geçerli değilse bir hata iletisi oluşturulur ve sqlcmd kapatılır.
sqlcmd, aynı dosyaya birden çok sqlcmd işleminin eşzamanlı olarak yazıldığını desteklemez. Dosya çıktısı bozuk veya yanlış.
-f
seçeneği de dosya biçimleriyle ilgilidir. Bu dosya yoksa oluşturulur. Önceki sqlcmd oturumundan aynı ada sahip bir dosyanın üzerine yazılır. Burada belirtilen dosya stdout
dosyası değil. bir stdout
dosyası belirtilirse, bu dosya kullanılmaz.
Yol örnekleri:
-o C:< filename>
-o \\<Server>\<Share$>\<filename>
-o "C:\Some Folder\<file name>"
Boşluk içeren dosya yolları tırnak içine alınmalıdır.
Hata mesajı çıkışını ekrana (stderr
) yönlendirir. Parametre belirtmezseniz veya 0
belirtirseniz, yalnızca önem düzeyi 11 veya daha yüksek olan hata iletileri yeniden yönlendirilir.
1
belirtirseniz, PRINT
dahil olmak üzere tüm hata iletisi çıkışı yeniden yönlendirilir.
-o
kullanıyorsanız bu seçeneğin hiçbir etkisi olmaz. varsayılan olarak, iletiler stdout
gönderilir.
Not
sqlcmd (Go) yardımcı programı için -r
bir 0
veya 1
bağımsız değişkeni gerektirir.
Şunlar için geçerlidir: yalnızca sqlcmd ODBC.
sqlcmd istemcinin yerel ayarına göre SQL Server'dan alınan sayısal, para birimi, tarih ve saat sütunlarını yerelleştirmesine neden olur. Varsayılan olarak, bu sütunlar sunucunun bölgesel ayarları kullanılarak görüntülenir.
input_filebiçiminden bağımsız olarak output_file Unicode biçiminde depolandığını belirtir.
Not
sqlcmd (Go) yardımcı programı için, oluşturulmuş Unicode çıkış dosyasına UTF-16 Little-Endian Bayt sırası işareti (BOM) yazılmıştır.
Giriş betiklerini standart çıkış cihazına (stdout
) yazar.
Şunlar için geçerlidir: yalnızca sqlcmd ODBC.
SET QUOTED_IDENTIFIER
bağlantı seçeneğini ON
olarak ayarlar. Varsayılan olarak, OFF
olarak ayarlanır. Daha fazla bilgi için bkz. SET QUOTED_IDENTIFIER (Transact-SQL).
Not
sqlcmd (Go) yardımcı programında tanımlayıcı tırnak davranışını devre dışı bırakmak için betiklerinize SET QUOTED IDENTIFIER OFF
olarak ekleyin.
sqlcmd başlatıldığında sorgu yürütür, ancak sorgunun çalışması tamamlandığında sqlcmd çıkmaz. Birden çok noktalı virgülle ayrılmış sorgu yürütülebilir. Aşağıdaki örnekte gösterildiği gibi sorgunun çevresinde tırnak işaretleri kullanın.
Komut istemine şunu yazın:
sqlcmd -d AdventureWorks2022 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2022 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2022 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
Önemli
Sorguda GO
sonlandırıcısını kullanmayın.
-b
bu seçenekle birlikte belirtilirse sqlcmd hata durumundan çıkar.
-b
bu makalenin başka bir yerinde açıklanmıştır.
sqlcmd başlatıldığında bir sorgu yürütür ve ardından sqlcmd hemen çıkar. Birden çok noktalı virgülle ayrılmış sorgu yürütülebilir.
Aşağıdaki örnekte gösterildiği gibi sorgunun çevresinde tırnak işaretleri kullanın.
Komut istemine şunu yazın:
sqlcmd -d AdventureWorks2022 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2022 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2022 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
Önemli
Sorguda GO
sonlandırıcısını kullanmayın.
-b
bu seçenekle birlikte belirtilirse, sqlcmd bir hata durumunda çıkış yapar.
-b
bu makalenin başka bir yerinde açıklanmıştır.
Bir komutun (veya Transact-SQL deyiminin) zaman aşımına uğramasından önceki saniye sayısını belirtir. Bu seçenek, sqlcmd betik değişkenini SQLCMDSTATTIMEOUT
belirler.
query_timeout değeri belirtilmezse komut zaman aşımına neden olmaz. query_timeout1
ile 65534
arasında bir sayı olmalıdır. Sağlanan değer sayısal değilse veya bu aralığa girmiyorsa sqlcmd bir hata iletisi oluşturur.
Not
Gerçek zaman aşımı değeri, belirtilen query_timeout değerinden birkaç saniye kadar değişebilir.
sqlcmd betiğinde kullanılabilecek bir sqlcmd betik değişkeni oluşturur. Değer boşluk içeriyorsa, değeri tırnak içine alın. Birden çok <var>="<value>"
değeri belirtebilirsiniz. Belirtilen değerlerden herhangi birinde hatalar varsa, sqlcmd bir hata iletisi oluşturur ve sonra çıkar.
sqlcmd -v MyVar1=something MyVar2="some thing"
sqlcmd -v MyVar1=something -v MyVar2="some thing"
sqlcmd -v MyVar1=something MyVar2="some thing"
sqlcmd -v MyVar1=something -v MyVar2="some thing"
sqlcmd -v MyVar1=something MyVar2="some thing"
sqlcmd -v MyVar1=something -v MyVar2="some thing"
sqlcmd'in betik değişkenlerini yoksaymasına neden olur. Bu parametre, bir betik $(<variable_name>)
gibi normal değişkenlerle aynı biçime sahip dizeler içerebilen birçok INSERT
deyimi içerdiğinde yararlıdır.
Sütun başlıkları arasında yazdırılacak satır sayısını belirtir. Varsayılan ayar, her sorgu sonucu kümesi için başlıkları bir kez yazdırmaktır. Bu seçenek, sqlcmd betik değişkenini SQLCMDHEADERS
ayarlar. Üst bilgilerin yazdırılmaması gerektiğini belirtmek için -1
kullanın. Geçerli olmayan herhangi bir değer sqlcmd bir hata iletisi oluşturmasına ve ardından çıkışına neden olur.
Sekmeler ve yeni satır karakterleri gibi tüm denetim karakterlerini çıkıştan kaldırır. Bu parametre, veriler döndürülürken sütun biçimlendirmeyi korur.
-k
denetim karakterlerini kaldırır.-k1
her denetim karakterini bir boşlukla değiştirir.-k2
, ardışık denetim karakterlerini tek bir boşlukla değiştirir.Sütun ayırıcı karakterini belirtir. Varsayılan değer boş bir alandır. Bu seçenek, sqlcmd betik değişkenini SQLCMDCOLSEP
ayarlar. İşletim sistemi için özel anlamı olan karakterler, örneğin ampersand (&
) veya noktalı virgül (;
) kullanırken, karakteri tırnak işareti ("
) içine alın. Sütun ayırıcı herhangi bir 8 bit karakter olabilir.
Çıktının ekran genişliğini belirtir. Bu seçenek sqlcmd betik değişkenini SQLCMDCOLWIDTH
ayarlar. Sütun genişliği, 8
'den büyük ve 65536
küçük bir sayı olmalıdır. Belirtilen sütun genişliği bu aralığa düşmezse sqlcmd bir hata iletisi oluşturur. Varsayılan genişlik 80 karakterdir. Çıkış satırı belirtilen sütun genişliğini aştığında, sonraki satıra kaydırılır.
Bu seçenek bir sütundan sondaki boşlukları kaldırır. Başka bir uygulamaya aktarılacak verileri hazırlarken bu seçeneği -s
seçeneğiyle birlikte kullanın.
-y
veya -Y
seçenekleriyle kullanılamaz.
sqlcmd betik değişkenini ayarlar SQLCMDMAXVARTYPEWIDTH
. Varsayılan değer 256
. Büyük değişken uzunluğundaki veri türleri için döndürülen karakter sayısını sınırlar:
UDF'ler uygulamaya bağlı olarak sabit uzunlukta olabilir. Sabit uzunluktaki UDT'nin uzunluğu display_widthdaha kısaysa döndürülen UDT değeri etkilenmez. Ancak, uzunluk display_width'den uzunsa çıkış kesilir.
Dikkat
Döndürülen verilerin boyutuna bağlı olarak hem sunucuda hem de ağda önemli performans sorunlarına neden olabileceğinden, -y 0
seçeneğini çok dikkatli kullanın.
sqlcmd betik değişkenini SQLCMDMAXFIXEDTYPEWIDTH
ayarlar. Varsayılan değer 0
(sınırsız). Aşağıdaki veri türleri için döndürülen karakter sayısını sınırlar:
sqlcmd çıkış yapıp bir hata oluştuğunda DOS ERRORLEVEL
değeri döndürdüğünü belirtir. SQL Server hata iletisinin önem düzeyi 10'dan büyük olduğunda ERRORLEVEL
değişkenine döndürülen değer 1
; aksi takdirde, döndürülen değer 0
.
-b
ek olarak -V
seçeneği ayarlanmışsa, önem düzeyi -V
kullanılarak ayarlanan değerlerden düşükse sqlcmd hata bildirmez. Komut istemi toplu iş dosyaları ERRORLEVEL
değerini test edebilir ve hatayı uygun şekilde işleyebilir.
sqlcmd ciddiyet seviyesi 10 (bilgilendirme mesajları) için hataları bildirmez.
sqlcmd betiği yanlış bir yorum, sözdizimi hatası içeriyorsa veya bir betik değişkeni eksikse, ERRORLEVEL
olarak döndürülen 1
olur.
stdout
'a gönderilecek hata iletilerini denetler. Önem düzeyi bu düzeyden büyük veya bu düzeye eşit olan iletiler gönderilir. Bu değer -1
olarak ayarlandığında, bilgilendiren iletiler de dahil olmak üzere tüm iletiler gönderilir.
-m
ile -1
arasında boşluklara izin verilmez. Örneğin, -m-1
geçerli ve -m -1
geçerli değil.
Bu seçenek ayrıca sqlcmd betik oluşturma değişkeni SQLCMDERRORLEVEL
ayarlar. Bu değişkenin varsayılan 0
değeri vardır.
ERRORLEVEL
değişkenini ayarlamak için kullanılan önem düzeyini denetler.
ERRORLEVEL
bu değer kümesinden büyük veya buna eşit önem düzeylerine sahip hata iletileri. 0'dan küçük değerler 0
olarak bildirilir. Batch ve CMD dosyaları, ERRORLEVEL
değişkeninin değerini test etmek için kullanılabilir.
Farklı boyutta bir paket isteğinde bulunur. Bu seçenek, sqlcmd betik oluşturma değişkenini SQLCMDPACKETSIZE
ayarlar.
packet_size512
ile 32767
arasında bir değer olmalıdır. Varsayılan değer 4096
. Daha büyük bir paket boyutu, GO
komutları arasında çok sayıda Transact-SQL deyimi içeren betiklerin yürütülmesi için performansı artırabilir. Daha büyük bir paket boyutu isteyebilirsiniz. Ancak, istek reddedilirse sqlcmd paket boyutu için varsayılan sunucuyu kullanır.
Toplu iş sonlandırıcısını belirtir. Varsayılan olarak komutlar sonlandırılır ve tek başına bir satıra GO
sözcüğü yazılarak SQL Server'a gönderilir. Toplu iş sonlandırıcısını sıfırladığınızda, önünde ters eğik çizgi olsa bile işletim sistemi için özel anlamı olan Transact-SQL ayrılmış anahtar sözcükleri veya karakterleri kullanmayın.
Yerel olarak yapılandırılmış sunucu bilgisayarlarını ve ağda yayınlayan sunucu bilgisayarlarının adlarını listeler. Bu parametre diğer parametrelerle birlikte kullanılamaz. Listelenebilen en fazla sunucu bilgisayarı sayısı 3000'dir. Sunucu listesi, arabellek kapasitesi nedeniyle kesilirse bir uyarı mesajı görüntülenir.
Not
Ağlarda yayın özelliği nedeniyle sqlcmd tüm sunuculardan zamanında yanıt alamayabilir. Bu nedenle, döndürülen sunucuların listesi bu seçeneğin her çağrısı için farklılık gösterebilir.
İsteğe bağlı parametre c
belirtilirse, çıkış Servers:
üst bilgi satırı olmadan görüntülenir ve her sunucu satırı başta boşluk olmadan listelenir. Bu sunum temiz çıktı olarak adlandırılır. Temiz çıkış, betik dillerinin işleme performansını artırır.
Her sonuç kümesi için performans istatistiklerini yazdırır. Aşağıdaki görüntü, performans istatistiklerinin biçimine bir örnektir:
Network packet size (bytes): n
x xact[s]:
Clock Time (ms.): total t1 avg t2 (t3 xacts per sec.)
Nerede:
x
= SQL Server tarafından işlenen işlem sayısı.t1
= Tüm işlemler için toplam süre.t2
= Tek bir işlemin ortalama süresi.t3
= Saniye başına ortalama işlem sayısı.Tüm zamanlar milisaniye cinsindendir.
İsteğe bağlı parametre 1
belirtilirse, istatistiklerin çıkış biçimi, bir elektronik tabloya kolayca aktarılabilen veya bir betik tarafından işlenebilen, iki nokta ile ayrılmış bir formatta olur.
İsteğe bağlı parametre 1
dışında bir değerse bir hata oluşturulur ve sqlcmd çıkar.
bir toplu iş dosyasından sqlcmd yürütürken sistem güvenliğini tehlikeye atabilecek komutları devre dışı bırakır. Devre dışı bırakılan komutlar hala tanınıyor; sqlcmd bir uyarı iletisi oluşturur ve devam eder. İsteğe bağlı parametre 1
belirtilirse, sqlcmd bir hata iletisi oluşturur ve sonra çıkar.
-X
seçeneği kullanıldığında aşağıdaki komutlar devre dışı bırakılır:
ED
!!
komut
-X
seçeneği belirtilirse, ortam değişkenlerinin sqlcmd'a geçirilmesini engeller. Ayrıca SQLCMDINI
betik değişkeni kullanılarak belirtilen başlangıç betiğinin yürütülmesini engeller.
sqlcmd betik değişkenleri hakkında daha fazla bilgi için bkz. sqlcmd -betik değişkenleriyle kullanma.
sqlcmd sürümünü ve sqlcmd seçeneklerinin söz dizimi özetini görüntüler.
Not
macOS'ta bunun yerine sqlcmd '-?'
(tırnak işaretleri ile) çalıştırın.
Seçeneklerin söz dizimi bölümünde gösterilen sırayla kullanılması gerekmez.
Not
-i
seçeneğini ve ardından bir veya daha fazla ek parametre kullanırsanız, parametre ile değer arasında bir boşluk kullanmanız gerekir. Bu, sqlcmd (Go) içinde bilinen bir sorundur.
Birden çok sonuç döndürülürse sqlcmd, toplu işlemdeki her sonuç kümesi arasında boş bir satır yazdırır. Ayrıca, <x> rows affected
iletisi yürütülen deyime uygulanmadığında görünmez.
sqlcmd etkileşimli olarak kullanmak için, komut istemine bu makalenin önceki bölümlerinde açıklanan seçeneklerden herhangi biriyle veya daha fazlasıyla sqlcmd
yazın. Daha fazla bilgi için bkz. Sqlcmd Yardımcı Programı kullanma
Not
-l
, -Q
, -Z
veya -i
seçenekleri, yürütüldükten sonra sqlcmd çıkmasına neden olur.
Tüm bağımsız değişkenler ve genişletilmiş değişkenler dahil olmak üzere, komut ortamındaki sqlcmd komut satırının toplam uzunluğu (örneğin cmd.exe
veya bash
), temel işletim sistemi tarafından belirlenir.
SET X=Y
), sqlcmd çalıştırmadan önce komut isteminde ayarlanır.sqlcmd -v X=Y
:Setvar X Y
Not
Ortam değişkenlerini görüntülemek için, Denetim Masası'nde Sistem açın ve gelişmiş sekmesini seçin.
Değişken | İlgili seçenek | R/W | Varsayılan |
---|---|---|---|
SQLCMDUSER | -U | R | "" |
SQLCMDPASSWORD | -P | -- | "" |
SQLCMDSERVER | -S | R | VarsayılanYerelÖrnek |
SQLCMDWORKSTATION | -H | R | Bilgisayar Adı |
SQLCMDDBNAME | -d | R | "" |
SQLCMDLOGINTIMEOUT | -l | R/W | "8" (saniye) |
SQLCMDSTATTIMEOUT | -t | R/W | "0" = süresiz olarak bekleyin |
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 | "" | |
SQLCMDUSEAAD | -G | R/W | "" |
:Connect
kullanıldığında SQLCMDUSER
, SQLCMDPASSWORD
ve SQLCMDSERVER
ayarlanır.
R
değerin program başlatma sırasında yalnızca bir kez ayarlanabileceğini gösterir.
R/W
değerin :setvar
komutu kullanılarak değiştirilebileceğini ve sonraki komutların yeni değerden etkilendiğini gösterir.
sqlcmdiçindeki Transact-SQL deyimlerine ek olarak aşağıdaki komutlar da kullanılabilir:
GO
[ sayısı ]
:List
[:]RESET
:Error
[:]ED
:Out
[:]!!
:Perftrace
[:]QUIT
:Connect
[:]EXIT
:On Error
:r
:Help
:ServerList
:XML [ ON | OFF ]
:Setvar
:Listvar
sqlcmd komutlarını kullanırken aşağıdakilere dikkat edin:
GO
dışındaki tüm sqlcmd komutlarının başına iki nokta (:
) eklenmelidir.
Önemli
Mevcut osql betikleriyle geriye dönük uyumluluğu korumak için, bazı komutlar :
ile belirtilen iki nokta olmadan tanınır.
sqlcmd komutları yalnızca satırın başında göründüklerinde tanınır.
Tüm sqlcmd komutları büyük/küçük harfe duyarlı değildir.
Her komut ayrı bir satırda olmalıdır. Bir komutun ardından bir Transact-SQL deyimi veya başka bir komut eklenemez.
Komutlar hemen yürütülür. Onlar, Transact-SQL deyimleri gibi yürütme arabelleğine yerleştirilmezler.
Metin düzenleyicisini başlatır. Bu düzenleyici geçerli Transact-SQL toplu işlemini veya son yürütülen toplu işlemi düzenlemek için kullanılabilir. Son yürütülen toplu işlemi düzenlemek için, ED
komutunun son toplu işlemin yürütülmesi tamamlandıktan hemen sonra yazılması gerekir.
Metin düzenleyicisi SQLCMDEDITOR
ortam değişkeni tarafından tanımlanır. Varsayılan düzenleyici Edit
. Düzenleyiciyi değiştirmek için SQLCMDEDITOR
ortam değişkenini ayarlayın. Örneğin, düzenleyiciyi Microsoft Not Defteri olarak ayarlamak için komut istemine şunu yazın:
SET SQLCMDEDITOR=notepad
Komut önbelleğini temizler.
Deyim önbelleğinin içeriğini yazdırır.
sqlcmd betik oluşturma değişkenlerini tanımlar. Betik oluşturma değişkenleri şu biçime sahiptir: $(VARNAME)
.
Değişken adları büyük/küçük harfe duyarlı değildir.
Betikleme değişkenleri şu şekillerde ayarlanabilir:
Komut satırı seçeneğini örtük olarak kullanma. Örneğin, -l
seçeneği SQLCMDLOGINTIMEOUT
sqlcmd değişkenini ayarlar.
açıkça :Setvar
komutunu kullanarak.
sqlcmdçalıştırmadan önce bir ortam değişkeni tanımlayarak.
Not
-X
seçeneği, ortam değişkenlerinin sqlcmd'a geçirilmesini engeller.
:Setvar
ve ortam değişkeni kullanılarak tanımlanan bir değişkenin adı aynıysa, :Setvar
kullanılarak tanımlanan değişken önceliklidir.
Değişken adları boş boşluk karakterleri içermemelidir.
Değişken adları, $(var)
gibi bir değişken ifadesiyle aynı forma sahip olamaz.
Betik değişkeninin dize değeri boş boşluklar içeriyorsa, değeri tırnak içine alın. Betik değişkeni için bir değer belirtilmezse, betik değişkeni bırakılır.
Şu anda ayarlanmış olan betik oluşturma değişkenlerinin listesini görüntüler.
Not
Yalnızca sqlcmdtarafından ayarlanan betik oluşturma değişkenleri ve :Setvar
komutu kullanılarak ayarlananlar görüntülenir.
Tüm hata çıktılarını dosya adıtarafından belirtilen dosyaya stderr
veya stdout
yönlendirin.
:Error
komutu betikte birden çok kez görünebilir. Varsayılan olarak, hata çıktısı stderr
gönderilir.
dosya adı
Çıktıyı alan bir dosya oluşturur ve açar. Dosya zaten varsa, sıfır bayt olarak kesilir. dosya izinler veya başka nedenlerle kullanılamıyorsa, çıkış değiştirilmez ve son belirtilen veya varsayılan hedefe gönderilir.
STDERR
Hata çıkışını stderr
akışına değiştirir. Bu yeniden yönlendirildiyse, akışın yeniden yönlendirildiği hedef hata çıkışını alır.
STDOUT
Hata çıkışını stdout
akışına değiştirir. Bu yeniden yönlendirildiyse, akışın yeniden yönlendirildiği hedef hata çıkışını alır.
Tüm sorgu sonuçlarını dosya adıyla belirtilen dosyaya stderr
veya stdout
yönlendirir. Varsayılan olarak, çıktı stdout
'a gönderilir. Dosya zaten varsa, sıfır bayt olarak kesilir.
:Out
komutu betikte birden çok kez görünebilir.
Tüm performans izleme bilgilerini dosya adıyla belirtilen dosyaya stderr
veya stdout
yönlendirir. Varsayılan olarak performans izleme çıktısı stdout
'a gönderilir. Dosya zaten varsa, sıfır bayt olarak kesilir.
:Perftrace
komutu betikte birden çok kez görünebilir.
Betik veya toplu yürütme sırasında bir hata oluştuğunda gerçekleştirilecek eylemi ayarlar.
exit
seçeneği kullanıldığında sqlcmd uygun hata değeriyle çıkar.
ignore
seçeneği kullanıldığında, sqlcmd hatayı yoksayar ve toplu işlemi veya betiği yürütmeye devam eder. Varsayılan olarak, bir hata iletisi yazdırılır.
sqlcmd çıkmasına neden olur.
SELECT
deyiminin sonucunu sqlcmd'den dönüş değeri olarak kullanmanızı sağlar. Sayısalsa, son sonuç satırının ilk sütunu 4 baytlık tamsayıya (uzun) dönüştürülür. MS-DOS, Linux ve macOS, alt baytı üst süreç veya işletim sistemi hata düzeyine iletir. Windows 2000 ve sonraki sürümleri 4 baytlık tamsayının tamamını geçirir. Söz dizimi :EXIT(query)
.
Örneğin:
:EXIT(SELECT @@ROWCOUNT)
:EXIT
parametresini bir toplu iş dosyasının parçası olarak da ekleyebilirsiniz. Örneğin, komut istemine şunu yazın:
sqlcmd -Q ":EXIT(SELECT COUNT(*) FROM '%1')"
sqlcmd yardımcı programı, parantezler (()
) arasındaki her şeyi sunucuya gönderir. Sistem saklı yordamı bir küme seçer ve bir değer döndürürse, yalnızca seçim döndürülür. Parantezler arasında hiçbir şey olmayan :EXIT()
deyimi, toplu işlemde ondan önceki her şeyi yürütür ve sonra dönüş değeri olmadan çıkar.
Yanlış bir sorgu belirtildiğinde, sqlcmd dönüş değeri olmadan çıkış yapar.
EXIT
biçimlerinin listesi aşağıdadır:
:EXIT
Toplu işlemi yürütmez, hemen sona erer ve hiçbir değer döndürmez.
:EXIT( )
Toplu işlemi yürütür, ardından çıkar ve bir değer döndürmez.
:EXIT(query)
Sorguyu içeren toplu işlemi yürütür ve sorgunun sonuçlarını döndürdüğünde sonlanır.
RAISERROR
bir sqlcmd betiği içinde kullanılırsa ve 127 durumu oluşursa, sqlcmd sonlanır ve ileti kimliğini istemciye geri bildirir. Mesela:
RAISERROR(50001, 10, 127)
Bu hata, sqlcmd betiğinin sona erip istemciye 50001 ileti kimliğini döndürmesine neden olur.
-1
'dan -99
'ye kadar olan dönüş değerleri SQL Server tarafından ayrılmıştır ve sqlcmd aşağıdaki ek dönüş değerlerini tanımlar:
Dönüş değeri | Açıklama |
---|---|
-100 | Dönüş değeri seçmeden önce hatayla karşılaşıldı. |
-101 | Dönüş değeri seçilirken satır bulunamadı. |
-102 | Dönüş değeri seçilirken dönüştürme hatası oluştu. |
GO
hem toplu iş sonunu hem de önbelleğe alınmış Transact-SQL deyimlerinin yürütülmesini bildirir. Toplu iş, ayrı toplu iş olarak birden çok kez yürütülür. Tek bir toplu işte birden fazla değişken bildiremezsiniz.
Belirtilen dosya adı içindeki ek Transact-SQL deyimleri ve sqlcmd komutlarını deyim önbelleğine ayrıştırır. dosya adı, sqlcmd çalıştırıldığı başlangıç dizinine göre okunur.
Dosyada GO
tarafından takip edilmeen Transact-SQL deyimleri varsa, :r
izleyen satıra GO
girmeniz gerekir.
Dosya, bir toplu iş sonlandırıcısı ile karşılaşıldıktan sonra okunur ve yürütülür. Birden çok :r
komutu yayımlayabilirsiniz. Dosya, toplu iş sonlandırıcısı GO
de dahil olmak üzere herhangi bir sqlcmd komutu içerebilir.
Not
Etkileşimli modda görüntülenen satır sayısı, karşılaşılan her :r
komutu için bir artırılır.
:r
komutu, liste komutunun çıkışında görünür.
Yerel olarak yapılandırılmış sunucuları ve ağda yayınlayan sunucuların adlarını listeler.
SQL Server örneğine bağlanır. Ayrıca geçerli bağlantıyı kapatır.
Zaman aşımı seçenekleri:
Değer | Davranış |
---|---|
0 |
Sonsuza kadar bekle |
n>0 |
n saniye bekleyin |
SQLCMDSERVER
betik değişkeni geçerli etkin bağlantıyı yansıtır.
zaman aşımı belirtilmezse, SQLCMDLOGINTIMEOUT
değişkeninin değeri varsayılan değerdir.
Yalnızca user_name belirtilirse (seçenek olarak veya ortam değişkeni olarak), kullanıcıdan parola girmesi istenir. Kullanıcılardan SQLCMDUSER
veya SQLCMDPASSWORD
ortam değişkenlerinin ayarlı olup olmadığı sorulmuyor. Seçenekler veya ortam değişkenleri sağlamazsanız, oturum açmak için Windows Kimlik Doğrulama modu kullanılır. Örneğin, tümleşik güvenlik kullanarak SQL Server instance1
myserver
bir örneğe bağlanmak için aşağıdaki komutu kullanırsınız:
:connect myserver\instance1
Betik oluşturma değişkenlerini kullanarak varsayılan myserver
örneğine bağlanmak için aşağıdaki ayarları kullanırsınız:
:setvar myusername test
:setvar myservername myserver
:connect $(myservername) $(myusername)
İşletim sistemi komutlarını yürütür. bir işletim sistemi komutu yürütmek için, iki ünlem işareti (!!
) ve ardından işletim sistemi komutunu içeren bir satır başlatın. Örneğin:
:!! dir
Not
komut, sqlcmd çalıştığı bilgisayarda yürütülür.
Daha fazla bilgi için bu makaledeki XML Çıktı Biçimi ve JSON Çıktı Biçimi konusuna bakın.
sqlcmd komutlarını ve her komutun kısa bir açıklamasını listeler.
sqlcmd giriş dosyaları -i
seçeneği veya :r
komutuyla belirtilebilir. Çıkış dosyaları -o
seçeneği veya :Error
, :Out
ve :Perftrace
komutları ile belirtilebilir. Bu dosyalarla çalışmaya yönelik bazı yönergeler aşağıdadır:
:Error
, :Out
ve :Perftrace
ayrı dosya adı değerleri kullanmalıdır. Aynı dosya adı kullanılırsa, komutlardan gelen girişler karıştırılabilir.
Uzak sunucuda bulunan bir giriş dosyası yerel bilgisayardaki sqlcmd çağrılırsa ve dosya :Out c:\OutputFile.txt
gibi bir sürücü dosyası yolu içeriyorsa, çıkış dosyası uzak sunucuda değil yerel bilgisayarda oluşturulur.
Geçerli dosya yolları şunlardır: C:\<filename>
, \\<Server>\<Share$>\<filename>
ve "C:\Some Folder\<file name>"
. Yolda boşluk varsa tırnak işaretlerini kullanın.
Her yeni sqlcmd oturumu, aynı adlara sahip mevcut dosyaların üzerine yazar.
sqlcmd sunucu tarafından gönderilen tüm bilgilendirici mesajları yazdırır. Aşağıdaki örnekte, Transact-SQL deyimleri yürütüldükten sonra bilgilendirici bir mesaj yazdırılır.
sqlcmdbaşlatın. sqlcmd komut istemine sorguyu yazın:
USE AdventureWorks2022;
GO
ENTER tuşuna bastığınızda aşağıdaki bilgi iletisi yazdırılır:
Changed database context to 'AdventureWorks2022'.
sqlcmd önce seçme listesinde belirtilen sütun adlarını içeren bir sütun üst bilgisini yazdırır. Sütun adları, SQLCMDCOLSEP
karakteri kullanılarak ayrılır. Varsayılan olarak, bu bir boşlukdur. Sütun adı sütun genişliğinden daha kısaysa, verinin çıktısı sonraki sütuna kadar boşluklarla doldurulur.
Bu satırın ardından bir dizi tire karakteri olan ayırıcı çizgi gelir. Aşağıdaki çıktıda bir örnek gösterilmektedir.
sqlcmdbaşlatın. sqlcmd komut istemine sorguyu yazın:
USE AdventureWorks2022;
SELECT TOP (2) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO
ENTERbastığınızda aşağıdaki sonuç kümesi döndürülür.
BusinessEntityID FirstName LastName
---------------- ------------ ----------
285 Syed Abbas
293 Catherine Abel
(2 row(s) affected)
BusinessEntityID
sütunu yalnızca dört karakter genişliğinde olsa da, daha uzun sütun adını barındıracak şekilde genişletilmiştir. Varsayılan olarak, çıkış 80 karakterde sonlandırılır. Bu genişlik, -w
seçeneği kullanılarak veya SQLCMDCOLWIDTH
betik değişkeni ayarlanarak değiştirilebilir.
FOR XML
yan tümcesinin sonucu olan XML, sürekli bir akış halinde ve biçimlendirilmemiş olarak üretilir.
XML çıktısı beklerken şu komutu kullanın: :XML ON
.
Not
sqlcmd hata iletilerini normal biçimde döndürür. Hata iletileri, XML formatında XML metin akışında da çıktı olarak verilir.
:XML ON
kullanılarak sqlcmd bilgi mesajlarını görüntülemez.
XML modunu kapalı olarak ayarlamak için şu komutu kullanın: :XML OFF
.
:XML OFF
komutu sqlcmd satır odaklı çıkışa geriGO
komutu, :XML OFF
komutu verilmeden önce görüntülenmemelidir.
XML (akışlı) verileri ve satır kümesi verileri karıştırılamaz. XML akışlarını veren bir Transact-SQL deyimi yürütülmeden önce :XML ON
komutu verilmediyse, çıktı bozuk olur.
:XML ON
komutu verildikten sonra, normal satır kümelerinin çıktısını veren Transact-SQL deyimleri yürütemezsiniz.
Not
:XML
komutu SET STATISTICS XML
deyimini desteklemez.
JSON çıkışı beklerken şu komutu kullanın: :XML ON
. Aksi takdirde, çıkış hem sütun adını hem de JSON metnini içerir. Bu çıkış geçerli JSON değil.
XML modunu kapalı olarak ayarlamak için şu komutu kullanın: :XML OFF
.
Daha fazla bilgi için bu makaledeki XML Çıktı Biçimi bakın.
Microsoft Entra kimlik doğrulamayı kullanan örnekler:
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -U bob@contoso.com -P MyAzureADPassword -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -U bob@contoso.com -P MyAzureADPassword -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -U bob@contoso.com -P MyAzureADPassword -l 30
Güvenlik ve verimliliği en üst düzeye çıkarmak için aşağıdaki uygulamaları kullanın.
Tümleşik güvenliği kullanın.
Otomatik ortamlarda -X[1]
kullanın.
Uygun dosya sistemi izinlerini kullanarak giriş ve çıkış dosyalarının güvenliğini sağlayın.
Performansı artırmak için, bir sqlcmd oturumunda olabildiğince çok işlem yapın, bir dizi oturum yerine.
Toplu iş veya sorgu yürütme için zaman aşımı değerlerini, toplu işlemi veya sorguyu yürütmek için gerekenden daha yüksek bir değere ayarlayın.
Doğruluğu en üst düzeye çıkarmak için aşağıdaki uygulamaları kullanın:
önem derecesi 16 düzeyindeki iletileri günlüğe kaydetmek için -V 16
kullanın. Önem derecesi 16 iletileri, kullanıcı tarafından düzeltilebilen genel hatalara işaret eder.
İşlem çıktıktan sonra çıkış kodunu ve DOS ERRORLEVEL
değişkenini denetleyin. sqlcmd 'ı normal şekilde 0
döndürür, aksi takdirde ERRORLEVEL
'ü -V
tarafından yapılandırıldığı biçimde ayarlar. Başka bir deyişle, ERRORLEVEL
SQL Server'dan bildirilen hata numarasıyla aynı değer olması beklenemez. Hata numarası, @@ERRORsistem işlevine karşılık gelen SQL Server'a özgü bir değerdir.
ERRORLEVEL
, sqlcmd neden sonlandırıldığını gösteren sqlcmd bir değerdir ve değeri -b
komut satırı bağımsız değişkeni belirtilerek etkilenir.
Çıkış kodu ve DOS ERRORLEVEL
denetimiyle birlikte -V 16
kullanmak, üretim sürümünden önce özellikle kalite geçitleri olmak üzere otomatik ortamlardaki hataları yakalamaya yardımcı olabilir.
Ekinlikler
31 Mar 23 - 2 Nis 23
En büyük SQL, Fabric ve Power BI öğrenme etkinliği. 31 Mart – 2 Nisan. 400 ABD doları tasarruf etmek için FABINSIDER kodunu kullanın.
Bugün kaydolunEğitim