我在 SQL Server 2014 中有一个用户定义的表类型,我需要删除并重新创建它。但是,如果我使用 SSMS 中的脚本,则不会创建某些列上的默认值约束。
我也有查看默认约束的问题,所以我不知道默认值应该是什么。
有没有办法查看这些默认值约束包含的内容?
CREATE TYPE [Logging].[LogElements] AS TABLE(
[LogMessage] [nvarchar](MAX) NOT NULL,
[MessageTypeId] [smallint] NOT NULL,
[Origin] [varchar](50) NOT NULL,
[JobRunId] [int] NULL,
[InvoiceId] [int] NULL,
[AccountlineId] [int] NULL,
[MSErrorCode] [bigint] NOT NULL,
[LogStatusId] [int] NOT NULL,
[LogUser] [varchar](50) NULL
) 去
以上是在 SSMS 中生成脚本时创建的定义。如您所见,默认值不在脚本中。
查找用户定义的表类型:
在我的输出中,该对象被调用
TT_LogElements_3A4CA8FD
并具有object_id
.978102525
现在我们可以使用类似于 Ryan Cooper 的答案的脚本,将其
object_id
插入WHERE
子句中,如下所示parent_object_id
:这是我的示例输出,将其转换为 T-SQL 脚本以重新创建它们相当简单。
您可以使用以下查询查看默认值及其定义:
编辑以查找用户定义的类型: