sql >> Databasteknik >  >> RDS >> Sqlserver

Använda SMO för att kopiera en databas och data

Nåväl, efter att ha kontaktat Microsft Support fick jag det att fungera korrekt, men det är långsamt och mer eller mindre värdelöst. Att göra en säkerhetskopia och sedan en återställning är mycket snabbare och jag kommer att använda det så länge den nya kopian ska leva på samma server som originalet.

Arbetskoden är följande:

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();

Tricket var att ställa in egenskapen DestinationDatabase. Detta måste ställas in även om målet är samma som källan. Dessutom var jag tvungen att ansluta till servern som en namngiven instans istället för att använda de andra anslutningsalternativen.



  1. Backup Best Practices för MySQL, MariaDB och Galera Cluster

  2. värden uppdateras inte från PHP AJAX-formulär till MYSQL-databas

  3. Escapende et-tecken i SQL-sträng

  4. MySQL-tabell med fast antal rader?