Физическое расположение данных FILESTREAM - PullRequest
2 голосов
/ 02 февраля 2010

Как я могу узнать физическое местоположение (чтобы я мог видеть его в Windows Explorer) путь к FILESTREAM данным, которые я только что вставил в БД?

Ответы [ 5 ]

8 голосов
/ 23 марта 2016

Для этого есть одна опция: метод PhysicalPathName (). Если вы используете SQL Server 2012 или более позднюю версию, этот код будет работать для вас:

SELECT stream.PhysicalPathName() AS 'Path' FROM Media
OPTION (QUERYTRACEON 5556)

Для SQL Server 2008/2008 R2 вам необходимо включить флаг трассировки 5556 для всего экземпляра:

DBCC TRACEON (5556, -1)
GO

или для конкретного соединения, в котором вы вызываете метод PhysicalPathName ():

DBCC TRACEON (5556, -1)
GO
7 голосов
/ 08 июля 2014

Я знаю, что это старая запись, но, поскольку она все еще занимает высокие позиции в поисковом рейтинге Google, я решил опубликовать ответ Конечно, в более поздних версиях SQL (я не пробовал это в 2008 году) вы можете выполнить следующий запрос:

SELECT      t.name AS 'table',
            c.name AS 'column', 
            fg.name AS 'filegroup_name', 
            dbf.type_desc AS 'type_description',
            dbf.physical_name AS 'physical_location'
FROM        sys.filegroups fg
INNER JOIN  sys.database_files dbf
ON          fg.data_space_id = dbf.data_space_id
INNER JOIN  sys.tables t
ON          fg.data_space_id = t.filestream_data_space_id
INNER JOIN  sys.columns c
ON          t.object_id = c.object_id
AND         c.is_filestream = 1

Источник

3 голосов
/ 28 апреля 2010

Как упоминал Павел, не очень хорошая идея обращаться к файлам FILESTREAM с помощью проводника Windows. Если вы по-прежнему полны решимости пойти дальше и изучить это, следующий совет может помочь.

Имена файлов FILESTREAM на самом деле представляют собой порядковый номер журнала из журнала транзакций базы данных на момент создания файлов. Пол Рэндал объяснил это в этом посте . Так что один из вариантов - узнать порядковый номер журнала и найти файл с именем, названным по имени, в контейнере данных потока файлов.

0 голосов
/ 01 июня 2016

- путь к файлу файлового потока

SELECT col.PathName() AS path FROM tbl
0 голосов
/ 09 февраля 2010

Прежде всего вам необходимо понять, что FileStream хранится на сервере, на котором размещена база данных SQL Server 2008. Если у вас есть администратор базы данных, спросите их, где они создали FileStream. Конечно, вам понадобятся права на сервер для навигации по нему, чтобы увидеть каталоги. Вы также не сможете манипулировать файлами, но вы сможете их увидеть. Большинство администраторов баз данных не будут стремиться сообщить вам, где находится FileStream.

Однако вы можете попасть на путь несколькими другими способами. Один из способов, который приходит на ум, - это выбрать PathName () поля FileStream. Предположим, что в поле FileStream включено поле ReportData, а в таблице, в которой оно находится, - TblReports. Следующий синтаксис t-sql приведет к UNC-адресу:

select top 1 ReportData.PathName(0)
from dbo.datReport

Я полагаю, что вы также можете попасть на этот путь другими способами через руководителя предприятия, но сейчас я забываю, как это сделать.

...