在调查Stackoverflow上的一个问题时,我发现sp_columns
,它使用sys.spt_columns_odbc_view
的是返回错误/意外 DATA_TYPE
的& TYPE_NAME
for NVARCHAR(MAX)
。它返回NTEXT
专栏NVARCHAR
,我不明白为什么。有没有人有任何见识?
CREATE TABLE [dbo].[deleteTable](
[v] [nvarchar](max) NULL,
[t] [ntext] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
select
c.name
,c.system_type_id
,ty.name
,ty.precision
,t.name
from
sys.columns c
inner join
sys.tables t on t.object_id = c.object_id
inner join
sys.types ty on ty.system_type_id = c.system_type_id
where
t.name = 'deleteTable'
exec sp_columns @table_name = 'deleteTable'
我想通了为什么你得到
NTEXT
但不知道为什么这样做。此注释可能是相关的:在定义中
sys.spt_columns_odbc_view
有一段代码:在您的情况下
ELSE d.type_name COLLATE database_default
,这是因为数据类型为 -10 而执行的。sys.spt_datatype_info
使用sp_datatype_info。如果你执行下面的代码,你会看到
NTEXT
来自哪里。