私はいくつかのサブテーブルを持つファイルテーブルを持っています。
例えば
FileTable
->subtable1
->->subtable1.1
->->subtable1.2
->subtable2
->subtable3
等
SQL Serverの入手方法path_locator
は '/subtable1/subtable1.1'のようなものによって与えられたサブテーブルのために?
ルートからサブフォルダにファイルを移動するために必要です。私はこれを試しましたが、うまくいきません
declare @parent hierarchyid;
set @parent = GetPathLocator('folder2/folder2.1')
update physical_files set path_locator = @parent.GetDescendant(NULL, NULL)
where stream_id = '494D5C8B-AC22-E411-A464-00259060BBB9';
SQL Server 2012レポート:
メッセージ33423、レベル16、状態1
FileTableのパス名または形式が無効です。
解決策を見つけました。これは、ファイルテーブル名が「physical_files」、ターゲットパスが「folder1」、ターゲットファイルがstream_id = 'FF9CF452-B522-E411-A464-00259060BBB9'の例です。
declare @path varchar(MAX);
set @path = '\folder';
declare @parent hierarchyid;
set @parent = GetPathLocator(CONCAT(FileTableRootPath('dbo.physical_files'), @path));
select @parent
update physical_files set path_locator = @parent.GetDescendant(NULL, NULL)
where stream_id = 'FF9CF452-B522-E411-A464-00259060BBB9';