sql file stream PathName dosent показать в окне fileExplorer

У меня есть файл Stream Sample database, я добавил записи в таблицу. Когда я использую file.PathName(), мой пример проекта в классе C# SqlFileStream распознает этот адрес и получает мой файл, но не отображается в проводнике Windows? Что это за адрес? Это поддельный адрес? Этот класс может смотреть на путь FileGroup для поиска реального адреса? Если нет, как этот класс найти путь?

\ ComputerName \ SQL2016 \ v02-A60EC2F8-2B24-11DF-9CC3-AF2E56D89593 \ FileStreamTestDB \ ДБО \BLOB_Table\FILEDATA \00953530-2F65-4AC9-81E9-0281EFB89592\VolumeHint-HarddiskVolume3

2 ответа

Решение

Данные в FILESTREAM столбцы хранятся внутри базы данных. Вы можете просмотреть внутренние файлы, хранящиеся в базе данных, просмотрев локальную файловую систему FILESTREAM каталог файловой группы, но этот путь не предоставляется для удаленного доступа и не должен использоваться вообще. Вам нужно будет использовать SqlFileStream чтобы получить ручку для доступа к FILESTREAM данные через Win32 API.

Если вы хотите получить доступ к файлам, хранящимся в базе данных через Windows Explorer или любое другое приложение, рассмотрите возможность использования Filetable вместо. FileTable рычаги FILESTEAM внутренне, но предоставляет файлы, хранящиеся в таблице, через UNC-путь для нетранзакционного доступа. Это позволяет добавлять / изменять / удалять файлы с помощью общих файловых ресурсов или с помощью операторов T-SQL INSERT/UPDATE/DELETE. В обоих случаях изменения хранятся в базе данных FileTable и отражено в FileTable общий каталог тоже.

ИспользоватьSystem.Data.SqlTypes.SqlFileStream

Нужно получитьGET_FILESTREAM_TRANSACTION_CONTEXT()для доступа к файлу

https://learn.microsoft.com/en-us/sql/relational-databases/blob/access-filestream-data-with-opensqlfilestream?view=sql-server-ver16

Другие вопросы по тегам