Bazen bir veya daha fazla süper uzun (bazen bile aptal-uzun) dizeleri olan bir SQL komut dosyası var. Genellikle bunlar, VARBINARY
dosyaları / Montajları temsil eden değişmez değerler / sabitlerdir, ancak bazen metindir.
Gerçekten uzun dizelerle ilgili temel sorun, bazı metin editörlerinin bunları iyi idare etmemesidir. Örneğin, VARBINARY
bir CREATE ASSEMBLY [AssemblyName] FROM 0x....
deyimde kullandığım bir gerçek bilgim var ve Meclisin kendisi 1 MB'ın biraz üzerinde, bu da her bir baytın onaltılık gösterimde iki karakter gösterilmesini gerektirdiği için bir metin dosyasında 2 milyondan fazla karaktere eşit (örneğin 0x1F
= a 1
ve an F
). SQL Server Management Studio (SSMS) bu iyi işlemez ve ben bu satır üzerinde kaydırmaya çalışırken birkaç saniye boyunca asılı kalır. Aslında, bazı sürümler (bunun hala devam edip etmediğinden emin değilsiniz), belirli bir uzunluk boyunca en az bir satırı olan bir komut dosyasını açarken uzun satırlarla ilgili bir uyarı bile görüntüler.
İkincil bir sorun, sözcük kaydırma özelliği etkin olmayan bir düzenleyicide kullanırken veya çevrimiçi yayın yaparken biçimlendirmeyi zorlaştırmasıdır. Buradaki sorun, yatay kaydırma çubuğu kaydırıcısının çok dar olması ve biraz hareket ettirilmesi genellikle süper uzun olmayan metni görünmez hale getirmesidir.
Şimdi, T-SQL, yeni satırlarla veya hatta noktalı virgüllerle komutları sonlandırmıyor (SQL Server 2005'ten başlayarak yarı sütunlar tercih edilir / önerilir). SQL Server ne zaman biteceğini bildiği şekilde her bir ifadeyi ayrıştırmak bilen Yani bu yana, sadece bir ayırarak, bölme gibi çoklu hatları üzerinden uzun bir çizgi gibi görünüyor newline/ carriage-return+ line-feed, mantıksız görünmüyor. Ancak bu her iki durumda da çalışmaz.
PRINT 'Line1
Line2';
döner ("Mesajlar" sekmesinde):
Line1
Line2
Ve bu satırsonu bir değişmez / sabit içinde olduğu için yeterince mantıklı. Ama bunu bir için yapmak VARBINARY
da işe yaramaz.
PRINT 0x1234
5678;
bana bir hata veriyor.