2016-05-13 4 views
2

я знаю о получении имена баз данных, выполнив следующие действия:SQL Server - получить все базы данных и файлы

select * 
from master..sysdatabases 
order by Name 

То, что я хочу быть в состоянии сделать, это вернуть все файлы, относящиеся к каждой базе данных на сервере , Чтобы получить список файлов в базе данных я должен сделать что-то похожее на следующее:

use [database] 

select * 
from sysfiles 

К сожалению, мне нужно использовать префикс, как sysfiles тянет только из базы данных я использую.

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

Скажем, у меня есть 3 базы данных:

DB1 
DB2 
DB3 

Я хочу вид, который будет отображаться

Database Name FileName 
-------------------------------- 
DB1    c:\mnt\db1.mdf 
DB1    c:\mnt\db1.ldf 
DB2    c:\mnt\db2.mdf 
DB2    c:\mnt\db2.ldf 
DB3    d:\mnt\db3.mdf 
DB3    d:\mnt\db3.ldf 

ответ

3

Вы можете запросить его с помощью sys.databases и sys.master_files просмотров:

SELECT 
    db.name, 
    FileName = mf.name, 
    PhysicalFileName = mf.physical_name, 
    Type = mf.type_desc 
FROM sys.databases db 
INNER JOIN sys.master_files mf 
    ON mf.database_id = db.database_id 
WHERE db.name NOT IN('msdb', 'master', 'tempdb', 'model') 
ORDER BY db.name 
+1

Этот это превосходно! Вопрос, какой уровень безопасности требуется? Если я запустил в своей песочнице, где у меня есть полный доступ к SA, я получаю все, но в нашей среде разработчиков, которая больше заблокирована, я ничего не получаю, поэтому я предполагаю, что это проблема с разрешениями, связанная с используемой учетной записью. – whoisearth

+1

подтвердил, что проблема связана с таблицей sys.master_files. У меня есть доступ к sys.databases. – whoisearth

+1

Это «научит человека ловить рыбу» здесь, здесь. Документация для файлов sys.master (https://msdn.microsoft.com/en-us/library/ms186782.aspx) гласит: «Минимальные разрешения, необходимые для просмотра соответствующей строки, - CREATE DATABASE, ALTER ANY DATABASE или ПРОСМОТРЕТЬ ЛЮБОЕ ОПРЕДЕЛЕНИЕ. " –