2
を取得:SQL Serverの - 私は次のようにしてデータベース名を取得する方法について知っているすべてのデータベースとファイル
select *
from master..sysdatabases
order by Name
私が行うことができるようにしたいどのようなサーバー上の各データベースに関連するすべてのファイルを返すことです。 sysfiles
は唯一私が使用しているデータベースから引っ張るよう
use [database]
select *
from sysfiles
は、残念ながら、私が使用プレフィックスを必要とする:データベースごとのファイルのリストを取得するには、私は、次のような何かをしなければなりません。
理想的には、これを呼び出すことができ、odbcデータベース監視項目を介してzabbixにフックできるビューにすることができます。
のは、私は3データベースを持っているとしましょう:
DB1
DB2
DB3
私はあなたがsys.databases
とsys.master_files
ビュー使用して照会することができ
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、またはVIEW ANY DEFINITION」を参照してください。 –