Создание файлов в FileTable по UNC-пути к каталогу используя C# (CLR SQL) - C#

377
28 августа 2017, 05:39

Привет! Есть тестовая процедурка, написанная на C# CLR SQL, которая потом работает как обычная хранимка. Процедура пытается создать файл в сетевой папке привязанной к таблице filetable в базе по соответствующему пути, но файл не создается, выдается ошибка "Такой запрос не поддерживается". FileTable вроде создавалась по всем правилам с доступами. Если создать файл по схожему пути в любой другой сетевой папке, не относящейся к filetable, то всё легко создается, если писать приложение, скажем WinForms или консольное, то в нужной папке тоже всё прекрасно создается, не создается именно в таком варианте хранимой процедуры. Не могу понять почему, в интернете конкретно такого случая найти не могу, но в документации сказано, что можно использовать средства ввода-вывода и создавать файлы прямо в папке по сетевому пути. Какие идеи по этому поводу, может кто сталкивался, уже замучил этот вопрос...

[Microsoft.SqlServer.Server.SqlProcedure]
public static void TestProcedure ()
{ 
    File.Create(@"\\PC-NAME\mssqlserver\FStreamData\FileTableName\1.bin");
}

Пробовались также варианты:

Stream stream = new FileStream(@"\\PC-
NAME\mssqlserver\FStreamData\FileTableName\1.bin", FileMode.Create, 
FileAccess.ReadWrite);
stream = new FileStream(@"\\PC-
NAME\mssqlserver\FStreamData\FileTableName\1.bin", FileMode.Open);
File.Open(@"\\PC-NAME\mssqlserver\FStreamData\FileTableName\1.bin", 
FileMode.Open); 
  • при попытках чтения существующих файлов выдается та же ошибка: Такой запрос не поддерживается. В чем может быть проблема?

Скрипт импортирования сборки: create assembly TPr from 'C:\Project1\Project1SQL\Procedures\CLR\bin\Debug\ClassLibra‌​ry.dll' with permission_set=unsafe

Нетранзакционный доступ включен.

Замечания: при использовании SQLFilestream с функцией GET_FILESTREAM_TRANSACTION_CONTEXT() ошибка та же самая. Приложение Блокнот не может открывать файлы содержащиеся в этой сетевой папке filetable, ЕСЛИ они содержат данные. Ошибка такая же: "Такой запрос не поддерживается", но это связано с тем, что filetable не поддерживает файлы отображенные на память, а Блокнот работает с такими. Честно, не знаю, относится ли это как-то к проблеме создания средствами IO из среды CLR.

Версия MS SQLServer2014

Файл должен создаваться в процессе выполнения процедуры, если записывать данные прямо в таблицу filetable, их размер будет ограничен, а использование костылей не приветствуется.

READ ALSO
Десериализация JSON в C#

Десериализация JSON в C#

Есть класс в котором одно из свойств это объект из библиотеки dllСуть в том, что при вызове метода JsonConvert

434
Копирование картинки из тега img

Копирование картинки из тега img

Здравствуйте, есть капча при обновлении страницы появляеться новая

219
Как обойти скрытые папки при переборе файлов?

Как обойти скрытые папки при переборе файлов?

При переборе файлов в папках есть одна проблема, это скрытые файлы (переберает по ним тоже), как можно обойти скрытые папки?

283
Работа с нужной строкой

Работа с нужной строкой

Есть файл с разной информацией, например:

187