SQL-Server veritabanının tamamını komut dosyası


95

Bir veritabanından tüm tabloların, işlemlerin ve diğer nesnelerin komut dosyasını alabilmemin bir yolu var mı? Veritabanını komut dosyası yazmak için bir seçenek olduğunu biliyorum, ancak bana yalnızca bir tür üst düzey komut dosyası verdi, kesinlikle tüm tabloları, işlemleri, udf'leri, .vb'yi oluşturmak için bir komut dosyası değil.


6
Bunu SQL Server 2008 olarak etiketledi, bu yüzden kullandığı şeyin bu olduğunu varsayıyorum.
Colin Mackay

1
Bunun serverfault.com'a gitmesi gerekmiyor mu?
Salamander2007

Yanıtlar:


163

Management Studio'dan Veritabanınıza sağ tıklayın. Görevler -> Komut Dosyaları Oluşturun.

Bunu yapmalı.


2
Başka bir seçenek (yani normal komut dosyası gerekiyorsa), SQL SMO ve programlama komut dosyası dışarı kullanmaktır
Robs

Bunu yapmak için bir komut dosyası kurmanın bir yolu var mı, böylece ayarları kim çalıştırırsa çalıştırsın her zaman aynı mı? Geliştirme ekibimizdeki kişilerin her seferinde farklı ayarlarla bu dosyanın üzerine yazacağını öngörüyorum ...
Joe Phillips

@Joe, RobS'un bahsettiği rotadan aşağı inerdim. Bunu PowerShell ile yapabilmelisiniz. Aksi takdirde, RedGate araçlarına veya Veritabanı Geliştiricili Visual Studio Team Systems'e bakmaya başlayın.
Chris Brandsma

7
Varsayılan olarak verileri kodlamaz. Tablo / Görünüm Seçenekleri altında "Komut Dosyası Verileri -> Doğru" öğesini seçin. Başka bir kullanışlı seçenek de "Komut Dosyası Bırak -> Doğru"
Stephen Hosking

1
Ekstra> Seçenekler> Komut dosyası oluşturma menüsünde son seçeneği seçmediğiniz sürece, oluşturulan komut dosyası sütunların harmanlanması hakkında herhangi bir bilgi içermez. Almanca'da seçenek "Sortierung einschließen" dir. Bu seçeneklerin çoğu komut dosyasını oluşturan sihirbaza dahil edilmiş olsa bile, bu değildir (SQL Server 2008). Sihirbazı aramadan önce gerçekten bu seçeneği seçmelisiniz.
Olivier Faucheux

14

Bunu yapan SchemaZen adında açık kaynaklı bir komut satırı yardımcı programı yazdım . Yönetim stüdyosundan komut dosyası yazmaktan çok daha hızlıdır ve çıktısı daha fazla sürüm kontrolü dostudur. Hem şema hem de veri komut dosyası oluşturmayı destekler.

Komut dosyaları oluşturmak için şunu çalıştırın:

schemazen.exe komut dosyası --server localhost --database db --scriptDir c: \ somedir

Ardından veritabanını komut dosyalarından yeniden oluşturmak için şunu çalıştırın:

schemazen.exe create --server localhost --database db --scriptDir c: \ somedir

Merhaba, Visual Studio'da oluşturulan yerel veritabanımdan SQL QUERY almak istiyorum, bunu bu araçla nasıl yapabilirim? .Sdf dosya yönünü kullanmalıyım veya nasıl? Teşekkürler.
Karlo A. López

Kompakt bir SQL DataBase dosyasıdır.
Karlo A. López

1
KUTSAL CRAP BU HIZLI VE MUHTEŞEM.
ConstantineK

1
@hobs yararlı bulduğunuza sevindim. : D
Seth Reno

1
@SethReno bozuk sys dizinleri benim db = SMO'mdaki hiçbir şeyi komut dosyası edemez, betiğiniz yapabilir, bu yüzden temelde bana elle bok yapmak için bir ton zaman kazandırdı. BTW, her şeyin etkileyici bir şekilde hızlı tersine mühendisliği, SSMS'den 1000 kat daha hızlı ve kendi başına SMO'dan daha hızlı görünüyor (en azından başlangıç ​​süresinden dolayı değil).
ConstantineK

