如何使用 C# 以编程方式复制 MS SQL 2000 数据库?

Posted

技术标签:

【中文标题】如何使用 C# 以编程方式复制 MS SQL 2000 数据库?【英文标题】:How do you copy a MS SQL 2000 database programmatically using C#? 【发布时间】: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包中的表的示例代码? 【参考方案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 依赖和类似的东西会变得很棘手。我并不是说它不起作用,它只是让我觉得非常不雅。

以上是关于如何使用 C# 以编程方式复制 MS SQL 2000 数据库?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 C# 以编程方式刷新 MS Access 链接表(使用 Excel 文件)?

如何在 C# 的线程中以编程方式复制 Excel 文件时修复访问拒绝错误

如何以最佳方式在 C# 中处理 SQL 连接? [复制]

以编程方式向 C# 中的文件添加安全权限

如何通过 c# 以编程方式更改 COM 安全设置?

C# 以编程方式连接到 SQL 服务器 CE