4

我正在寻找命令行或脚本解决方案,以将 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')

提前致谢!

4

2 回答 2

4

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

SQL Management Studio 也有一个选项(右键单击数据库,转到 Tasks,选择 Generate Scripts),它在后台使用 SMO Scripter。

于 2009-10-02T22:00:36.477 回答
2

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

于 2009-10-28T06:52:18.633 回答