SQL 2008'de bir örneği kopyalamanın en etkili yolu nedir?


14

Veritabanlarında yararlı olması için yeterli veriye sahip basit bir veritabanı örneğimiz var ve bunu gösterim amacıyla kullanabiliriz ve bunun bir kopyasını dizüstü bilgisayarıma koymak istiyorum. Ofiste değilim. (Normal geliştirici veritabanı örnekleri yaklaşık 150 GB, bu bir örnek 3 GB'dir)

Örneği dizüstü bilgisayarımda yeniden oluşturmak için en tekrarlanabilir / komut dosyası kullanılabilir yöntem nedir? Eminim SqlServer2008 için yükleyiciyi tekrar çalıştırmam gerekecek ve bir örnek ayarlayacağım, ama bundan sonra ... Sanırım eski veritabanlarımı her ay bırakabileceğimi düşünüyorum ve örneğim tek bir demo sisteminde veya dizüstü bilgisayarda değişmeyeceğinden, tüm yeni şeyleri dizüstü bilgisayarıma kopyala. Ancak veritabanlarının kendileri, sprocs ve benzerlerinde yenilenmelerle güncellenecektir.

Tüm "bırak veritabanı dosyaları; script dosyaları {path}" ekleyin ve onları bir tür runnable toplu iş dosyasında tutmak düşündüm ve sonra "bırak, silmek, kopyalamak, eklemek" olabilir ama orada xcopy ve toplu işten daha iyi bir yol muydu?

Bunu ucuza yapmaya çalışıyorum (her zaman ucuza bir şeyler yapmayalım) bu yüzden özellikle RedGate ürünleri veya benzerleriyle ilgilenmiyorum. Kendim için bir metin düzenleyicide kolayca koruyabileceğim bir şey istiyorum.


birden fazla veritabanına sahip tek bir veritabanı mı yoksa sql sunucusu örneği mi? Dizüstü bilgisayarınızda ve geliştirme makinenizde sql sunucusu yüklü olduğunu ve bir veritabanına sahip olduğunuzu varsayıyorum, bu durumda yedekleme ve geri yükleme kullanabilirsiniz. Yedekleme geliştirme makinesi db, dizüstü bilgisayara kopyalayıp geri yükleme, tersi ... mantıklı mı?
CoderHawk

Server Express Edition nedir? veya Standart? SSIS böyle senaryolar için iyi bir seçenektir, maalesef Express ve Web sürümlerinde mevcut değildir.
CoderHawk

Üzgünüz @Sandy ~ SQL Dev 2008.
jcolebrand

Soru başlığı biraz kafa karıştırıcı "SQL 2008'de | örneği | çoğaltmanın en etkili yolu nedir?" - örnek veya veritabanı?
CoderHawk

@Sandy ~ "Instance" ... gerçekten, her şeyi istiyorum.
jcolebrand

Yanıtlar:


4

Kafasına çiviyi vurdun: dosyaları kopyala. Bunu iyi etki için kullandım.

Xcopy içermeyen bir çözüm hazırlamak için zaman yatırımını içerecek şekilde "ucuz" olarak tanımlamanız gerektiğini söyleyebilirim


3

Umm, bunun yardımcı olup olmadığından emin değilim, ancak bir üretim veritabanını "temizlemek" ve geliştirme kötüye kullanımına hazırlamak için bir dizi komut dosyası kullanıyoruz. Tarih-saat sütunu olan tüm büyük tabloları alıyoruz ve tabloyu yalnızca son yılındaki verilerle yeniden oluşturuyoruz. Yaklaşık 200 GB'lık tam bir db'den geliştirme için yaklaşık 40 GB'lık bir db'ye ulaşıyoruz. Temelde, her tablo için bcp dosyaları oluşturmak, tabloyu yeniden oluşturmak (ilgili tüm kısıtlamalar dahil) ve daha sonra yalnızca geçen yılki verileri toplu olarak eklemek için dinamik komut dosyaları üretiyoruz.

Belki bunu yapmak için araçlar vardır, ama bizim dükkan ucuz gidiyor :-).