4

Bu görev için SMOscript adlı bir yardımcı program yazdım .

Komut dosyası oluşturma, SMO kitaplığı tarafından gerçekleştirilir ve SQL 2005 ve 2008'deki yeni nesne türlerini destekler.


Hmm, smo uygulamanızı Vista 64-bit'ime yükledim. Yükleme başarılı ancak program dizinimde veya Tüm Programlar listemde bir öğe görmüyorum
PositiveGuy

3

Şema ve verileri çıkarmak için SSMS komut dosyası oluşturma kombinasyonunu kullandık ve ardından komut dosyalarında anahtar kelime ayrıştırmaya ve belirteç tabanlı değiştirmeye izin veren kendi veritabanı aracımızı kullandık. Ayrıca komut dosyalarının yalnızca bir kez uygulanmasını sağlar.

Neden?

  • SQL Server 2000, 2005 ve 2008'deki kurulumları desteklememiz gerekiyor ve sürümler arasında veri türlerinde değişiklikler var, örneğin 2005+ nvarchar (max) içerirken 2000 yalnızca ntext'i destekler. Dolayısıyla, betiklerimiz bir belirteç kullanır ve db seçimine dayalı olarak doğru türle değiştirilir.
  • Bazı komut dosyalarının yürütülmesi, yürütmeden sonra bir bekleme süresi gerektirir, örneğin, bir komut dosyası aracılığıyla yeni bir veritabanı oluşturduktan sonra birkaç saniye beklemediyseniz, SQL Server'ın bazen başarısız olabileceğini gördük (çünkü veritabanını oluşturmak için zamanı yoktu dosyalar) tablo vb. oluşturmaya devam ettiğinde
  • Hangi senaryoların ne zaman yürütüldüğüne dair bir geçmiş tutmak istedik.
  • Wix MSI yükleyicimizin bağlantı dizesini ve kimlik bilgilerini belirtmesine izin vermek istedik ve bunları komut dosyalarına geçirmek için bir yola ihtiyacımız vardı, böylece bir kez daha belirteçler ve bazı koşullu mantık kullanarak.

Örnek komut dosyası (kısalık için düzenlenmiştir)

-- Sleep: 5 
-- Sleep after creating database to allow file system to create db files
CREATE DATABASE [$Database$]
GO

EXEC sp_dbcmptlevel [$Database$], $CompatabilityLevel$
GO

USE [$Database$]
GO

IF '1'!='$IntegratedSecurity$'
BEGIN
    CREATE LOGIN [$Login$] WITH PASSWORD=N'$Password$', DEFAULT_DATABASE=[$Database$]
    CREATE USER [$User$] FOR LOGIN [$Login$]
    EXEC sp_addrolemember N'db_owner', N'$User$'
END
GO

1

RedGate SQL paketleyicisine bakmanızı tavsiye ederim. Ücretsiz değil, ancak fiyatına değecek kadar faydalı oldu.


1

Sadece tablo verilerine bakarak, Management Studio 2012 ve 2014'teki tüm tablo veri içeriğinin çıktısını almak için biraz gizlidir, ancak bazılarına baktıktan sonra seçeneği buldum:

  1. DB'ye sağ tıklayın
  2. 'Görevler'> 'Komut Dosyaları Oluştur ...' seçeneğini seçin.
  3. 'Komut Dosyası Seçeneklerini Ayarla'da' Gelişmiş'i tıklayın
  4. 'Genel' altında, 'Komut dosyası için veri türleri'ni true olarak ayarlayın (' Genel 'grubunun altındadır)

0

Bunu programlı olarak yapmanız gerekiyorsa, SQL DMO kitaplığını (OLE) SQL Server 2000'e karşı kullanabilirsiniz, ancak büyük olasılıkla SQL SMO kitaplığını (yerel .NET kitaplıkları) SQL Server 2005 ve sonrasına karşı kullanmak isteyebilirsiniz.

Bu kitaplıkların her ikisi de SQL Server yönetim araçları kurulumunun ayrılmaz bir parçasıdır.

Bu, SQL Server Management Studio'dan tam veritabanı komut dosyası oluşturmanın yetersiz olması durumunda ortaya çıkar.

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.