在 SQL Server 中使用类似于 INFORMATION_SCHEMA.VIEW_DEFINITION 的内容创建表

发布于 2024-08-09 03:46:32 字数 129 浏览 8 评论 0原文

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

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

Is there a standard method to retrieve the 'CREATE TABLE..' definition of a table in SQL Server?

I can ask INFORMATION_SCHEMA for definitions of views and functions/procedures, so I thought it would be natural to get the same for tables, but I didn't find anything.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

静谧 2024-08-16 03:46:32

是的 - 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'

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

Yes - INFORMATION_SCHEMA.TABLES should be what you're looking for.

It will give you something like:

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

If you want to know about the columns of a table, look at INFORMATION_SCHEMA.COLUMNS.

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

will give you all the details for the columns for the table specified.

梦行七里 2024-08-16 03:46:32

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

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

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

Using INFORMATION_SCHEMA for views and code will fail. The data is limited to nvarchar(4000), so longer stuff will not be read. Use sys.sql_modules or OBJECT_DEFINITION.

For tables, it's more difficult. A "table" consists of columns, constraints, indexes, possibly rules, UDTs (did I forget anything?). This is why SSMS has so many table scripting options compared to a view or stored proc.

I'd suggest profiling SSMS and hope it doesn't use SMO... or use SMO via CLR code or even xp_cmdshell.

四叶草在未来唯美盛开 2024-08-16 03:46:32

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

You can use SMO (Microsoft.SqlServer.Smo) from .NET to script the table.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文