首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL 常用查詢語句集錦:取得資料庫清單與中繼資料

     編輯:關於SqlServer

取得所有資料庫名稱 (含系統資料庫)

-- 方法 1:系統目錄檢視 (SQL 2000 相容)
SELECT name FROM master.dbo.sysdatabases;

-- 方法 2:系統函數 (SQL 2005+)
SELECT name FROM sys.databases;

取得所有使用者資料庫名稱 (排除系統資料庫)

-- SQL 2000:系統資料庫 dbid <= 6 (master, tempdb, model, msdb, Northwind, pubs)
SELECT [name] FROM master.dbo.sysdatabases WHERE dbid > 6 ORDER BY [name];

-- SQL 2005+:排除系統資料庫
SELECT name FROM sys.databases WHERE database_id > 4 ORDER BY name;

取得資料庫完整資訊 (含檔案路徑、大小、建立日期等)

-- SQL 2000
SELECT * FROM master.dbo.sysdatabases WHERE dbid > 6 ORDER BY [name];

-- SQL 2005+:更豐富的中繼資料
SELECT 
    d.name AS DatabaseName,
    d.database_id,
    d.create_date,
    d.compatibility_level,
    d.collation_name,
    d.state_desc,
    mf.name AS LogicalName,
    mf.physical_name AS FilePath,
    mf.size * 8 / 1024.0 AS SizeMB,
    mf.type_desc AS FileType
FROM sys.databases d
JOIN sys.master_files mf ON d.database_id = mf.database_id
WHERE d.database_id > 4
ORDER BY d.name, mf.type_desc;

進階:動態切換資料庫內容執行查詢

DECLARE @sql NVARCHAR(MAX) = '';
SELECT @sql += 'USE [' + name + ']; SELECT DB_NAME() AS CurrentDB, COUNT(*) AS TableCount FROM sysobjects WHERE xtype=''U''; '
FROM master.dbo.sysdatabases WHERE dbid > 6;
EXEC sp_executesql @sql;

注意事項

  • sysdatabases 為相容性檢視,新專案建議使用 sys.databases。
  • 系統資料庫 ID 可能因安裝元件不同而異動,建議以名稱排除:WHERE name NOT IN ('master','tempdb','model','msdb')。
  • 查詢檔案路徑需足夠權限 (VIEW SERVER STATE 或 sysadmin)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved