Aracılığıyla paylaş


osql Yardımcı Programı

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

osql yardımcı programı Transact-SQL deyimlerini, sistem yordamlarını ve betik dosyalarını girmenizi sağlar. Bu yardımcı program, sunucuyla iletişim kurmak için ODBC kullanır.

Önemli

Bu özellik, SQL Server'ın gelecek bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın. Bunun yerine sqlcmd kullanın. Daha fazla bilgi için bkz. sqlcmd Yardımcı Programı.

Sözdizimi

  
osql  
[-?] |  
[-L] |  
[  
  {  
     {-Ulogin_id [-Ppassword]} | -E }  
     [-Sserver_name[\instance_name]] [-Hwksta_name] [-ddb_name]  
     [-ltime_out] [-ttime_out] [-hheaders]  
     [-scol_separator] [-wcolumn_width] [-apacket_size]  
     [-e] [-I] [-D data_source_name]  
     [-ccmd_end] [-q "query"] [-Q"query"]  
     [-n] [-merror_level] [-r {0 | 1}]  
     [-iinput_file] [-ooutput_file] [-p]  
     [-b] [-u] [-R] [-O]  
]  

Tartışmalar

-?
osql anahtarlarının söz dizimi özetini görüntüler.

-L
Yerel olarak yapılandırılmış sunucuları ve ağda yayınlayan sunucuların adlarını listeler.

Uyarı

Ağlarda yayının doğası gereği osql 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.

-Ulogin_id
Kullanıcının oturum açma kimliğidir. Oturum açma kimlikleri büyük/küçük harfe duyarlıdır.

-Pparolası
Kullanıcı tarafından belirtilen bir paroladır. -P seçeneği kullanılmazsa, osql parola ister. Komut isteminin sonunda parola olmadan -P seçeneği kullanılıyorsa, osql varsayılan parolayı (NULL) kullanır.

Önemli

Boş parola kullanmayın. Güçlü bir parola kullanın. Daha fazla bilgi için bkz. Güçlü Parolalar.

Parolalar büyük/küçük harfe duyarlıdır.

OSQLPASSWORD ortam değişkeni, geçerli oturum için varsayılan bir parola ayarlamanıza olanak tanır. Bu nedenle, toplu iş dosyalarına bir parolayı sabit kodla girmeniz gerekmez.

-P seçeneğiyle bir parola belirtmezseniz, osql önce OSQLPASSWORD değişkenini denetler. Değer ayarlı değilse , osql varsayılan parola olan NULL'yi kullanır. Aşağıdaki örnek, komut isteminde OSQLPASSWORD değişkenini ayarlar ve ardından osql yardımcı programına erişir:

C:\>SET OSQLPASSWORD=abracadabra  
C:\>osql   

Önemli

Parolanızı maskelemek için -U seçeneğiyle birlikte -P seçeneğini belirtmemelisiniz. Bunun yerine, -U seçeneği ve diğer anahtarlarla birlikte osql belirttikten sonra (-P belirtmeyin), ENTER tuşuna basın; osql sizden parola ister. Bu yöntem, girildiğinde parolanızın maskelenmiş olmasını sağlar.

-E
Parola istemek yerine güvenilir bir bağlantı kullanır.

-Sserver_name[ \instance_name]
Bağlanacak SQL Server örneğini belirtir. Bu sunucudaki varsayılan SQL Server örneğine bağlanmak için server_name belirtin. Bu sunucudaki adlandırılmış bir SQL Server örneğine bağlanmak için server_name\instance_name belirtin. Sunucu belirtilmezse, osql yerel bilgisayardaki varsayılan SQL Server örneğine bağlanır. Ağdaki uzak bir bilgisayardan osql yürütülürken bu seçenek gereklidir.

-Hwksta_name
İş istasyonu adıdır. İş istasyonu adı sysprocesses.hostname içinde depolanır ve sp_who tarafından görüntülenir. Bu seçenek belirtilmezse, geçerli bilgisayar adı varsayılır.

-ddb_name
osql başlatıldığında use db_name deyimini oluşturur.

-lzaman_aşımı
Osql oturum açma işleminin zaman aşımına uğramadan önce geçmesi için saniye sayısını belirtir. osql'de oturum açmak için varsayılan zaman aşımı sekiz saniyedir.

-tsüre_aşımı
Bir komutun zaman aşımına uğramadan önce geçen saniye sayısını belirtir. time_out değeri belirtilmezse komutlar zaman aşımına uğramaz.

-hüst bilgileri
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. Hiçbir üst bilginin yazdırılmayacağını belirtmek için -1 kullanın. -1 kullanılırsa, parametre ile ayar (-h-1, -h -1 değil) arasında boşluk olmamalıdır.

