Veritabanı ve tablolar oluşturan SQL komut dosyası oluşturun


102

Başka bir SQL Server'da çoğaltmak istediğim bir SQL veritabanı ve tablolarım var. Veritabanını ve tabloları tek bir betikte oluşturan bir SQL betiği oluşturmak istiyorum.

Her durum için (Veritabanı ve Tablolar) SQL Management Studio'yu kullanarak "Create" komut dosyası oluşturabilirim, ancak her iki "Create" komut dosyasını tek bir komut dosyasında birleştirmenin yeterli olup olmayacağını bilmek isterim.

Teşekkürler.


26
lütfen kabul edilen cevabı değiştirir misin?
skolima

1
@skolima kabul etti, kabul edilen cevap (Clayton tarafından) sonunda sonucu alacak, ancak
CJM'nin

Yanıtlar:


18

SQL Server Management Studio'da, kopyalamak istediğiniz veritabanına sağ tıklayabilir ve aracın, bu veritabanını başka bir sunucuda çoğaltmak üzere uygun SQL dosyasını oluşturmasını sağlamak için "Script Database as" öğesini seçebilirsiniz. Oluşturmak istediğiniz her tablo için bu işlemi tekrarlayabilir ve ardından dosyaları tek bir SQL dosyasında birleştirebilirsiniz. Veritabanınızı oluşturduktan sonra ancak herhangi bir tablo oluşturmadan önce bir using ifadesi eklemeyi unutmayın.

SQL Server'ın daha yeni sürümlerinde, bunu SSMS'de tek bir dosyada alabilirsiniz.

  1. Bir veritabanına sağ tıklayın.
  2. Görevler
  3. Komut Dosyaları Oluşturun

Bu, tüm veritabanının veya yalnızca bölümlerinin komut dosyasını yazabileceğiniz bir sihirbazı başlatır. Bunu yapmanın bir T-SQL yolu yok gibi görünüyor.

SQL Server Komut Dosyaları Oluşturun


183
Kaydırmaya devam edin ...
CJM'nin

CJM'nin cevabı hala yeterli değil. CJM yöntemi uygulandıktan sonra Shawna Jacobs yöntemini de uygulamalısınız.
Andrzej Martyna

Neyse, bunu yapmak için mysql için standart SQL örneğin?
Benjamin Goodacre

379

Clayton'ın cevabı sizi oraya götürecek olsa da (sonunda), SQL2005 / 2008 / R2 / 2012'de çok daha kolay bir seçeneğiniz var:

Veritabanına sağ tıklayın, Tasksve ardından Generate ScriptsKomut Dosyası Sihirbazını başlatacak öğesini seçin . Bu, tablo / dizinler ve kısıtlamalar / saklı yordamlar / işlevler / kullanıcılar / vb. Dahil olmak üzere tüm veritabanını yeniden oluşturabilen tek bir komut dosyası oluşturmanıza olanak tanır. Çıktıyı özelleştirmek için yapılandırabileceğiniz çok sayıda seçenek vardır, ancak bunların çoğu kendinden açıklamalıdır.

Varsayılan seçeneklerden memnunsanız, tüm işi saniyeler içinde yapabilirsiniz.

Veritabanındaki verileri yeniden oluşturmak istiyorsanız (bir dizi INSERTS olarak) SSMS Tools Pack'i (SQL 2008 sürümü için ücretsiz, SQL 2012 sürümü için Ücretli ) öneririm .


5
Bu mükemmel, bunu yeni yaptım ve bana çok zaman kazandırdım.
Bill Sambrone

@CJM NEREDEYSE seni sevdiğimi düşünüyorum! :-P
Piero Alberto

Bu adımları tam olarak takip ettim ama yine de kesinlikle tonlarca hata alıyorum ve bunları düzeltemiyorum. Herhangi bir yardım?
user1789573

Bununla ilgili kendi sorunuzu göndermenizi öneririm - attığınız adımlar ve aldığınız hatalarla ilgili ayrıntıları gönderdiğinizden emin olun.
CJM

@ user1789573 - Shawna Jacobs'un yazdığı gibi - SSMS, bağımlılıkları önemsemiyor (SSMS geliştirici ekibinden utanılacak!), bu yüzden "tasarım gereği" tonlarca hatayla karşılaşacaksınız. SSMS'nin bu zayıflığıyla başa çıkmak için Shawna Jacobs asnwer'ı takip edin.
Andrzej Martyna

9

Burada mükemmel bir açıklama bulunabilir: SQL Server Management Studio'da komut dosyası oluşturun

Nezaket Ali Issa Yapmanız gerekenler:

  1. Veritabanına sağ tıklayın (tabloya değil) ve görevleri seçin -> komut dosyaları oluşturun
  2. Sonra -> istenen tabloyu / tabloları seçin (belirli veritabanı nesnelerinden)
  3. Sonraki -> gelişmiş tıklayın -> komut dosyası = şema ve veri için veri türleri

Yalnızca tabloları oluşturan (veri içermeyen) bir komut dosyası oluşturmak istiyorsanız, talimatların ileri düzey bölümünü atlayabilirsiniz!


7

SSMS'nin yürütme sırasını neden hesaba katmadığından emin değilim ama öyle değil. Bu, küçük veritabanları için bir sorun değildir, ancak veritabanınızda 200 nesne varsa ne olur? Bu durumda, yürütme sırası önemli çünkü bunların hepsini gözden geçirmek gerçekten kolay değil.

SSMS tarafından oluşturulan sıralanmamış komut dosyaları için aşağıdakilere gidebilirsiniz

a) Betiği çalıştır (bazı nesneler bazı alışkanlıklar eklenecek, bazı hatalar olacak)

b) Veritabanına eklenen tüm nesneleri komut dosyasından kaldırın

c) Her şey sonunda yürütülene kadar a) 'ya geri dönün

Alternatif seçenek, ApexSQL Script gibi üçüncü taraf araçları veya bu iş parçacığında daha önce bahsedilen diğer araçları (SSMS araç paketi, Red Gate ve diğerleri) kullanmaktır.

Bunların hepsi sizin için bağımlılıkları halledecek ve size daha fazla zaman kazandıracaktır.


1

Evet, tek bir komut dosyasına dilediğiniz kadar SQL ifadesi ekleyebilirsiniz. Unutulmaması gereken tek şey: sipariş önemlidir. OLUŞTURMADAN bir tabloya EKLEMEZSİNİZ; birincil anahtar eklenene kadar yabancı anahtar ayarlayamazsınız.

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.