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