アプリケーションで生成しようとすると問題が発生hierarchyid
します。具体的には、ノードごとに 16 を超える子を持つことはできないようです。ストアド プロシージャに使用しようとしているコードは次のとおりです (これは、hid フィールドと content フィールドだけを持つテスト テーブル用です。
create PROC testAdd (@parentid hierarchyid, @content varchar(10))
AS
BEGIN
DECLARE
@parentNode hierarchyid ,
@lc hierarchyid;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN TRANSACTION;
SELECT @lc = MAX (hid)
FROM testing
WHERE hid.GetAncestor (1) = @parentid;
INSERT INTO testing (hid, content)
VALUES ( @parentid.GetDescendant(@lc, NULL),
@content) ;
COMMIT;
END;
エラーが発生する方法は次のとおりです。
- 走る
INSERT INTO testing (hid , content) VALUES (hierarchyid::GetRoot () , 'a') ;
EXEC testAdd '/' , 'a';
16回実行します。
私が得るエラーは次のようになります:
さらに、この回答から 2 番目のコード スニペットを実行しようとしましたが、すぐに壊れました。
何がうまくいかないのですか?
更新: VS 2015 と SQL Server 2014 の CLR データ型を既にアンインストールし、それらを古いバージョンに置き換えましたが、役に立ちませんでした。