【问题标题】:SQL Server SMO TransferData() runs slowlySQL Server SMO TransferData() 运行缓慢
【发布时间】:2011-09-01 04:55:17
【问题描述】:

我正在关注http://www.mssqltips.com/tip.asp?tip=1910,下面的代码确实有效,但运行大约需要 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();

【问题讨论】:

    标签: c# sql-server schema


    【解决方案1】:

    我认为您应该不理会这段代码。你无法改进它。据我了解,您想将表/模式从一个数据库转移到另一个数据库。

    我建议的以下选项:

    链接服务器

    从 SQL 2000 开始,您应该能够直接连接到其他数据库作为链接服务器。在专业人士专栏中,如果您没有任何其他技术技能(例如 DTS 或 SSIS),这种直接访问可能很容易使用,但要正确进行初始设置可能会很复杂,并且可能存在安全问题/问题。

    DTS

    DTS 与 SQL 2000 打包在一起,专为此类任务而设计。如果编写正确,您的 DTS 包可以具有良好的错误处理能力并且可以重新运行/重复使用。

    SSIS

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-24
      • 2018-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多