मैं एक नए डेटाबेस में .bak को पुनर्स्थापित करने के लिए SQL सर्वर SMO का उपयोग करता हूं, लेकिन काम करने में विफल रहा।smo डेटाबेस को पुनर्स्थापित करें
एसक्यूएल सर्वर 2012 और एसएमओ वस्तु संस्करण नवीनतम एसडीके संस्करण 11.0
फ़ाइल .bak एसक्यूएल प्रबंधन स्टूडियो 2012, एक ही स्थानीय पीसी, साथ ही का उपयोग कर एक ही कोडिंग पीसी पर बनाए जाने के बाद है।
त्रुटि संदेश मैं मिलता है:
सर्वर 'सर्वर' के लिए पुनर्स्थापना विफल हुई।
मेरे कोड में क्या गलत है?
string dbPath = Path.Combine(@"d:\my data", dbName + "_db" + ".mdf");
string logPath = Path.Combine(@"d:\my data", dbName + "_db" + "_Log.ldf");
Restore restore = new Restore();
BackupDeviceItem deviceItem = new BackupDeviceItem("d:\template.BAK", DeviceType.File);
restore.Devices.Add(deviceItem);
restore.Database = dbName + "_db";
RelocateFile relocateDataFile = new RelocateFile("Data", dbPath);
RelocateFile relocateLogFile = new RelocateFile("Log", logPath);
restore.RelocateFiles.Add(relocateDataFile);
restore.RelocateFiles.Add(relocateLogFile);
restore.Action = RestoreActionType.Database;
restore.ReplaceDatabase = true;
restore.SqlRestore(server);
UPDATED: मैं एसएमओ समाधान surrended, और करने की कोशिश की सभी
using (SqlConnection connection = new SqlConnection("Data Source=server;user id=sa;password=xxxxx;"))
{
using (SqlCommand command = new SqlCommand(@"RESTORE DATABASE beauty01 FROM DISK = 'd:\template.bak' WITH RECOVERY, MOVE 'beauty1' TO 'D:\MyData\beauty01_Data.mdf', MOVE 'beauty1_log' TO 'd:\Mydata\beauty01_Log.ldf', REPLACE", connection))
{
connection.Open();
// Add the parameters for the SelectCommand.
command.CommandType = CommandType.Text;
command.ExecuteNonQuery();
}
} >> work good.
धन्यवाद।
क्या कोई आंतरिक अपवाद है? कृपया डीबग में जांचें, जो शायद आपको वास्तविक कारण देगा। – Bridge
इसके अलावा, क्या आप वाकई उन फ़ाइलों को ओवरराइट करने का प्रयास नहीं कर रहे हैं जो पहले से मौजूद हैं? यदि आप एक ही 'dbName' का उपयोग करते हैं, तो आपके पास एक ही नाम के साथ डेटा और लॉग फ़ाइल हो सकती है - यह देखने के लिए जांचें कि फ़ाइल पहले मौजूद है या नहीं, और यदि ऐसा होता है, तो इसे फिर से बनाने का प्रयास न करें। – Bridge
बैकअप डिवाइस 'd: \ template.BAK' नहीं खोल सकता है। ऑपरेटिंग सिस्टम त्रुटि 123 (फ़ाइल नाम, निर्देशिका नाम, या वॉल्यूम लेबल वाक्यविन्यास गलत है।)। >> .bak एसक्यूएल प्रबंधन स्टूडियो 2012 द्वारा बनाया गया था और एसएमओ सही संस्करण (संस्करण 11) है। –