SQL Server'da “içerme dosyası” kavramı var mı?


19

Belli bir sırayla çalıştırılması gereken bir dizi komut dosyası var. Tüm diğer dosyaları ve bunların doğru sırasını listeleyen bir "ana dosya" oluşturmak istiyorum. Temel olarak C ++ veya ASP / VBScript'ten bir içerme dosyası gibi.

Yanıtlar:


19

SQLCMD kullanıyorsanız , :r FileNameayrı bir .sql dosyası eklemek için kullanabilirsiniz .

: r Dosya Adı

DosyaAdı tarafından belirtilen dosyadan ek T-SQL deyimlerini ve SQLCMD komutlarını deyim önbelleğine ayrıştırır. DosyaAdı, Visual Studio'nun başlangıç ​​dizinine göre okunur. Bir toplu iş sonlandırıcıyla karşılaşıldıktan sonra dosya okunur ve yürütülür. Birden çok r komutu verebilirsiniz. Dosya, Araçlar, Seçenekler'de tanımlanan toplu sonlandırıcı dahil herhangi bir SQLCMD komutunu içerebilir. Diğer komutları dahil etmek için bir dağıtım öncesi veya dağıtım sonrası komut dosyasında: r komutunu kullanabilirsiniz.


Bu özelliği kendiniz mi kullanıyorsunuz?
bernd_k

SQL Server Veri Araçları projelerinde yoğun olarak kullanıyorum. Bir yazı komut dosyası olarak çalışan örnek verileri düzenlemeye çalışırken gerçekten yardımcı olur.
Jonathan Allen

4

Eski C ön işlemcileri anlamında kesinlikle hayır

  • T-SQL'in kendi başına böyle bir konsepti yoktur
  • SSMS'nin sqlcmd ve sqlcmdmode göreli dosya yollarını işlemez
  • SSMS'nin sqlcmd ve sqlcmdmode koşullarını desteklemez

Koşulsuz bir sırayla eklemek istediğiniz belirli yolları içeren bir dosya kümeniz varsa, sqlcmd komut satırı aracını kullanabilir veya mfredrickson ve @Marian tarafından belirtildiği gibi sqlcmdmode içinde SSMS kullanabilirsiniz.


Ancak göreli yollar veya koşullu içerikler istiyorsanız sqlcmd'yi (ya da kullanımdan kaldırılmış önceki seleflerinden biri olan isql veya osql) çağıran bazı sarıcı kullanmanız gerekir.

Şu anda bu durumda işim, gözden geçirme ve eski vbs ve hta kodunu genişletiyorum. Tamamen mutlu değilim, ama bu pragmatik bir karardır. Çalışıyor ve son kullanıcı hta GUI ile evde ve ek yazılım yüklemesine gerek yok.

Yeni bir tasarım için sqlcmd çağrılarını sarmak için WPF ve PowerShell kullanmayı düşünmeye başladım, ancak mevcut müşterilerimizle PowerShell V2 varlığını tahmin edemiyorum.

Eski zamanlarda bile, bu amaç için basit cmd yığınları yazdık, hala kullanımda.

Sanırım güncel araçlar, özellikle de iş akışlarını hedefleyen araçlar var. Ben bunlara aşina değilim.


3

Management Studio'daki SQLCMD modunun yanı sıra , SQLCMD yardımcı programını kullanarak tüm sql dosyalarınızı düzenlemek ve çağırmak için ana dosya olarak kullanmak üzere bir toplu iş dosyası da kullanabilirsiniz .

SQLCMD modu, Management Studio içindeki yardımcı program kullanımının bir simülasyonudur, bu nedenle modlar arasında büyük bir fark yoktur. Bir ara toplu iş yapmayı tercih ederim (artık M Studio açılmıyor ... yükleme doğru db ... vb.). Çıktı dosyaları dahil olmak üzere toplu işteki her şeyi yapılandırmayı tercih ederim.


2

Katılıyorum, bir T-SQL ön işlemcisine çok ihtiyaç var. C # 'da kendi saatimi geliştirdim, bu da beni bir saat sürdü. SQL komut dosyalarının yürütme sırası üzerindeki kontrolün yanı sıra, skaler UDF'lere benzeyen ve kullanımı kolay, ancak satır içi UDF'ler kadar hızlı performans gösteren makrolara sahip olmamı da sağlar.


+1 - Bu tür şeyleri, çeşitli vesilelerle cazip araçlarla yaptım. Sqlcmd değişken ikamesi için bazı olanaklara sahip olsa da, SSMS için iyi bir makro ön işlemci eklentisi uygulayan birine altta büyük bir öpücük verirdim.
ConcernedOfTunbridgeWells

1
@AK, bu konuyu biraz daha detaylandırır mısın? Belki de github'a kod yazabilirsin?
craig

2

Bernd_k'ın cevabını seviyorum . Komut dizilerinizi nasıl adlandırdığınıza bağlı olarak (sayı dahil olmak üzere), SQL Server 2008 veya üstünü çalıştırıyorsanız SQL Server PowerShell (SQLPS) kullanılabilir. SQL 2005 kullanıyor olsanız bile, 2005 için PowerShell ve SMO kullanabilirsiniz.

Yan not: SQLCMD'nin sonunda amortismana tabi tutulacak listeye alınacağına ve SQLPS, PowerShell ile değiştirileceğine inanıyorum.

Birkaç seçenek daha var.

  1. Her komut dosyasını bir SQL Agent işinde adım olarak ayarlayın. Yürütülme sırasını ayarlayabilirsiniz.
  2. Her dosyayı çağırmak için bir SSIS paketi oluşturun. Bu, biraz daha fazla kontrol sunabilir ve biraz daha fazla günlük kaydı seçeneği sunabilir. Bir komut dosyasının sonucu bir sonraki yürütmeden önce doğrulanması gerekiyorsa bu yöntemi seviyorum.

SQL Server Veri Araçları ve DACPACs nasıl çalıştığı için çok hayati çünkü SQLCMD amortisman olacağını sanmıyorum.
Jonathan Allen

@JonathanAllen DACPAC'leri kullanarak yönetimini gösteren herhangi bir geçerli belge bulursanız SQLCMDbana bildirin, çünkü bulduğum şeylerin çoğu PowerShell'e başvuruyor . Ayrıca sqlcmdşema karşılaştırması dışında SSDT ile kullanılan referansı görmüyorum , ancak oluşturulan komut dosyalarını asla kullanmıyorum.
Shawn Melton

SSDT betikleri sqlcmd betikleridir. Hem kullanıcı tanımlı hem de veritabanı adı gibi parametreleri bu şekilde işler. DACPAC'ı SqlPackage.exe kullanarak dağıtmak istiyorsanız, bu bağlantı sqlcmd parametrelerini nasıl geçireceğinizi gösterir. msdn.microsoft.com/en-us/…
Jonathan Allen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.