Evet, BCP rotasını bir çok şey için gidiyoruz, bu yüzden söylediklerinizi alıyorum ve bunların bazılarını kısaltmak iyi olurdu, ama zaten ihtiyacım olan yaklaşık 3GB veriye sahibim, bu yüzden gerçekten değilim daha fazlasını eklemek istiyor. Sadece tüm örneği kopyalamak ve tekrar tekrar yapmaya devam etmenin bir yolu olduğunu düşünüyorum. Ama aksi takdirde bahsettiğin şeyle aynı işte olduğumu düşünüyorum, sadece daha küçük sacle.
jcolebrand

Bu yüzden tüm adımları toplu olarak tekrarlayın :). SQL, toplu iş parametrelerine sahiptir ve toplu iş dosyalarını sql dosyalarıyla birleştirebilir ve güzel bir paket alabilirsiniz. Farklı etki alanlarında çalışan özel bir Günlük Nakliye (dilsiz) paketi oluşturdum ve tüm db hazırlığı cmd / sql dosyalarında yapılır. Yalnızca kullanımınız için adlandırılmış bir örnek oluşturabilir ve orada hizmeti başlatabilir / durdurabilir, db'yi geri yükleyebilir, temizleyebilir, hazırlayabilir, yedekleyebilir ve belirli bir klasöre gönderebilirsiniz. Belki bazı işler powershell'de daha hızlı yapılabilirdi ama bunu bilmiyorum.
Marian

evet bu fikir;)
jcolebrand

@jcolebrand - Belki Norton Ghost veya Clonezilla gibi bir araç yardımcı olabilir? Prod yedekleme klasörlerini oyun alanınızdaki bir yere kopyalamanız gerekir, sonra oraya tüm eğlenceyi yapın (restore ..trim ... vb.). Kopyalama eylemlerini kodlamanız gerekmez ve yalnızca sql bölümünü işlersiniz :).
Marian

oooooh bu yararlı olabilir. Yeni değerlendirme yolları.
jcolebrand

0

Şemanızı bu sistemlerle eşleşecek şekilde yükseltmenin en kolay yolu, Red Gate SQL Compare veya Embarcadero DB Change Manager gibi bir araç kullanmaktır.

Muhtemelen aynı şema karşılaştırmasını yapabilen ve hatta veritabanı şemanızı yükseltmek için DDL sağlayabilen başka araçlar da vardır.

Seçenekler

  1. 3. Taraf Araç Kullanın
  2. Veritabanı Yedekleme ve Geri Yükleme - verileri silmek için bir hazırlama örneğine geri yüklemeniz gerekebilir (dizüstü bilgisayardaki alan kısıtlamaları nedeniyle)
  3. SMO kullanarak kendi veritabanı scripter'inizi yazın ve nesneleri betikleyen bir iş oluşturun, şemanızı ihtiyacınız olan her ay / saatte yeniden oluşturun, ardından yeni nesnelere veri yüklemek için SSIS kullanın.

Örnek için "Veritabanı yedekleme ve geri yükleme" nasıl çalışır? Ben istiyorum verileri tutmak için bu üretime göre sadece küçük bir tam veri seti, çünkü tablolar.
jcolebrand

SSIS muhtemelen ihtiyacım olan şeyi yapmama izin verecekti ama bu konuda yeterince bilgim yok. Daha fazla araştırmalıyım.
jcolebrand

@jcolebrand - Yedekleme geri yüklemeyi önerdim, sadece sütun ekleme gibi şeyler yaptığınızda verileri canlı sisteminizden demo sisteminize nasıl taşıyacağınızı düşünmek zorunda kalacağım. Ancak bu, başka bir yedekleme ve geri yükleme / ayırma ve ekleme işleminden önce geri yükleme ve ardından veri temizleme gerektiren dezavantajlara sahiptir.
johndacostaa
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.