2016-05-13 10 views
2

を取得:SQL Serverの - 私は次のようにしてデータベース名を取得する方法について知っているすべてのデータベースとファイル

select * 
from master..sysdatabases 
order by Name 

私が行うことができるようにしたいどのようなサーバー上の各データベースに関連するすべてのファイルを返すことです。 sysfilesは唯一私が使用しているデータベースから引っ張るよう

use [database] 

select * 
from sysfiles 

は、残念ながら、私が使用プレフィックスを必要とする:データベースごとのファイルのリストを取得するには、私は、次のような何かをしなければなりません。

理想的には、これを呼び出すことができ、odbcデータベース監視項目を介してzabbixにフックできるビューにすることができます。

のは、私は3データベースを持っているとしましょう:

DB1 
DB2 
DB3 

私はあなたがsys.databasessys.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 

答えて

3

表示されますビューたい:

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、またはVIEW ANY DEFINITION」を参照してください。 –

関連する問題

 関連する問題