如何使用 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 文件)?