Jak zmienić nazwę logicznej bazy danych podczas odtwarzania bazy danych za pomocą obiektu SMO?Zmiana nazwy logicznej bazy danych za pomocą SMO
/Wiktor
Jak zmienić nazwę logicznej bazy danych podczas odtwarzania bazy danych za pomocą obiektu SMO?Zmiana nazwy logicznej bazy danych za pomocą SMO
/Wiktor
Nie można zmienić nazwy logiczne plików bazy danych z SQL RESTORE DATABASE: to nie jest oferowany. Tylko pliki fizyczne mogą być zmieniane za pomocą ZAWSZE
W zwykły sposób zmieniasz nazwy plików logicznych, używając ALTER DATABASE w SQL.
Wygląda na to, że został potwierdzony przez klasę SMO RelocateFile.
//restore is the Restore object in SMO
restore.RelocateFiles.Add(new RelocateFile(SourceDataFile.Name, Path.Combine(destinationDirectory, destination.Database + ".mdf")));
restore.RelocateFiles.Add(new RelocateFile(SourceLogFile.Name, Path.Combine(destinationDirectory, destination.Database + "_log.ldf")));
restore.SqlRestore(destinationServer);
var destinationDatabase = destinationServer.Databases[destinationDatabaseName];
//renaming the logical files does the trick
destinationDatabase.FileGroups[0].Files[0].Rename(destinationDatabaseName);
destinationDatabase.LogFiles[0].Rename(destinationDatabaseName + "_log");
kod Rahul jest poprawna: Przywracanie do nowych zbiorów fizycznych i zmiany nazw plików logiczne jest procesem dwuetapowym:
RelocateFile
wezwanie mówi „mapa to logiczną nazwę pliku do tego pliku fizycznego”. Musisz użyć logicznych nazw oryginalnych kopii zapasowych tutaj NIE nowych, w przeciwnym wypadku prawdopodobnie uzyskasz wyjątki ".mdf cannot be overwritten
".
Aby utworzyć nowe nazwy logiczne, należy użyć wywołań Rename()
, jak pokazano w kodzie Rahula.
Jednakże, jeśli chcesz zmienić nazwę bazy danych przy użyciu SMO:
var srvConn = new ServerConnection(serverName)
{
LoginSecure = false,
Login = dbUserName,
Password = dbUserPassword,
DatabaseName = "master",
};
var mainDb = new Database(srvConn, "old database name");
mainDb.Rename("new database name");
mainDb.Refresh();
Czy oznacza nazwę bazy danych lub nazwy plików? Wszystkie poniższe odpowiedzi wydają się zakładać, że masz na myśli logiczne nazwy plików? – Tao