SQL Server FileStreamSize - PullRequest
       1

SQL Server FileStreamSize

0 голосов
/ 09 января 2019

Код не возвращает FileStreamSize

with fs as
(
    select database_id, type, size * 8.0 / 1024 size
    from sys.master_files
)
select 
    Cast(db.database_id As int ) DbId,
    name,
    (select sum(size) from fs where type = 0 and fs.database_id = db.database_id) DataFileSizeMB,
    (select sum(size) from fs where type = 1 and fs.database_id = db.database_id) LogFileSizeMB,
    (select sum(size) from fs where type = 2 and fs.database_id = db.database_id) FileStreamSizeMB
from sys.databases db    
order by DbId

DataFileSizeMB и LogFileSizeMB возвращают правильный размер в МБ, но FileStreamSizeMB возвращает 0, когда я проверил базы данных, фактический FileStreamSize не равен 0.

Спасибо за помощь. :)

1 Ответ

0 голосов
/ 09 января 2019

В документации sys.master_files dmv четко указано для столбца size:

Примечание. Это поле заполняется нулями для контейнеров FILESTREAM. Запросите представление каталога sys.database_files о фактическом размере контейнеров FILESTREAM.

Так что в этом случае вам нужно запросить sys.database_files , но вы можете сделать это только в контексте его базы данных (или полностью указав имя как database_name.sys.database_files).

Данные FILESTREAM находятся не в контейнере файловой группы, а в файловой системе. Вы можете пересмотреть причины своего запроса и решить, действительно ли вам нужно знать «размер» этого контейнера. Если вам это действительно нужно, вы можете создать какое-то решение, используя sp_foreachdb и запросить в каждой базе данных размер контейнеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...