MS SQL Server 2005 / 2008'de tablo düzeyinde yedekleme (döküm) nasıl alınır?
MS SQL Server 2005 / 2008'de tablo düzeyinde yedekleme (döküm) nasıl alınır?
Yanıtlar:
BACKUP DATABASE
Tek bir tabloyu yedeklemek için komutu kullanamazsınız, tabii ki söz konusu tablo kendi tablosuna tahsis edilmemişseFILEGROUP
.
Önerdiğiniz gibi yapabileceğiniz şey, Tablo verilerini bir CSV dosyasına aktarmaktır. Şimdi tablonuzun tanımını almak için CREATE TABLE
betiği 'Script' yapabilirsiniz .
Bunu SQL Server Management Studio içinde şu şekilde yapabilirsiniz:
Veritabanı> Görevler> Komut Dosyası Oluştur'a sağ tıklayın
Daha sonra komut dosyasını çıkarmak istediğiniz tabloyu seçebilir ve ayrıca kısıtlamalar ve dizinler gibi ilişkili nesneleri dahil etmeyi seçebilirsiniz.
almak için DATA
sadece birlikte schema
, seçtiğiniz lazım Advanced
set betik seçenekleri sekmesine ve içinde GENERAL
bölüm set Types of data to script
seçmeSchema and Data
Bunun yardımcı olacağını umuyoruz, ancak daha fazla yardıma ihtiyacınız olursa doğrudan benimle iletişime geçmekten çekinmeyin.
Advanced
komut dosyası oluşturma seçenekleri sekmesinden seçim yapmanız gerektiğini ve GENEL bölümünde Types of data to script
seçimi ayarlamanız gerektiğini söylemeyi unutmayın Schema and Data
. İlk yaptığımda bu çok açık değildi.
Tablo düzeyinde yedeklemeler elde etmek için toplu kopyalama yardımcı programını kullanıyorum
ihracat:
bcp.exe "select * from [MyDatabase].dbo.Customer " queryout "Customer.bcp" -N -S localhost -T -E
ithal etmek:
bcp.exe [MyDatabase].dbo.Customer in "Customer.bcp" -N -S localhost -T -E -b 10000
Gördüğünüz gibi, herhangi bir sorguya göre dışa aktarabilirsiniz, böylece bununla artımlı yedeklemeler bile yapabilirsiniz. Artı, burada bahsedilen SSMS kullanan diğer yöntemlerin aksine komut dosyası yazılabilir.
İşte ihtiyacınız olan adımlar. Verileri istiyorsanız Step5 önemlidir. Adım 2, tek tek tabloları seçebileceğiniz yerdir.
EDIT yığınının sürümü tam olarak okunabilir değil ... işte tam boyutlu bir görüntü http://i.imgur.com/y6ZCL.jpg
Verilerle birlikte eski tablonun mevcut yapısıyla yeni bir tablo oluşturacak mevcut tablonun bir yedeğini almak için aşağıdaki sorguyu çalıştırabilirsiniz.
select * into newtablename from oldtablename
Yalnızca tablo yapısını kopyalamak için aşağıdaki sorguyu kullanın.
select * into newtablename from oldtablename where 1 = 2
Bu, qntmfred'in çözümüne benzer , ancak doğrudan tablo dökümü kullanır. Bu seçenek biraz daha hızlıdır ( BCP belgelerine bakın ):
ihracat:
bcp "[MyDatabase].dbo.Customer " out "Customer.bcp" -N -S localhost -T -E
ithal etmek:
bcp [MyDatabase].dbo.Customer in "Customer.bcp" -N -S localhost -T -E -b 10000
MySQL gibi bir şey arıyorsanız DUMP
, o zaman iyi haber: SQL Server 2008 Management Studio bu yeteneği ekledi.
SSMS'de, söz konusu DB'ye sağ tıklayın ve Görevler> Komut Dosyaları Oluştur'u seçin . Ardından, seçenekler sihirbazının 2. sayfasında , verilerin de komut dosyası yazılmasını istediğinizden emin olun ve sizin için bir DUMP
dosya için hangi miktarları oluşturacaktır .
Yeni dosya grubu oluşturun, bu tabloyu üzerine koyun ve yalnızca bu dosya grubunu yedekleyin.
Ücretsiz Veritabanı Yayınlama Sihirbazını kullanabilirsinizSQL komut dosyalarıyla (CREATE TABLE ve INSERT INTO) metin dosyaları oluşturmak için Microsoft'un .
Tek bir tablo için böyle bir dosya oluşturabilir ve SQL komut dosyasını çalıştırarak tüm tabloyu veriler dahil "geri yükleyebilirsiniz".
Burada açıklanan problemle eşleşip eşleşmeyeceğini bilmiyorum. Bir tablonun artımlı yedeğini almak zorunda kaldım! (Yalnızca yeni eklenen veriler kopyalanmalıdır). Nerede bir DTS paketi tasarlardım.
Yeni kayıtlar alıyorum (bir 'durum' sütununa dayanarak) ve verileri hedefe aktardım. ('Veri Görevini Dönüştür' aracılığıyla)
Sonra 'durum' sütununu güncelledim. ('SQL Görevini Yürüt' aracılığıyla)
'İş akışını' düzgün bir şekilde düzeltmem gerekiyordu.
Her kurtarma modeli, SQL Server veritabanının tamamını veya bir kısmını veya veritabanının tek tek dosyalarını veya dosya gruplarını yedeklemenizi sağlar. Tablo düzeyinde yedeklemeler oluşturulamaz .
SQL Server tablo yedeklemelerini desteklemediği için muhtemelen iki seçeneğiniz vardır. Her ikisi de tablo oluşturma komut dosyasıyla başlar. Daha sonra, çok sayıda insert deyimi oluşturacak olan Script Table - INSERT seçeneğini kullanabilir veya verileri CSV veya benzeri olarak dışa aktarmak için Integration Services (2000 ile DTS) veya benzerini kullanabilirsiniz.
BMC Recovery Manager (önceden SQLBacktrack olarak biliniyordu), bir veritabanındaki (diğer adıyla tablolar) tek tek nesnelerin zaman içinde kurtarılmasına olanak tanır. Ucuz değil ama harika bir iş çıkarıyor: http://www.bmc.com/products/proddocview/0,2832,19052_19429_70025639_147752,00.html
http://www.bmc.com/products/proddocview/0,2832,19052_19429_67883151_147636,00.html
Birisi yanlışlıkla satırları sildikten sonra bir tabloyu geri yükleyebilmek istiyorsanız, veritabanı anlık görüntülerine göz atabilirsiniz. Tabloyu anlık görüntüden kolayca (veya satırların bir alt kümesini) geri yükleyebilirsiniz. Bkz. Http://msdn.microsoft.com/en-us/library/ms175158.aspx
SqlTableZip adlı ücretsiz bir uygulama işi halledecek. Temelde herhangi bir şey yazarsın sorgu (tabii ki [tablodan * seç] de olabilir) ve uygulama daha sonra geri yüklenebilen tüm verilerle sıkıştırılmış bir dosya oluşturur.
Bağlantı: http://www.doccolabs.com/products_sqltablezip.html
Handy Backup, MSSQL 2005/2008 dahil olmak üzere MS SQL Server'dan otomatik olarak döküm dosyaları oluşturur. Bu dökümler, belirli veritabanı içeriğinin tam kopyalarını içeren tablo düzeyinde ikili dosyalardır.
Handy Backup ile basit bir döküm yapmak için lütfen bir sonraki talimatı izleyin:
Şimdi yeni görevinizi adının önündeki bir simgeye tıklayarak çalıştırın veya planlanan süreyi bekleyin. Handy Backup, veritabanınız için otomatik olarak bir döküm oluşturur. Ardından yedekleme hedefinizi açın. MS SQL yedeklerinizin bulunduğu bir klasör (veya birkaç klasör) bulacaksınız. Bu tür herhangi bir klasör, bazı ikili tablolardan ve tek bir ZIP olarak sıkıştırılmış ayarlardan oluşan tablo düzeyinde bir döküm dosyası içerir.
Handy Backup, MySQL, MariaDB, PostgreSQL, Oracle, IBM DB2, Lotus Notes ve ODBC sürücüsüne sahip herhangi bir genel SQL veritabanı için dökümleri kaydedebilir. Bu veritabanlarından bazıları, DBMS ve Handy Backup arasında bağlantı kurmak için ek adımlar gerektirir.
Yukarıda açıklanan araçlar genellikle SQL veritabanlarını tablo düzeyinde SQL komut dizisi olarak döker ve bu dosyaları ihtiyacınız olan her türlü manuel değişiklik için hazır hale getirir.