Uso SQL Server SMO per ripristinare un .bak in un nuovo database, ma non è riuscito a funzionare.database di ripristino smo
di SQL Server è la versione 2012 e SMO oggetto è da l'ultima versione dell'SDK 11.0
.bak è stata creata usando SQL Management Studio 2012, lo stesso pc locale, sullo stesso pc codifica pure.
Il messaggio di errore che ottengo è:
ripristino non riuscito per Server 'SERVER'.
Cosa c'è di sbagliato nel mio codice?
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);
AGGIORNAMENTO: I arrese soluzioni SMO, e ha cercato
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.
Grazie a tutti.
Esiste un'eccezione interna? Per favore controlla il debug, che probabilmente ti darà la vera ragione. – Bridge
Inoltre, sei sicuro di non voler sovrascrivere i file già esistenti? Se usi lo stesso 'dbName', potresti avere dati e file di log con lo stesso nome - prova a controllare se il file esiste prima, e se lo fa, non provare a crearlo di nuovo. – Bridge
Impossibile aprire il dispositivo di backup 'd: \ template.BAK'. Errore di sistema operativo 123 (il nome del file, il nome della directory o la sintassi dell'etichetta del volume non sono corretti). >> il .bak è stato creato da sql management studio 2012 e smo è la versione corretta (versione 11). –