Ao investigar uma pergunta no Stackoverflow , descobri que sp_columns
, que usa sys.spt_columns_odbc_view
, está retornando o errado/inesperado DATA_TYPE
& TYPE_NAME
para NVARCHAR(MAX)
. Está retornando NTEXT
para NVARCHAR
colunas e não consigo descobrir o porquê. Alguém tem alguma idéia?
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'
Eu descobri por que você começa
NTEXT
, mas não sei por que isso é feito. Esta nota pode ser relevante:Na definição de
sys.spt_columns_odbc_view
há um pedaço de código:No seu caso,
ELSE d.type_name COLLATE database_default
isso está sendo executado porque o tipo de dados é -10.sys.spt_datatype_info
usa sp_datatype_info .Se você executar o código abaixo, verá de onde
NTEXT
está vindo.