Sql-Server

如何通過其文字路徑獲取子文件夾的 SQL Server 文件表路徑定位器

  • August 15, 2014

我有一個文件表,其中有幾個子表。

例如

FileTable
->subtable1
->->subtable1.1
->->subtable1.2
->subtable2
->subtable3

等等

如何獲取 SQL Serverpath_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';

引用自:https://dba.stackexchange.com/questions/73854