2010-10-29 14 views
32

SQL Server 2000 kutusunda bir tabloya karşı bir sorgu yazıyordum ve sorguyu Query Analyzer'da yazarken, sürprizime göre LineNo mavi metne dönüştürüldüğünü fark ettim.T-SQL "LineNo" ayrılmış kelime tam olarak ne yapar?

MSDN belgelerine göre reserved word gibi görünen, ama üzerinde hiçbir bilgi, bu şey yapamaz yapan bir mirası saklıdır kelime olabileceğini sadece spekülasyon bulabilirsiniz.

Alan adından kaçarken bir sorunum yok, ama merak ediyorum - T-SQL'deki "LineNo" ifadesinin aslında ne için kullanıldığını bilen var mı?

cevap

63

Tamam, bu tamamen belgesizdir ve deneme yanılma yoluyla hesaplamak zorunda kaldım, ancak hata bildirimi için satır sayısını ayarlar. Örneğin:

LINENO 25 

SELECT * FROM NON_EXISTENT_TABLE 

Yukarıdaki iki tire önüne işaret koyun, örneğin tek bir satır yorumun (hiç LINENO çizgisini dönüştürmek eğer, hat 27 (3 yerine bir hatasını belirten bir hata iletisi verecek)):

Msg 208, Level 16, State 1, Line 27 
Invalid object name 'NON_EXISTENT_TABLE'. 

Bu arada, Visual C++ ve belgelenir Visual C# (içinde #line önişlemci direktifleri olarak programlama dillerinde benzer mekanizmalar ile ilgilidir).

Bu nasıl yararlıdır, sizden isteyebilirsiniz? Peki, bunu bir üst düzey (SQL) dilinden kod üreten ve/veya makro genişletme gerçekleştiren SQL kod üreteçlerine yardımcı olmak için bir tane kullanın, oluşturulan kod satırlarını kullanıcı kod satırlarına bağlayın.

Not: Özellikle veritabanında çalışırken belgesiz özelliklere güvenmek iyi bir fikir değildir.

Güncelleştirmesi: Bu açıklama, SQL Server 2008 R2 Toplu Güncelleştirmesi 5 (10.50.1753.0) olan bu yazının yazıldığı SQL Server'ın güncel sürümüne kadar ve hala geçerlidir.

+7

Bu harika - eğer yapabilirsem "Nice Answer" için size 2 tane daha vade veririm. Ben **, Query Analyzer'ın kendisinde çalışmadığını, ancak saklı yordamda açıklandığı gibi çalıştığını belirtmek isterim. Bu özelliği sadece iyi için kullanmalıyız ve DBA'larla vidalamak için değil ... – LittleBobbyTables

+8

Hayır DBA'nın :-) Msg 208, Seviye 16, Durum 1, Satır 2792874 –

+3

ile vidalanmasına izin ver Hala SQL 2012'de çalışır :-) – Bridge