【问题标题】:SMO scripting entire database like Studio Management does with Generate ScriptsSMO 编写整个数据库的脚本,如 Studio Management 使用 Generate Scripts
【发布时间】:2011-07-22 15:05:17
【问题描述】:

我正在尝试设置一个 C# 工具,用于编写从表到存储过程的整个数据库的脚本。我想获取所有架构和数据。我很难在网上找到很多关于如何正确执行此操作的信息。如果您不希望使用备份或传输实际备份数据库,我认为这将是一种常见的做法,但我在这个主题上找不到太多。谁能指导我如何做到这一点或告诉我需要做什么?我已经找到了如何编写表和存储过程的脚本,但是我想在数据库中获取所有内容,以便在对数据库的更改破坏其他内容时可以恢复到原来的位置。

我这样做的原因之一是因为我知道如果您进行备份:

a.) 它可能会损坏 b.) 您只能在托管 SQL 服务器的服务器上进行备份。如果从 SQL Server 远程运行应用程序,则无法在本地计算机上备份它。这当然是假设我不能总是依赖 UNC 路径或任何类型的 ftp 脚本。

【问题讨论】:

  • 脚本化数据一般来说是个坏主意......它需要在脚本中占用大量空间,远远超过数据库中实际数据占用的空间。
  • 我能理解您的观点,这样做有很好的理由(无论如何对我的经理来说)。他想要一个一键式解决方案,可以将我们所有的数据提取出来,然后我们可以将其放回原处。它必须能够将其拉到您所在的位置。因此,如果我的经理在他的桌面上,则需要在那里创建它,所以没有共享和 ftp 以及所有这些,备份/恢复就不行了。再次。我听到了,但事实就是如此。

标签: c# sql-server backup smo


【解决方案1】:

看看http://scriptdb.codeplex.com。 这是一个编写数据库 ddl 脚本的工具。

对于数据的脚本化,您可以尝试如下所述的方法:http://sqlblog.com/blogs/ben_miller/archive/2007/10/18/scripting-tables-views-and-data-using-smo-part-3.aspx 或尝试使用 bcp,这对于更大的数据库来说是更好的选择。

【讨论】:

  • Scriptdb 似乎只适用于 2000 年和 2005 年。我在 2008R2 上。另一个示例链接只获取表数据,不获取存储过程。
  • ScriptDb 是开源软件。如果您能够构建一个 c# 应用程序(并且您应该稍加努力,因为 .NET 有免费的 SDK),您可以自己针对 2008R2 编译它。
猜你喜欢
  • 2020-05-08
  • 2016-12-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2019-07-16
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多