是否有标准方法来检索SQL Server中表的“CREATE TABLE ..”定义?
我可以向INFORMATION_SCHEMA询问视图和函数/过程的定义,所以我认为对表格来说是相同的,但我没有找到任何东西。
答案 0 :(得分:3)
是 - INFORMATION_SCHEMA.TABLES
应该是您正在寻找的。 p>
它会给你一些类似的东西:
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_modules或OBJECT_DEFINITION。
对于表格,它更难。 “表”由列,约束,索引,可能的规则,UDT组成(我忘了什么?)。这就是为什么SSMS与视图或存储过程相比具有如此多的表脚本选项。
我建议分析SSMS并希望它不使用SMO ......或者通过CLR代码甚至xp_cmdshell使用SMO。
答案 2 :(得分:0)
您可以使用.NET中的SMO(Microsoft.SqlServer.Smo)来编写表格脚本。