【问题标题】:How do I copy SQL Server 2008 database via C# code如何通过 C# 代码复制 SQL Server 2008 数据库
【发布时间】:2010-01-27 14:48:49
【问题描述】:

我想使用 C# 将现有 SQL Server 2008 数据库架构而不是数据复制到同一服务器上的新数据库(即 MyDB => MyDB_Test)。

我在http://www.codeproject.com/KB/cs/CopyDBSchemaUsingSMO.aspx 找到了一些示例代码,它似乎完全符合我的要求,但它一直在 ddatabase.Create() 行抛出以下错误:

Could not load file or assembly 'Microsoft.SqlServer.BatchParser,
Version=9.0.242.0, Culture=neutral,

PublicKeyToken=89845dcd8080cc91' 或其依赖项之一。系统找不到文件 指定。":"Microsoft.SqlServer.BatchParser, 版本=9.0.242.0, 文化=中性,PublicKeyToken=89845dcd8080cc91"

我试图找到丢失的 DLL,但我只能找到 SQL Server 2005 的版本。我不确定是否应该使用它,寻找替代下载或采取完全不同的方法。

任何帮助将不胜感激!

【问题讨论】:

    标签: sql-server sql-server-2008 smo


    【解决方案1】:

    我已经看到机器上的 SQL Server 2008 组件安装不完整 - 在这种情况下,只需前往 Microsoft's download site 并在适当的版本 (x86 32 位,或 x64 64 位或 IA64 64 位 - 取决于您的需要)。

    安装并重试。

    您可能还需要考虑购买和使用现有工具,而不是自己编写所有代码。检查例如Red-Gate 的 SQL Compare 允许您执行此操作 - 比较两个数据库(它们的结构)并确保它们都处于同一级别。

    【讨论】:

    • 感谢您的快速回答。我马上去看看。至于我需要在代码中执行此操作,我需要它来进行自动化集成测试......
    • 我安装了管理对象,但仍然出现错误:“无法加载文件或程序集 'Microsoft.SqlServer.BatchParser, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' 或其中之一其依赖关系。系统找不到指定的文件。":"Microsoft.SqlServer.BatchParser, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
    • 好吧,奇怪 - 你在硬盘上的某个地方找到文件“Microsoft.SqlServer.BatchParser.dll”吗?
    • 9.0 版本似乎表明SQL Server 2005 ......难道您同时安装了SQL Server 2005 和2008?也许它只是拿起(或寻找)错误版本的 SMO .....
    【解决方案2】:

    突然想到的几点,我认为是需要考虑的事情:

    听起来这不是一次性的,而是你想在更多场合做的事情,所以我建议:

    1. 保留整个数据库创建脚本并运行它们。恕我直言,无论如何,在源代码控制中这是一件好事
    2. 拥有数据库的干净(空)备份(本质上是模板副本),并将其还原为新数据库

    【讨论】:

      猜你喜欢
      • 2011-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-30
      相关资源
      最近更新 更多