用于生成模式文本的SQL命令(类似于CreateTo或AlterTo)

时间:2009-04-15 17:56:12

标签: sql-server sql-server-2005 schema

SQL Server 2005.是否有一个SQL查询将返回一个文本字段,其中包含与在执行右键单击表时找到的相同类型的架构信息 - >脚本表为 - >从SQL Server Management Studio创建到(或更改)?

我正在寻找描述整个表的单/平面格式,包括约束,索引等。

我知道:

sp_help table_name

但是这并没有提供我正在寻找的单一平面格式。理想情况下,它将采用可编写脚本的格式,例如可以对服务器执行的AlterTo结果。

这是针对一个计划的进程,该进程每晚记录表模式以检入版本控制(SVN)。

4 个答案:

答案 0 :(得分:1)

不是真的。表def是列,约束等的集合。

有一个可以帮助调用ScriptDB4SVN的SVN插件。我没有亲自使用它,我正在传闻。

答案 1 :(得分:1)

再次搜索'网络以获得答案,并遇到this问题。它不能准确捕获与SQL Management Studios Create-to相同的所有数据,但足以满足我的需要(为了版本控制目的而编写数据库结构脚本)。

答案 2 :(得分:1)

SQL Server中没有这样的命令。这主要是因为Scripting便利实际上是在SMO中而不是在SQL Server本身中。有许多免费的控制台命令行工具可以通过xp_CmdShell调用它。

但是,如果您真的想从T-SQL执行此操作,那么您将需要一个脚本或存储过程来枚举所有表属性,列,列数据类型,默认值,nullabilty等等,然后重新组合它进入CREATE TABLE脚本。这是巨大任务。这是坏消息。好消息是有人(Lowell Izaguirre)已经这样做并在SQLServerCentral.Com上发表了这篇文章(http://www.sqlservercentral.com/scripts/Miscellaneous/30730/)。

享受。

答案 3 :(得分:0)

不是 - 你可以使用C#(或VB.NET)和SMO(SQL管理对象)来编写数据库对象(表和所有)的脚本,也可以使用SQL来获取表的列列表:

SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Your Table Name here'

但我不知道在SQL本身为数据库对象创建Create / Alter脚本有什么简单的方法,抱歉。

马克