1

アプリケーションで生成しようとすると問題が発生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;

エラーが発生する方法は次のとおりです。

  1. 走るINSERT INTO testing (hid , content) VALUES (hierarchyid::GetRoot () , 'a') ;
  2. EXEC testAdd '/' , 'a';16回実行します。

私が得るエラーは次のようになります: ここに画像の説明を入力

さらに、この回答から 2 番目のコード スニペットを実行しようとしましたが、すぐに壊れました。

何がうまくいかないのですか?

更新: VS 2015 と SQL Server 2014 の CLR データ型を既にアンインストールし、それらを古いバージョンに置き換えましたが、役に立ちませんでした。

4

0 に答える 0