Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Używanie SMO do kopiowania bazy danych i danych

Cóż, po skontaktowaniu się z pomocą techniczną Microsft udało mi się, że działa poprawnie, ale jest powolny i mniej lub bardziej bezużyteczny. Wykonywanie kopii zapasowej, a następnie przywracanie jest znacznie szybsze i będę z niego korzystać tak długo, jak nowa kopia powinna znajdować się na tym samym serwerze, co oryginał.

Działający kod wygląda następująco:

ServerConnection conn = new ServerConnection("rune\\sql2008");
Server server = new Server(conn);

Database newdb = new Database(server, "new database");
newdb.Create();

Transfer transfer = new Transfer(server.Databases["source database"]);
transfer.CopyAllObjects = true;
transfer.CopyAllUsers = true;
transfer.Options.WithDependencies = true;
transfer.DestinationDatabase = newdb.Name;
transfer.DestinationServer = server.Name;
transfer.DestinationLoginSecure = true;
transfer.CopySchema = true;
transfer.CopyData = true;
transfer.Options.ContinueScriptingOnError = true;
transfer.TransferData();

Sztuczka polegała na ustawieniu właściwości DestinationDatabase. Należy to ustawić, nawet jeśli cel jest taki sam jak źródło. Ponadto musiałem połączyć się z serwerem jako nazwana instancja zamiast korzystać z innych opcji połączenia.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Entity Framework — rozmiar wiersza większy niż dopuszczalny maksymalny rozmiar wiersza 8060

  2. Zalecane użycie tabeli tymczasowej lub zmiennej tabeli w Entity Framework 4. Zaktualizuj strukturę Performance Entity

  3. SQL Server Azure / 2022 Tabele księgi bazy danych z systemu Linux.

  4. Jak APPROX_COUNT_DISTINCT() działa w SQL Server

  5. Czy indeksy klastrowe muszą być unikatowe?