Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL Server SMO TransferData()运行缓慢_C#_Sql Server_Schema - Fatal编程技术网

C# SQL Server SMO TransferData()运行缓慢

C# SQL Server SMO TransferData()运行缓慢,c#,sql-server,schema,C#,Sql Server,Schema,我正在跟踪,下面的代码确实有效,但运行大约需要90秒。数据库模式只有不到10个(相当简单的)表。我不知道为什么要花这么长时间。关于如何调试这个有什么建议吗 var host = "192.168..."; var user = "username"; var pass = "password"; var srcDbName = "srcDbName"; var dstDbName = "dstDbName"; var server = new Server(new ServerConnecti

我正在跟踪,下面的代码确实有效,但运行大约需要90秒。数据库模式只有不到10个(相当简单的)表。我不知道为什么要花这么长时间。关于如何调试这个有什么建议吗

var host = "192.168...";
var user = "username";
var pass = "password";
var srcDbName = "srcDbName";
var dstDbName = "dstDbName";

var server = new Server(new ServerConnection(host, user, pass));

var srcDb = server.Databases[srcDbName];
var dstDb = new Database(server, dstDbName);

dstDb.Create();

var transfer = new Transfer(srcDb);

transfer.CopyAllTables = true;
transfer.Options.DriAll = true;
transfer.Options.ContinueScriptingOnError = false;

transfer.DestinationDatabase = dstDbName;
transfer.DestinationServer = server.Name;
transfer.DestinationLoginSecure = false;
transfer.DestinationLogin = user;
transfer.DestinationPassword = pass;

transfer.TransferData();

我认为你应该把这段代码放在一边。你不能改进它。正如我从问题中了解到的,您希望将表/模式从一个数据库转移到另一个数据库

以下是我的建议:

链接服务器

从SQL 2000中,您应该能够作为链接服务器直接连接到其他数据库。在pros列中,如果您不具备任何其他技术技能(如DTS或SSI),则这种直接访问可能很容易使用,但初始设置可能很复杂,并且可能存在安全问题

DTS

DTS是用SQL 2000打包的,是为这类任务而设计的。如果编写正确,DTS包可以具有良好的错误处理能力,并且可以重新命名/重用

SSI

SSIS实际上与SQL 2005及更高版本打包在一起,但您可以将其连接到其他数据库。它基本上是DTS的更好版本