問題タブ [hierarchyid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ssis - hierarchyid / SSIS / メモリ変数
hierarchyid を文字列変数に変換し、それを文字列として SSIS メモリ変数に格納できることに気付きました。私が理解できないのは、SSIS内の一括挿入であり、メモリ変数を使用して、列がhierarchyidとして型指定されたテーブルに挿入します...
文字列として保存できますが、それは気分が悪いです...
SQL ウィザードを除いて、SSIS と hierarchyid に関するものは何も見つかりませんが、独自のカスタム パッケージがあるため、ここでは当てはまります。
SQL Server 2014 を使用しています。
よろしく、リチャード
sql - SQL サーバーの階層 ID でツリー パスを平坦化する
アプリケーションの分類構造をモデル化するために、SQL 階層データ型を使用しています。分類法は異なるレベルで同じ名前を持つことができます
セットアップ中に、このデータを Excel シート経由でアップロードする必要があります。
ノードを挿入する前に、エントリが重複しないように、特定のパスにノードが既に存在するかどうかを確認したいと思います。ノード @ 特定の絶対パスが既に存在するかどうかを確認する最も簡単な方法は何ですか?
たとえば、「Bank 2」の下に「Retail」と挿入する前に、「/Bank 2/Retail」が存在しないことを確認できるはずです
絶対パスを確認してから続行できるように、ツリー構造全体の平坦化された表現を提供する方法はありますか?
sql-server - SQL hierarchyid に対する GetAncestor クエリを実行して、常に特定のレベルをプルする
レポートに特定のレベルの階層を含めるように求められることがよくあります。階層 ID を使用してクエリのパフォーマンスを高速化する方法を探しています。私はいくつかのテストを行い、機能するクエリを持っていますが、パフォーマンスは向上する可能性があると思います. 以下は、特定のエントリのレベル 2 から 4 をプルするサンプルです。GetAncestor() 関数を hierarchyid のレベルと組み合わせてこれを行う方法を見つけました。最初のクエリは高速に見えますが、GetAncestor クエリが負の値で爆発するのを避けるために、特定のレベルの行のみを返すようにハード コードされています。2 番目のサンプルはその問題を解決しますが、はるかに遅くなります。理想的には 2 番目のオプションを使用したいと思いますが、十分に高速ではありません。
sql-server - hierarchyid でブランチをコピーするには?
フィールドを持つ単純なテーブルがあります:
ブランチを別の親にコピーするストアド プロシージャを作成する必要があります。
たとえば、次のようなものです。
1 つのブランチをある親から別の親に移動する手順を実行しました。
しかし今、同じ階層と item_name でコピーを作成する必要があります。
common-table-expression - HierarchyID を持つ CTE が突然解析エラーを引き起こす
という名前のデータベースにこの自己参照テーブルがNodes
あり、組織のツリー構造を格納するために使用されます。
そこから、HIERARCHYID を使用して、アクセス レベルなどに基づいてクエリを管理しています。私はこのためのテーブル値関数を作成しましtvf_OrgNodes
た。かなり前に、SQL Server 2008 から 2014 年までテストおよび作業を行いましたが、それ以来変更されていません。ただし、パス nvarchars ("/2/10/8/") から HIERARCHYID を解析すると、次のエラーが発生し、Google で 4 つのヒット (!) しか一致しないため、何かが変更されました。
実際の HIERARCHYID の代わりに NVARCHAR のみを返すように関数を変更すると/
、ルートから始まり、その後に続くパスなど、すべてのパスが正常に見えます/2/
。単に選択するだけHIERARCHYID::Parse('path')
でも正常に動作します。INSERT が関数の結果になるまでパスを文字列のままにして、そこでパスを解析することで、実際に関数を機能させました。しかし、残念ながら、結果のデータを同じスキーマのテーブルに挿入しようとすると、同じエラーが発生します。
質問は、これはバグですか、それとも、HIERARCHYID<->パス文字列を操作する際にこれを引き起こす可能性のある (新しい?) 落とし穴を知っている人はいますか? バイナリ文字列全体のアイデアがどこから来たのかわかりません。
これは TVF のコードです。
最近、lolz 用に .NET 4.53 aka 4.6 をインストールした可能性があります。ただし、reg を除いてどこにもその証拠は見つかりません: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\v4.0.30319\SKUs.NETFramework,Version=v4.5.3
sql-server - hierarchyid を使用しようとするとエラー 24000 が発生する
アプリケーションで生成しようとすると問題が発生hierarchyid
します。具体的には、ノードごとに 16 を超える子を持つことはできないようです。ストアド プロシージャに使用しようとしているコードは次のとおりです (これは、hid フィールドと content フィールドだけを持つテスト テーブル用です。
エラーが発生する方法は次のとおりです。
- 走る
INSERT INTO testing (hid , content) VALUES (hierarchyid::GetRoot () , 'a') ;
EXEC testAdd '/' , 'a';
16回実行します。
私が得るエラーは次のようになります:
さらに、この回答から 2 番目のコード スニペットを実行しようとしましたが、すぐに壊れました。
何がうまくいかないのですか?
更新: VS 2015 と SQL Server 2014 の CLR データ型を既にアンインストールし、それらを古いバージョンに置き換えましたが、役に立ちませんでした。