NMM ile komut satırı kurtarma kullanarak bir SQL veritabanını kurtarma
This article applies to
This article does not apply to
This article is not tied to any specific product.
Not all product versions are identified in this article.
Instructions
Bu makalede, VDI
kullanılarak NMM ile yedeklenmiş bir SQL veritabanının başarılı bir şekilde geri yüklenmesi için izlenecek prosedür belgelenmektedir: GUI'dan (SQL Server GUI veya SSMS eklentisi için Networker kullanıcısı) geri yüklemeyle ilgili bir sorun varsa SQL veritabanını komut satırı kullanarak yedekten geri yükleme gerekebilir. GUI'den göz atma görevi yavaş veya gerekli veritabanı geri yükleme için GUI de görünmüyor.
Genellikle, tek bir veritabanı yedeklendiğinde aşağıdaki kayıt kümeleri oluşturulur:
Tek bir veritabanının tam yedeklemesi aşağıdaki kayıt setlerine sahip olacaktır:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 1:26:41 PM 119 MB 3209027663 cb full MSSQL$FINANCE:testdb ==> Full backup saveset
SQLbackups.001 Data Domain sql12srv1 5/25/2016 1:29:16 PM 5 KB 3192250597 cb incr MSSQL$FINANCE: testdb ==> metadata saveset.
Tek bir veritabanının artımlı yedeklemesi aşağıdaki kayıt setlerine sahip olacaktır:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 13:34:14 PM 1320 MB 3141919250 cb incr MSSQL$FINANCE:testdb ==> Log backup saveset
SQLbackups.001 Data Domain sql12srv1 5/25/2016 1:40:31 PM 5 KB 3125142409 cb incr MSSQL$FINANCE:testdb ==> metadata saveset
Her yedeğin, her zaman 'incr' düzeyinde oluşturulan ve normalde çok küçük olan bir meta veri kayıt kümesi olduğuna dikkat edin. Bu kaydetme kümesi, "SQL Server için Networker User" GUI'sinde veritabanı listesini görmeyi mümkün kılan bilgileri içerir. Bu kaydetme kümesi her SQL VDI yedeklemesinde oluşturulur. Ancak manuel klonlama işlemi yanlışlıkla bu kaydetme kümesini klonlamaya dahil etmediyse ve orijinal kaydetme kümeleri artık mevcut değilse bu kaydetme kümesi mevcut olmayabilir. Bu durumda, komut satırı geri yüklemesi tek seçenektir.
Hangi yedekten kurtarmanız gerektiğini belirledikten sonra komut satırını oluşturabilirsiniz. Aşağıda bir geri yükleme komutu örneği verilmiştir:
nsrsqlrc -s nsr-server -c sql12srv1 -t "5/25/2016 1:34:14 PM" -d "MSSQL$FINANCE:testdb-recovered" -C " 'testdb' = 'c:\recover\testdb.mdf', 'testdb_log' = 'c:\recover\testdb_log.ldf', 'testdb_log1' = 'c:\recover\testdb_log1.ldf'" "MSSQL$FINANCE:testdb"
Yukarıdaki command-s
seçeneğinde Networker sunucu adını belirtmektir,
-c seçeneği kaynak istemciyi belirtmek için kullanılır (kurtarma kaynak istemci dışındaki bir ana bilgisayarda yapılıyorsa),
-d geri yüklenecek hedef veritabanını belirtin. Bu DB mevcut olmayacak. Geri yükleme işlemi, veritabanını hedef örnekte oluşturur.
-C bunun bir kopya geri yükleme olduğunu belirtir. -C'den sonraki parametreler, veritabanındaki dosyaların Mantıksal adlarını belirtir. Bu adların, geri yüklenen veritabanının mantıksal adlarıyla tam olarak eşleşmesi gerektiğini unutmayın. Veritabanı mevcutsa SSMS GUI'dan veritabanı adı üzerinde özellikler yapın ve "Files" kısmına bakın.
Geri yükleme kümelenmiş bir SQL sunucusuna yapılıyorsa geri yükleme komutuna "-A "virtual-Server name" " ekleyin.
Komuttaki son bileşen, geri yüklenen veritabanının adıdır, örneğin MSSQL$
FINANCE:testdb
Veritabanı dosyalarının mantıksal adlarının ne olduğundan emin değilseniz, aşağıdaki gibi eksik bir komut sağlayabilirsiniz:
nsrsqlrc -s nsr-server -c sql12srv1 -t "5/25/2016 1:34:14 PM" -d "MSSQL$FINANCE:testdb-recovered" -C " 'mydb' = 'c:\ recover\testdb.mdf'" "MSSQL$FINANCE:testdb"
43708:(pid 2144):Start time: Wed May 25 15:37:42 2016
43621:(pid 2144):Computer Name: SQL12SRV1 Kullanıcı Adı: yönetici
NSR_CLIENT: sql12srv1.jets.local;
NSR_SERVER: nsr-server;
37725:(pid 2144):'testdb' veritabanı 'testdb-recovered' olarak kurtarılıyor ...
142468:(PID 2144):[2292]nsr/db_apps/bsmsql/rcstripes.c(222): Kayıt kümesi MSSQL$FINANCE:/testdb için yedek bulma.
37945:(pid 2144):Mantıksal dosya testdb için eksik yeniden konumlandırma.
37945:(pid 2144):Mantıksal dosya testdb_log için eksik yeniden konumlandırma.
37945:(pid 2144):Mantıksal dosya testdb_log1 için eksik yeniden konumlandırma.
37946:(PID 2144):Orijinal veritabanında
mydb adında mantıksal dosya yok 29401:(PID 2144):D atabase dosya yer değiştirme listesi hatası. Gerçek dosya listesi:
37947:(pid 2144): testdb = C:\Program Files\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\
testdb.mdf 37947:(PID 2144): testdb_log = C:\Program Files\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\testdb_log.ldf
37947:(PID 2144): testdb_log1 = C:\Program Files\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\testdb_log1.ldf
142468:(PID 2144):[2292]nsr/db_apps/bsmsql/rcstripes.c(222): Kayıt kümesi MSSQL$FINANCE:/testdb için yedek bulma.
37945:(pid 2144):Mantıksal dosya testdb için eksik yeniden konumlandırma.
37945:(pid 2144):Mantıksal dosya testdb_log için eksik yeniden konumlandırma.
37945:(pid 2144):Mantıksal dosya testdb_log1 için eksik yeniden konumlandırma.
37946:(PID 2144):Orijinal veritabanında
mydb adında mantıksal dosya yok 29401:(PID 2144):D atabase dosya yer değiştirme listesi hatası. Gerçek dosya listesi:
37947:(pid 2144): testdb = C:\Program Files\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\
testdb.mdf 37947:(PID 2144): testdb_log = C:\Program Files\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\testdb_log.ldf
37947:(PID 2144): testdb_log1 = C:\Program Files\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\testdb_log1.ldf
Geri yükleme işlemi hatalarla tamamlandı. Ayrıntılar için modül yedekleme günlük dosyasına bakın. unknown XBSA error 1169 (0x491) nsr/db_apps/bsmsql/rcovmain.cpp(442): cleanUp() içine giriliyor. NSR/db_apps/BSMSQL/rcovmain.cpp(500): CleanUp() uygulamasından çıkılıyor.
43709:(pid 2144):Stop time: Wed May 25 15:37:49 2016
***********************
Yukarıdaki komutta rastgele bir mantıksal ad 'mydb' verdim ve komut, DB dosyalarının gerçek mantıksal adını ve orijinal konumlarını tükürüyor. Geri yükleme komutunuzu oluşturmak için bu bilgileri kullanabilirsiniz. Verileri geri yüklemek için farklı bir yol sağlamanız gerektiğini unutmayın. Mevcut verilerin üzerine yazma riskinden kaçınmak için geri yükleme komutunda orijinal kaynak yolunu sağlayamazsınız ve sağlamamalısınız.
Geri yükleme için yedekleme süresi mminfo komutundan alınabilir. Çıktıda gösterildiği gibi kaydetme süresi kullanılabilir veya nsavetime'da rapor oluşturup bunun yerine bu zamanı kullanabilirsiniz.
E.g:
mminfo -avot -s nsr-server -q "client=sql12srv1,savetime >= yesterday"
SQLbackups.001 Data Domain sql12srv1 5/25/2016 1:26:41 PM 119 MB 3209027663 cb full MSSQL$FINANCE:testdb
SQLbackups.001 Data Domain sql12srv1 5/25/2016 1:29:16 PM 5 KB 3192250597 cb incr MSSQL$FINANCE:testdb
SQLbackups.001 Data Domain sql12srv1 5/25/2016 1:34:14 PM 1320 MB 3141919250 cb incr MSSQL$FINANCE:testdb
SQLbackups.001 Data Domain sql12srv1 25.05.2016 1:40:31 PM 5 KB 3125142409 cb incr MSSQL$FINANCE:testdb
mminfo -avot -s nsr-server -q "client=sql12srv1,savetime >= yesterday" -r volume,client,sumflags,sumsize,level,savetime(25),nsavetime,name
SQLbackups.001 sql12srv1 cb 119 MB full 25.05.2016 1:26:41 PM 1464197201 MSSQL$FINANCE:testdb
SQLbackups.001 sql12srv1 cb 5 KB incr 25.05.2016 1:29:16 PM 1464197356 MSSQL$FINANCE:testdb
SQLbackups.001 sql12srv1 cb 1320 MB incr 25.05.2016 1:34:14 PM 1464197654 MSSQL$FINANCE:testdb
SQLbackups.001 sql12srv1 cb 5 KB incr 25.05.2016 1:40:31 PM 1464198031 MSSQL$FINANCE:testdb
Not: Meta veri kaydetme kümesinin veya gerçek veri kaydetme kümesinin nsavetime/savetime değerini belirtebilirsiniz. Bunlardan herhangi biri işe yarayacaktır.
Senaryo 2:
Yedeklemeler, db ortamına veri tabanı adları olmadan kaydedilirse gerekli yedeklemenin gerçekleşeceği zaman aynı anda görülmez. Örneğin, tüm veritabanı yedekleri aşağıdakiyle aynı kaydetme kümesi adlarına sahiptir:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:43:15 PM 151 KB 2672168543 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:45:26 PM 151 KB 2655391455 cb incr MSSQL$FINANCE:
Yukarıdakilerden, hangi kaydetme kümesinin ihtiyacınız olan yedeğe sahip olduğunu söyleyemezsiniz.
Medata veri kaydetme kümesi varsa, yedeklere GUI'den göz atılabilir ve veritabanı adını ve yedekleme süresini GUI'den bulabilirsiniz. Örneğin DB24 gerekliyse GUI, yedekleme zamanını "5/25/2016 4:49 PM" olarak gösterir.
Meta veri kaydetme kümesi yoksa geri yükleme için kaydetme zamanını bulmak üzere nsrinfo komutunu çalıştırmanız gerekir. Örneğin, mminfo kayıt setlerini aşağıdaki gibi gösteriyorsa:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:43:15 PM 151 KB 2672168543 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:45:26 PM 151 KB 2655391455 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:47:34 PM 151 KB 2638614367 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:49:42 PM 151 KB 2621837279 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:51:50 PM 151 KB 2605060191 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:53:58 PM 151 KB 2588283103 cb incr MSSQL$FINANCE:
Kaydetme kümesinin bir parçası olan veritabanı hakkında bilgi almak için aşağıdaki gibi kaydetme zamanlarında nsrinfo çalıştırın:
nsrinfo -n mssql -t "5/25/2016 4:43:15 PM" sql12srv1
Rating client 'sql12srv1' for savetime 1464208995(5/25/2016 4:43:15 PM) mssql ad alanı
MSSQL$FINANCE:/ DB21
MSSQL$FINANCE:/DB21%/files.1464208995.1464209044
2 nesne bulundu
nsrinfo -n mssql -t "5/25/2016 4:49:42 PM" SQL12SRV1
'SQL12SRV1' istemcisini mssql ad alanından
kaydetme zamanı 1464209382 için (25.05.2016 16:49:42) tarıyor: MSSQL$FINANCE:/DB24
%/files.1464209382.1464209437
2 nesne bulundu
Kaydetme kümeleri DB adlarını göstermediğinden, meta veri kaydetme kümesinin mevcut olmadığı senaryoda yukarıdakiler biraz deneme yanılma olabilir. nsrinfo sorgusunu birkaç kaydetme kümesine daraltmak için ipucu olarak yaklaşık veritabanı boyutunu kullanın.
Article Properties
Article Number: 000022417
Article Type: How To
Last Modified: 09 Aug 2022
Version: 4
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.