【发布时间】:2019-08-30 12:12:39
【问题描述】:
我只需要复制数据库并传输特定表的数据,但我不知道如何在 SMO 中执行此操作
目前这是我所拥有的:
try
{
if (isFromConsole)
Console.WriteLine("Initializing database creation...");
var srcDbInfo = GetInfo(srcConnectionString);
var destDbInfo = GetInfo(destConnectionString);
var sc = new ServerConnection();
sc.LoginSecure = false;
sc.ServerInstance = srcDbInfo.DataSource;
sc.Login = srcDbInfo.UserID;
sc.Password = srcDbInfo.Password;
sc.ConnectTimeout = 0;
sc.StatementTimeout = 0;
sc.Connect();
if (sc.IsOpen)
{
Server server = new Server(sc);
Database srcDb = server.Databases[srcDbInfo.DBName];
Database destDb = new Database(server, destDbInfo.DBName);
// Create method will create the database on the specified server
if (isFromConsole)
Console.WriteLine("Creating Database...");
destDb.Create();
if (isFromConsole)
Console.WriteLine("Database successfully created...");
//Create an object of Transfer class and pass
//reference of source database to its construtor
Transfer transfer = new Transfer(srcDb);
transfer.Options.WithDependencies = true;
transfer.Options.ContinueScriptingOnError = true;
// set copy options
transfer.CopyAllObjects = true;
transfer.CopyAllSchemas = true;
//Copy all user defined data types from source to destination
transfer.CopyAllUserDefinedDataTypes = true;
//Copy all tables from source to destination
transfer.CopyAllTables = true;
//Copy data of all source tables to destination tables
//It actually generates INSERT statement for destination
transfer.CopyData = true;
//Copy all stored procedure from source to destination
transfer.CopyAllStoredProcedures = true;
//set reference to all
transfer.Options.DriAll = true;
//specify the destination server name
transfer.DestinationServer = server.Name;
//specify the destination database name and credentials
transfer.DestinationDatabase = destDb.Name;
transfer.DestinationLoginSecure = false;
transfer.DestinationLogin = destDbInfo.UserID;
transfer.DestinationPassword = destDbInfo.Password;
//TransferData method transfers the schema objects and data
//whatever you have specified to destination database
if (isFromConsole)
Console.WriteLine("Transferring data...");
transfer.TransferData();
if (isFromConsole)
Console.WriteLine("Transfer completed...");
}
}
catch (Exception ex)
{
throw ex;
}
此代码复制并传输源数据库中的所有数据。我需要设置所有要复制其中所有数据的表,但我不知道如何操作,也看不到它的任何文档。
【问题讨论】:
-
如果您使用 SQL Server 管理,简单的方法是分离数据库副本 mdf 和 ldf 文件。重新附加原始数据库。然后以不同的名称附加副本。这将复制所有内容。然后你可以删除你不想要的。
-
查看 ObjectList 并确保将 CopyAllObjects 设置为 false stackoverflow.com/questions/26259512/…