【问题标题】:SQL Server parallels to Oracle DBMS_METADATA.GET_DDL?SQL Server 与 Oracle DBMS_METADATA.GET_DDL 平行?
【发布时间】:2010-12-03 11:23:03
【问题描述】:

我正在寻找命令行或脚本解决方案,以将 DDL 从 SQL Server 2005+ 中提取出来,用于所有数据库对象:表、存储过程、视图、索引/索引、约束等。GUI 工具不感兴趣。

首选内置工具,因为它与 Oracle 的 DBMS_METADATA 最相似。此外,更喜欢像 Oracle 那样简单的解决方案来获取 DDL - 例如,单线:

从 DUAL 中选择 DBMS_METADATA.GET_DDL('TABLE', 'MY_TABLE')

注意:为 SQL Server 2005 中的过程提取东西似乎很容易,但我找不到对其他对象(如表)的类似内容的任何引用。

选择定义 FROM Sys.sql_modules WHERE object_id = OBJECT_ID('MyProc')

提前致谢!

【问题讨论】:

  • 看来oracle语法真的是'select ... from dual'。

标签: sql-server sql-server-2005 oracle scripting ddl


【解决方案1】:

我写了SMOscript,这是一个命令行工具,它使用 SMO 来生成所有数据库对象的 DDL 文件。

【讨论】:

  • 谢谢 - 我去看看 SMOscript!
【解决方案2】:

不支持 Transact-SQL 语言。客户端库 (SMO) 可以使用 Scripter 对象执行此操作,请参见 http://msdn.microsoft.com/en-us/library/ms162153.aspx 中的示例。您可以使用 PowerShell 中的 SMO 作为脚本解决方案。

SQL Management Studio 也有一个选项(右键单击数据库,转到任务,选择生成脚本),它在后台使用 SMO Scripter。

【讨论】:

  • 我怀疑可能没有任何类似的东西可以将 DDL 放在一个衬里中。我会调查 SMO 的东西 - 非常感谢!
猜你喜欢
  • 1970-01-01
  • 2011-03-15
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
  • 2011-01-10
  • 2023-03-13
  • 2011-12-21
相关资源
最近更新 更多