-scol_separator
Varsayılan olarak boş alan olan sütun ayırıcı karakterini belirtir. İşletim sistemi için özel anlamı olan karakterleri kullanmak için (örneğin, | ; & <>), karakteri çift tırnak işareti (") içine alın.

-wcolumn_width
Kullanıcının çıktı için ekran genişliğini ayarlamasına izin verir. Varsayılan değer 80 karakterdir. Bir çıkış çizgisi en yüksek ekran genişliğine ulaştığında, birden çok satıra ayrılır.

-apacket_size
Farklı boyutlu bir paket istemenizi sağlar. packet_size için geçerli değerler 512 ile 65535 arasındadır. Varsayılan osql değeri, sunucu varsayılan değeridir. Artan paket boyutu, GO komutları arasındaki SQL deyimlerinin miktarının önemli olduğu daha büyük betik yürütme performansını artırabilir. Microsoft testi, 8192'nin genellikle toplu kopyalama işlemleri için en hızlı ayar olduğunu gösterir. Daha büyük bir paket boyutu istenebilir, ancak istek verilemiyorsa osql varsayılan olarak sunucu varsayılanı olur.

-e
Girişi yankılar.

-Ben
QUOTED_IDENTIFIER bağlantı seçeneğini açık olarak ayarlar.

-Dveri_kaynak_adı
SQL Server için ODBC sürücüsü kullanılarak tanımlanan bir ODBC veri kaynağına bağlanır. osql bağlantısı, veri kaynağında belirtilen seçenekleri kullanır.

Uyarı

Bu seçenek, diğer sürücüler için tanımlanan veri kaynaklarıyla çalışmaz.

-ccmd_end
Komut sonlandırıcısını belirtir. Varsayılan olarak komutlar sonlandırılır ve tek başına bir satıra GO girilerek SQL Server'a gönderilir. Komut sonlandırıcısını sıfırladığınızda, önce ters eğik çizgi olsun veya olmasın, işletim sistemi için özel anlamı olan ayrılmış sözcükler veya karakterler Transact-SQL kullanmayın.

-q "sorgu"
osql başlatıldığında bir sorgu yürütür, ancak sorgu tamamlandığında osql'dan çıkmaz. (Sorgu deyiminin GO içermemesi gerektiğini unutmayın). Bir toplu dosyadan sorgu gönderirseniz, %variablesveya çevre değişkeni %variables%kullanın. Örneğin:

SET table=sys.objects  
osql -E -q "select name, object_id from %table%"  

Sorgunun çevresinde çift tırnak işaretleri ve sorguya eklenmiş her şeyin çevresinde tek tırnak işaretleri kullanın.

-Q"query"
Bir sorgu yürütür ve hemen osql'dan çıkar. Sorgunun çevresinde çift tırnak işaretleri ve sorguya eklenmiş her şeyin çevresinde tek tırnak işaretleri kullanın.

-n
Numaralandırmayı ve istem simgesini (>) giriş satırlarından kaldırır.

-mhata_düzeyi
Hata iletilerinin görüntülenmesini özelleştirir. İleti numarası, durum ve hata düzeyi, belirtilen önem düzeyi veya daha yüksek hatalar için görüntülenir. Belirtilen düzeyden düşük düzey hataları için hiçbir şey görüntülenmez. Tüm üst bilgilerin iletilerle, hatta bilgilendirici iletilerle döndürüleceğini belirtmek için -1 kullanın. -1 kullanılıyorsa, parametre ile ayar (-m-1, -m -1 değil) arasında boşluk olmamalıdır.

-r { 0| 1}
İleti çıkışını ekrana (stderr) yönlendirir. Parametre belirtmezseniz veya 0 belirtirseniz, yalnızca önem düzeyi 11 veya üzeri olan hata iletileri yeniden yönlendirilir. 1 belirtirseniz, tüm ileti çıkışı ("yazdırma" dahil) yeniden yönlendirilir.

-iinput_file
Bir grup SQL deyimi veya saklı yordam içeren dosyayı tanımlar. Küçüktür (<) karşılaştırma işleci -i yerine kullanılabilir.

-oçıktı_dosyası
osql'den çıkış alan dosyayı tanımlar. Büyüktür (>) karşılaştırma işleci -o yerine kullanılabilir.

input_file Unicode değilse ve -u belirtilmemişse, output_file OEM biçiminde depolanır. input_file Unicode veya -u belirtilirse, output_file Unicode biçiminde depolanır.

-p
Performans istatistiklerinin çıktısını alır.

-b
Bir hata oluştuğunda osql'nin çıkış yaparak bir DOS ERRORLEVEL değeri döndürdüğünü belirtir. SQL Server hata iletisinin önem derecesi 11 veya daha yüksek olduğunda DOS ERRORLEVEL değişkenine döndürülen değer 1'dir; aksi takdirde, döndürülen değer 0'dır. Microsoft MS-DOS batch dosyaları DOS ERRORLEVEL değerini test edebilir ve hatayı uygun şekilde işleyebilir.

-u
input_file biçiminden bağımsız olarak output_file Unicode biçiminde depolandığını belirtir.

-R
SQL Server ODBC sürücüsünün para birimi, tarih ve saat verilerini karakter verilerine dönüştürürken istemci ayarlarını kullandığını belirtir.

-O
Bazı osql özelliklerinin isql'in önceki sürümlerinin davranışıyla eşleşecek şekilde devre dışı bırakıldığını belirtir. Bu özellikler devre dışı bırakılır:

  • EOF toplu işleme

  • Otomatik konsol genişliği ölçeklendirme

  • Geniş iletiler

Ayrıca varsayılan DOS ERRORLEVEL değerini -1 olarak ayarlar.

Uyarı

-n, -O ve -D seçenekleri artık osql tarafından desteklenmiyor.

Açıklamalar

osql yardımcı programı, burada listelenen büyük/küçük harfe duyarlı seçeneklerle doğrudan işletim sisteminden başlatılır. osql başlatıldıktan sonra SQL deyimlerini kabul eder ve etkileşimli olarak SQL Server'a gönderir. Sonuçlar biçimlendirilir ve ekranda görüntülenir (stdout). osql'den çıkmak için QUIT veya EXIT kullanın.

osql'yi başlattığınızda bir kullanıcı adı belirtmezseniz, SQL Server ortam değişkenlerini denetler ve bunları kullanır; örneğin, osqluser=(kullanıcı) veya osqlserver=(sunucu). Ortam değişkeni ayarlı değilse, iş istasyonu kullanıcı adı kullanılır. Bir sunucu belirtmezseniz, iş istasyonunun adı kullanılır.

-U veya -P seçenekleri kullanılmazsa, SQL Server Microsoft Windows Kimlik Doğrulama Modu'nu kullanarak bağlanmayı dener. Kimlik doğrulaması, osql çalıştıran kullanıcının Microsoft Windows hesabını temel alır.

osql yardımcı programı ODBC API'sini kullanır. Yardımcı program, SQL Server ISO bağlantı seçenekleri için SQL Server ODBC sürücüsü varsayılan ayarlarını kullanır. Daha fazla bilgi için bkz. ANSI Seçeneklerinin Etkileri.

Uyarı

osql yardımcı programı CLR kullanıcı tanımlı veri türlerini desteklemez. Bu veri türlerini işlemek için sqlcmd yardımcı programını kullanmanız gerekir. Daha fazla bilgi için bkz. sqlcmd Yardımcı Programı.

OSQL Komutları

osql içindeki Transact-SQL deyimlerine ek olarak, bu komutlar da kullanılabilir.

Komut Açıklama
GİT Son GO'den sonra girilen tüm deyimleri yürütür.
SIFIRLAMA Girdiğiniz tüm deyimleri temizler.
ÇIKIŞ veya EXIT( ) Osql'den çıkış.
CTRL+C Sorguyu osql'den çıkmadan sonlandırır.

Uyarı

!! ve ED komutları artık osql tarafından desteklenmiyor.

GO (varsayılan olarak), RESET EXIT, QUIT ve CTRL+C komut sonlandırıcıları, yalnızca osql isteminin hemen ardından bir satırın başında göründüklerinde tanınır.

GO hem bir işlemin sonunu hem de önbelleğe alınan Transact-SQL deyimlerinin çalıştırılmasını belirtir. Her giriş satırının sonunda ENTER tuşuna bastığınızda , osql bu satırdaki deyimleri önbelleğe alır. GO yazdıktan sonra ENTER tuşuna bastığınızda, önbelleğe alınmış durumdaki tüm deyimler SQL Server'a toplu iş olarak gönderilir.

Geçerli osql yardımcı programı, yürütülen herhangi bir betiğin sonunda zımni bir GO varmış gibi çalışır, bu nedenle betikteki tüm deyimler yürütülür.

Komut sonlandırıcısıyla başlayan bir satır yazarak komutu sonlandırabilirsiniz. Komutun kaç kez çalıştırılması gerektiğini belirtmek için bir tamsayı ile komut sonlandırıcısını izleyebilirsiniz. Örneğin, bu komutu 100 kez yürütmek için şunu yazın:

SELECT x = 1  
GO 100  

Sonuçlar yürütmenin sonunda bir kez yazdırılır. osql satır başına 1.000'den fazla karakter kabul etmez. Büyük deyimler birden çok satıra yayılmalıdır.

Windows'un komut geri çağırma özellikleri , osql deyimlerini geri çağırmak ve değiştirmek için kullanılabilir. Var olan sorgu arabelleği RESET yazılarak temizlenebilir.

Saklı yordamları çalıştırırken , osql bir toplu işlemdeki her sonuç kümesi arasında boş bir satır yazdırır. Ayrıca, yürütülen deyim için geçerli olmadığında "etkilenen 0 satır" iletisi görüntülenmez.

osql'i Etkileşimli Olarak Kullanma

Osql'i etkileşimli olarak kullanmak için komut istemine osql komutunu (ve seçeneklerden herhangi birini) yazın.

Şuna benzer bir komut yazarak osql tarafından yürütülecek bir sorgu (Stores.qry gibi) içeren bir dosyada okuyabilirsiniz:

osql -E -i stores.qry  

Sorgu içeren bir dosyada (Titles.qry gibi) okuyabilir ve aşağıdakine benzer bir komut yazarak sonuçları başka bir dosyaya yönlendirebilirsiniz:

osql -E -i titles.qry -o titles.res  

Önemli

Mümkün olduğunda -E seçeneğini (güvenilen bağlantı) kullanın.

osql'yi etkileşimli olarak kullanırken, bir işletim sistemi dosyasını komut arabelleğine :rfile_name ile okuyabilirsiniz. Bu, sql betiğini file_name doğrudan tek bir toplu iş olarak sunucuya gönderir.

Uyarı

Osql kullanırken, SQL Server bir SQL betik dosyasında görünüyorsa toplu iş ayırıcı GO'ya söz dizimi hatası olarak davranır.

Açıklama Ekleme

osql tarafından SQL Server'a gönderilen Transact-SQL deyimine açıklamalar ekleyebilirsiniz. İki tür açıklama stiline izin verilir: -- ve /*...*/.

Osql'de Sonuçları Döndürmek için EXIT Kullanma

Select deyiminin sonucunu osql'den dönüş değeri olarak kullanabilirsiniz. Sayısalsa, son sonuç satırının son sütunu 4 baytlık tamsayıya (uzun) dönüştürülür. MS-DOS alt bayt değerini üst işlem veya işletim sistemi hata düzeyine geçirir. Windows, 4 baytlık tamsayının tamamını geçirir. Söz dizimi aşağıdaki gibidir:

EXIT ( < query > )  

Örneğin:

EXIT(SELECT @@ROWCOUNT)  

Exit parametresini bir toplu iş dosyasının parçası olarak da ekleyebilirsiniz. Örneğin:

osql -E -Q "EXIT(SELECT COUNT(*) FROM '%1')"  

osql yardımcı programı parantezler () arasındaki her şeyi tam olarak girilmiş şekilde sunucuya geçirir. Saklı sistem 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, ondan önceki her şeyi toplu işlemde yürütür ve sonra dönüş değeri olmadan çıkar.

Dört EXIT biçimi vardır:

  • ÇIKIŞ

Uyarı

Toplu işlemi yürütmez; hemen çıkar ve değer döndürmez.

  • ÇIKIŞ()

Uyarı

Toplu işlemi yürütür, ardından çıkar ve bir değer döndürmez.

  • EXIT**(sorgu)**

Uyarı

Sorgu da dahil olmak üzere toplu işlemi yürütür ve sorgunun sonuçlarını döndürdikten sonra çıkar.

  • Durumu 127 olan RAISERROR

Uyarı

RAISERROR bir osql betiği içinde kullanılırsa ve 127 durumu oluşursa, osql çıkar ve ileti kimliğini istemciye geri döndürür. Örneğin:

RAISERROR(50001, 10, 127)  

Bu hata osql betiğinin sona ermesini sağlar ve istemciye 50001 ileti kimliği döndürülür.

-99 -1 dönüş değerleri SQL Server tarafından ayrılmıştır; osql şu değerleri tanımlar:

  • -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.

Para ve smallmoney Veri Türlerini görüntüleme

osql , değeri dört ondalık basamakla dahili olarak depolasa da, para ve smallmoney veri türlerini iki ondalık basamakla görüntüler. Örneği göz önünde bulundurun:

SELECT CAST(CAST(10.3496 AS money) AS decimal(6, 4))  
GO  

Bu ifade, değerin tüm ondalık basamaklarıyla birlikte depolandığını gösteren 10.3496 sonucunu üretir.

Ayrıca Bkz.

Açıklama (MDX)
-- (Açıklama) (MDX)
CAST ve CONVERT (Transact-SQL)
RAISERROR (Transact-SQL)