У меня есть определенный пользователем тип данных в SQL Server 10 (2008):
CREATE TYPE [dbo].[sweyi047_corrid] FROM [binary](24) NULL
Когда этот тип выбран из таблицы, я не могу получить данные из .NET, потому что я получаю SqlException
на ExecuteReader
, утверждая, что тип sweyi047_corrid
неизвестен для параметра №.'1'.Тривиальный пример:
var stmt = Connection.CreateCommand();
stmt.CommandText = @"CREATE TABLE #test ( col sweyi047_corrid );
INSERT INTO #test VALUES(0x1020);
SELECT col from #test";
var rdr = stmt.ExecuteReader(); // crash!
rdr.Read();
var ret = rdr.GetValue(0);
Если я выберу только скаляр, все будет работать так же, как и ожидалось для того же типа:
stmt.CommandText = @"DECLARE @var sweyi047_corrid;
SET @var = 0x1020;
SELECT @var;";
В этом случае я получаю объект типа byte[24]
какожидается.
Как правильно читать таблицы, содержащие столбцы UDT?