【问题标题】:Create subdirectory in Sql Server FileTable在 Sql Server FileTable 中创建子目录
【发布时间】:2017-07-04 15:22:54
【问题描述】:

我有一个在 FileTable 中创建子目录的简单脚本:

INSERT INTO MyFiles (name, is_directory)    
VALUES ('SomeFolder', 1, 0)

它工作正常,如果我运行它,SqlServer 会创建子目录“SomeFolder”。 但是,如果我尝试创建嵌套子文件夹,我会遇到错误:

INSERT INTO MyFiles (name, is_directory)    
VALUES ('FirstLevel\SecondLevel', 1)

错误信息是:An invalid filename, 'FirstLevel\SecondLevel', caused a FileTable check constraint error. Use a valid Windows filename

据我所知,我必须为父文件夹添加 parent_path_locator 列,例如:

INSERT INTO MyFiles (name, is_directory, parent_path_locator)   
VALUES ('SecondLevel', 1, pathLocatorForFirstLevel)

但我还没有 pathLocatorForFirstLevel 因为 FirstLevel 尚未创建。也许有人知道如何创建具有任意名称的子文件夹?

【问题讨论】:

  • *nix os 使用 '/' 作为文件夹名称分隔符。 Windows 使用“\”。不过,不知道您正在尝试的方法是否有效。
  • @simonatrcl 我尝试使用这两种变体。不幸的是,它不起作用
  • 您需要使用 FileTableRootPath() 和 GetPathLocator() 来生成正确的路径吗?参见示例:dba.stackexchange.com/questions/73854/…

标签: sql sql-server filetable


【解决方案1】:

使用一些C#代码,如果文件夹不存在,可以快速验证并创建。

using System.IO;            
DirectoryInfo di = Directory.CreateDirectory(FileServerPath + @"\" + 'FirstLevel\SecondLevel');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多