在SQL Server中创建类似于INFORMATION_SCHEMA.VIEW_DEFINITION的表

时间:2009-10-29 16:24:22

标签: sql sql-server tsql create-table

是否有标准方法来检索SQL Server中表的“CREATE TABLE ..”定义?

我可以向INFORMATION_SCHEMA询问视图和函数/过程的定义,所以我认为对表格来说是相同的,但我没有找到任何东西。

3 个答案:

答案 0 :(得分:3)

是 - INFORMATION_SCHEMA.TABLES 应该是您正在寻找的。

它会给你一些类似的东西:

aspnetdb    dbo    aspnet_Paths                      BASE TABLE
aspnetdb    dbo    aspnet_PersonalizationAllUsers    BASE TABLE
aspnetdb    dbo    aspnet_PersonalizationPerUser     BASE TABLE
aspnetdb    dbo    vw_aspnet_WebPartState_Paths      VIEW
aspnetdb    dbo    vw_aspnet_WebPartState_Shared     VIEW
aspnetdb    dbo    vw_aspnet_WebPartState_User       VIEW
aspnetdb    dbo    aspnet_Applications               BASE TABLE

如果您想了解表格的列,请查看 INFORMATION_SCHEMA.COLUMNS

SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'aspnet_Users'

将为您提供指定表格列的所有详细信息。

答案 1 :(得分:1)

使用INFORMATION_SCHEMA查看视图和代码将失败。数据限制为nvarchar(4000),因此不会读取更长的内容。使用sys.sql_modulesOBJECT_DEFINITION

对于表格,它更难。 “表”由列,约束,索引,可能的规则,UDT组成(我忘了什么?)。这就是为什么SSMS与视图或存储过程相比具有如此多的表脚本选项。

我建议分析SSMS并希望它不使用SMO ......或者通过CLR代码甚至xp_cmdshell使用SMO。

答案 2 :(得分:0)

您可以使用.NET中的SMO(Microsoft.SqlServer.Smo)来编写表格脚本。