【问题标题】:How do you copy a MS SQL 2000 database programmatically using C#?如何使用 C# 以编程方式复制 MS SQL 2000 数据库?
【发布时间】:2010-09-15 12:40:34
【问题描述】:

我需要使用 C# (VS 2005) 在 SQL Server 2000 中将多个表从一个数据库复制到另一个数据库。调用需要参数化 - 我需要能够传入我要将这些表复制到的数据库的名称。

我可以将 DTS 与参数一起使用,但我找不到任何从 C# 中执行此操作的示例代码。

或者,我可以使用

drop table TableName
select * into TableName from SourceDB..TableName

然后重建索引等 - 但这真的很笨拙。

还有其他想法吗?

谢谢!

【问题讨论】:

  • 当您说找不到DTS的c#示例代码时,您是指执行DTS包的示例代码,还是复制DTS包中的表的示例代码?

标签: c# .net sql-server dts


【解决方案1】:

对于 SQL Server 7.0 和 2000,我们为此提供了 SQLDMO。对于 SQL Server 2005,有 SMO。这允许您执行与管理数据库、脚本对象、枚举数据库等相关的几乎所有事情。 IMO,这比尝试“自己动手”的方法要好。

SQL 2000: Developing SQL-DMO Applications

Transfer Object

SQL 2005: 这是SMO主页: Microsoft SQL Server Management Objects (SMO)

这是传输功能: Transferring Data

How to: Transfer Schema and Data from One Database to Another in Visual Basic .NET

【讨论】:

    【解决方案2】:

    你可以把找到的脚本(复制数据库)放在这里

    http://www.codeproject.com/KB/database/CreateDatabaseScript.aspx

    进入应用程序。只需更换目的地。要实际移动整个数据库,请按照

    http://support.microsoft.com/kb/314546

    但请记住,数据库必须先脱机。

    谢谢

    【讨论】:

    • 会很好,但 CodeProject 脚本适用于 SQL 2005;我只有 SQL 2000。
    • 查看 SQL Server 2000 联机丛书,键入“复制数据库”,您将在那里获得信息。
    【解决方案3】:

    如果目标表每次都被删除,那为什么不做 SELECT INTO 呢?看起来一点也不像杂牌。

    如果它工作得很好并且符合所有要求,为什么还要花费一天的时间来开发代码来做完全相同的事情?

    让 SQL 为您完成所有繁重的工作。

    【讨论】:

    • FK 依赖和类似的东西会变得很棘手。我并不是说它不起作用,它只是让我觉得非常不雅。
    猜你喜欢
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多