Tablo düzeyinde yedekleme


Yanıtlar:


89

BACKUP DATABASETek 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 TABLEbetiğ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 DATAsadece birlikte schema, seçtiğiniz lazım Advancedset betik seçenekleri sekmesine ve içinde GENERALbölüm set Types of data to scriptseç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.


'Veritabanı Yayınlama Sihirbazı', özetlediğim adımları otomatikleştirecek.
John Sansom

25
John, DATA'yı sadece şemayla birlikte almak için Advancedkomut dosyası oluşturma seçenekleri sekmesinden seçim yapmanız gerektiğini ve GENEL bölümünde Types of data to scriptseçimi ayarlamanız gerektiğini söylemeyi unutmayın Schema and Data. İlk yaptığımda bu çok açık değildi.
Alex C

Alex'in bahşişi çok önemli. Ayrıca, SQL Server'daki menülerden geçmek yerine bunu komut dosyası oluşturmanın bir yolu var mı?
sooprise

1
Bunu PowerShell ve SMO kombinasyonunu kullanarak başarabilmelisiniz. Phil Factor'daki bu makaleyi kılavuz olarak görün: simple-talk.com/sql/database-administration/…
John Sansom

@AlexC Teşekkürler! Beni baş ağrısından
kurtardı

55

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.


1
Sadece aklınızda bulunsun. Tabloyu yalnızca bir seçme sorgusu yerine adı kullanarak kopyalamak istiyorsanız, komut dosyasını QUERYOUT yerine OUT kullanacak şekilde değiştirin.
Valamas

45

İş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

İşte John Sansom'un cevabından adımlar


@Alex C'yi hangi SSMS kullanıyordunuz? SSMS2005'imde sihirbazım sizinkinden farklı.
KirdApe

Üzgünüm, bunu yanıtlayalı yıllar oldu. Muhtemelen 2008'i kullandığımı varsayıyorum. Şimdi sihirbazımı kontrol ettim ve artık gelişmiş TIKLAMAK zorunda değilsiniz, bunun yerine 5. karedeki (yukarıda) tüm liste sihirbaz sayfalarından biri olarak görünüyor. Ayrıca YAPI ve VERİ seçeneği, her biri için ayrı ayrı DOĞRU / YANLIŞ seçeneklerine bölünmüştür. Yardımcı olabileceğim başka bir şey varsa lütfen bildirin.
Alex C

19

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

7

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

1
Bu kısıtlamalar içeriyor mu?
user3071284



2

Ü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".


+1 SQL betiklerine alışkın olan herkes için aradığınız seçenek budur. Tek tek tabloları seçmek için "Seçilen veritabanındaki tüm nesneleri komutla" seçeneğinin işaretini kaldırın. Ekran görüntüleri: products.secureserver.net/products/hosting/…
lepe

2

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.

  1. 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)

  2. 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.


2

SQL Server Alma ve Verme Sihirbazını kullanın.

  1. ssms
  2. Veritabanı Motorunu açın
  3. Alt. Verilecek tabloyu içeren veritabanına tıklayın
  4. "Görevler" i seçin
  5. "Verileri Dışa Aktar ..." ı seçin
  6. Sihirbazı izleyin


0

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.




0

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


0

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:

  1. Handy Backup'ı kurun ve yeni bir yedekleme görevi oluşturun.
  2. Veri kaynağı olarak 2. Adımda "MSSQL" i seçin. Yeni bir pencerede, yedeklenecek bir veritabanını işaretleyin.
  3. Yedeklerinizi depolayacağınız farklı hedefler arasından seçim yapın.
  4. 4. Adımda, "Tam" yedekleme seçeneğini seçin. İhtiyacınız olursa bir zaman damgası ayarlayın.
  5. Ortaya çıkan bir döküm dosyasını sıkıştırmanız veya şifrelemeniz gerekmedikçe 5. Adımı atlayın.
  6. Adım 6'da, periyodik olarak dökümler oluşturmak için bir görev için bir zamanlama ayarlayın (aksi takdirde bir görevi manuel olarak çalıştırın).
  7. Yine, 7. Adımı atlayın ve görevinize 8. Adımda bir ad verin. Görevi tamamladınız!

Ş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.

Diğer Veritabanları

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.

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.