2012-03-27 6 views
1

C#を使用してUDTを作成し、.NETFW 2.0を使用してコンパイルしました。私は、データベースに正常にこれを追加しました、そして私は「選択sys.assembliesから*」ないとき、私は今、次のようにアセンブリに定義されているUDTを消費しようとしていますCREATE TYPEを使用してSQL ServerにCLR 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データベースプロジェクトを使用していません。

答えて

2

ソースファイルはありますか? MaxByteSize属性を確認しますか? これがない場合は、追加するか、値を変更します。

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

ありがとうございました。それは私のために働いた。あなたのコードに加えて、大きな文字列を格納していたので、MaxByteSizeを-1に変更しなければなりませんでした。 – feroze

関連する問題