我正在寻找命令行或脚本解决方案来为所有数据库对象提取SQL Server 2005+的DDL:表,存储过程,视图,索引/索引,约束等.GUI工具不是很有用。
首选内置工具,因为这与Oracle的DBMS_METADATA内容相当。此外,倾向于使用像Oracle一样简单的解决方案来获取DDL - 例如,一个班轮:
SELECT DBMS_METADATA.GET_DDL('TABLE', 'MY_TABLE') FROM DUAL
注意:解决SQL Server 2005中的过程似乎很容易,但我找不到任何类似于其他对象(如表)的引用。
SELECT definition FROM Sys.sql_modules WHERE object_id = OBJECT_ID('MyProc')
提前致谢!
答案 0 :(得分:4)
Transact-SQL语言中没有支持。客户端库(SMO)可以使用Scripter对象执行此操作,请参阅http://msdn.microsoft.com/en-us/library/ms162153.aspx处的示例。您可以使用PowerShell中的SMO作为脚本解决方案。
SQL Management Studio还有一个选项(右键单击数据库,转到“任务”,选择“生成脚本”),它使用了SMO Scripter。
答案 1 :(得分:2)
我写了SMOscript,这是一个命令行工具,它使用SMO生成所有数据库对象的DDL文件。