假设我在查询窗口中编写了一个创建表脚本并运行它。现在,这个脚本文件在哪里生成(系统表)。我是说如果我做
select * from sys.syscomments
我将在"文本"列中获得存储过程或函数的脚本。同样,对于表或视图,有什么方法可以做到这一点?
任何DMV等…
提前感谢
我不确定脚本存储在哪里,但如果您希望能够查看脚本语言来创建表,那么在SQL2008R2(我非常确定SQL2008)中,SSMS可以动态生成脚本。只需选择表(或视图、SP等),然后右键单击即可。从上下文菜单中,选择"将表脚本化为创建对象"(或从列表中选择的任何其他修改)。然后您可以选择输出位置—"新建查询编辑器"窗口可能最容易查看结果。从那里你就有了创建该表的基本语言,你可以从那里修改或保存它。
下面的查询也适用于视图
select * from sys.syscomments
为了获得表的脚本,你必须
Right Click on database >> tasks >> Generate Scripts >> choose objects (select tables)
我认为这是获取表脚本的可能方式。
对于视图,可以使用中的列VIEW_DEFINITION
SELECT *
FROM INFORMATION_SCHEMA.VIEWS
我不认为表有等价物,因为表不需要存储的定义,因为表本身就是定义。如果您需要复制表结构,那么最好的方法可能是使用:
SELECT *
INTO NewTable
FROM OldTable
WHERE 0 = 1
您可以尝试使用系统视图生成自己的脚本,并创建动态SQL,这样可以启动
这不会造成限制,也许我错过了一些东西,或者导致它崩溃,但总的要点是存在的。您也可以在SQL之外执行此操作,如本答案中所示。
但是我应该补充一点,我不会容忍使用这些方法。我能想到的很少有场景需要以这种方式用程序复制表结构。如果有必要一次性复制结构,最好使用SSMS中内置的生成脚本函数。