Функция PhysicalPathName в FILESTREAM (SQL Server 2008)
От: Светлояр Беларусь  
Дата: 25.12.08 01:29
Оценка: 5 (2)
Если кто столкнётся. В SQL Server 2008 появился новый атрибут FILESTREAM для типа данных VARBINARY (подробнее здесь или здесь). В примерах часто приводят использование функции PathName() в запросах для определения пути к объекту:

SELECT [FileData].PathName() FROM SomeTable


В результате чего получают:

------------------------------------------------------------------------------------------------
\\XXX\MSSQLSERVER\v1\FileStreamTest\dbo\SomeTable\FileData\27FADEFC-FA16-4897-8C64-008F0FB6EA9D
...


Можно также получить и физический путь, чтобы потом не извращаться со всякими SqlFileStream (см. OpenSqlFilestream API):

SELECT [FileData].PhysicalPathName() FROM SomeTable


НО!, по умолчанию, получим ошибку

Msg 5595, Level 16, State 1...
.PhysicalPathName is disabled.


Чтобы его задействовать необходимо воспользоваться DBCC TRACEON

DBCC TRACEON (5556, -1)
GO


После чего можем смело использовать PhysicalPathName():

SELECT FileData.PhysicalPathName() FROM SomeTable
GO


Результат:

------------------------------------------------------------------------------------------------
F:\MS SQL Databases\FileStreamGroup1Folder\Pictures\...адовые GUID'ы...\00000019-0000007d-011a
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.