Sql Server的话,需要登录master库,然后查sysdatabasesselect * from sysdatabasesOracle的话,查select * from sys.all_users t
感觉都不怎么好用。我自己找到方法了,顺便和你们分享下 create proc sp_databases as set nocount on declare @name sysname declare @SQL nvarchar(600) create table #databases ( DATABASE_NAME sysname NOT NULL, size int NOT NULL) declare c1 cursor for select name from master.dbo.sysdatabases where has_dbaccess(name) = 1 -- Only look at databases to which we have access open c1 fetch c1 into @name while @@fetch_status >= 0 begin select @SQL = 'insert into #databases select N'''+ @name + ''', sum(size) from ' + QuoteName(@name) + '.dbo.sysfiles' execute (@SQL) fetch c1 into @name end deallocate c1 select DATABASE_NAME, DATABASE_SIZE = size*8, REMARKS = convert(varchar(254),null) from #databases order by 1GO
create proc sp_databases
as
set nocount on
declare @name sysname
declare @SQL nvarchar(600) create table #databases (
DATABASE_NAME sysname NOT NULL,
size int NOT NULL) declare c1 cursor for
select name from master.dbo.sysdatabases
where has_dbaccess(name) = 1 -- Only look at databases to which we have access open c1
fetch c1 into @name while @@fetch_status >= 0
begin
select @SQL = 'insert into #databases
select N'''+ @name + ''', sum(size) from '
+ QuoteName(@name) + '.dbo.sysfiles'
execute (@SQL)
fetch c1 into @name
end
deallocate c1 select
DATABASE_NAME,
DATABASE_SIZE = size*8,
REMARKS = convert(varchar(254),null)
from #databases
order by 1GO