问题描述
我需要在 c# 中实现将某个数据库从服务器地址复制到本地主机的功能(我知道备份/恢复选项 - 当我想导出和导入本地存储的数据库时,我已经实现了) .我尝试了以下源代码,但是当我尝试运行 transferData 时,出现错误“未安装集成服务组件或您无权使用它。”。我使用的是 sql Express 2014。
Server sourceServer = new Server(sourceServerName);
Server destinationServer = new Server(destinationServerName);
try
{
sourceServer.ConnectionContext.LoginSecure = true;
sourceServer.ConnectionContext.Connect();
destinationServer.ConnectionContext.LoginSecure = true;
destinationServer.ConnectionContext.Connect();
Microsoft.sqlServer.Management.Smo.Database databaseSource = sourceServer.Databases[databaseName];
Microsoft.sqlServer.Management.Smo.Database databaseDestination = new Microsoft.sqlServer.Management.Smo.Database(destinationServer,databaseName);
databaseDestination.Create();
Transfer transferDatabase = new Transfer(databaseSource)
{
copyAllObjects = false,copyAllSchemas = true,//copy all user defined data types from source to destination
copyAllUserDefinedDataTypes = true,//copy all tables from source to destination
copyAllTables = true
};
//copy all constraints
transferDatabase.Options.DriAllKeys = true;
//copy all defaults
transferDatabase.Options.DriDefaults = true;
//Drops the existing tables
transferDatabase.DropDestinationObjectsFirst = true;
//copy data of all source tables to destination tables
//It actually generates INSERT statement for destination
transferDatabase.copyData = true;
//copy all stored procedure from source to destination
transferDatabase.copyAllStoredProcedures = true;
//specify the destination server name
transferDatabase.DestinationServer = destinationServer.Name;
//specify the destination database name
transferDatabase.DestinationDatabase = databaseDestination.Name;
//TransferData method transfers the schema objects and data
//whatever you have specified to destination database
transferDatabase.TemporaryPackageDirectory = @"C:\Data\";
transferDatabase.Options.ContinueScriptingOnError = true;
transferDatabase.TransferData();
}
catch (Exception ex)
{
log.Error(ex.Message);
}
finally
{
if (sourceServer.ConnectionContext.IsOpen)
{
sourceServer.ConnectionContext.disconnect();
}
if (destinationServer.ConnectionContext.IsOpen)
{
destinationServer.ConnectionContext.disconnect();
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)