Невозможно загрузить CLR UDT на сервере Sql, используя CREATE TYPE - PullRequest
1 голос
/ 27 марта 2012

Я создал UDT с помощью C # и скомпилировал его с помощью .NETFW 2.0.Я успешно добавил его в базу данных и вижу его, когда выполняю команду «select * from sys.assemblies»

. Теперь я пытаюсь использовать UDT, определенный в сборке, следующим образом:

CREATE TYPE dbo.SourceLocation
EXTERNAL NAME MyAssembly.[example.com.SourceLocation];

Однако, когда я делаю это, я получаю сообщение об ошибке:

Сообщение 6244, Уровень 16, Состояние 1, Строка 1 Размер (0) для "MyAssembly.example.com.SourceLocation "находится вне допустимого диапазона.Размер должен быть -1 или число от 1 до 8000.

Есть идеи, что я могу делать неправильно?Я вижу тип при запуске ildasm.exe.

Я добавил сборку с помощью командной строки.Я не использую проект базы данных VS для этого.

1 Ответ

2 голосов
/ 27 марта 2012

У вас есть исходный файл?Проверить атрибут MaxByteSize?Если его там нет, то добавьте его или измените значение, например

[Serializable]
[SqlUserDefinedType(Format.UserDefined, 
IsByteOrdered = true, MaxByteSize = 32)]
[CLSCompliant(false)]
public struct Currency : INullable, IComparable, IBinarySerialize
{
...