How do I list all tables in all databases in SQL Server in a single result set?

后端 未结 16 1134
轮回少年
轮回少年 2020-11-28 07:36

I am looking for T-SQL code to list all tables in all databases in SQL Server (at least in SS2005 and SS2008; would be nice to also apply to SS2000). The catch, however, is

16条回答
  •  挽巷
    挽巷 (楼主)
    2020-11-28 08:01

    declare @sql nvarchar(max);
    set @sql = N'select cast(''master'' as sysname) as db_name, name collate Latin1_General_CI_AI, object_id, schema_id, cast(1 as int) as database_id  from master.sys.tables ';
    
    select @sql = @sql + N' union all select ' + quotename(name,'''')+ ', name collate Latin1_General_CI_AI, object_id, schema_id, ' + cast(database_id as nvarchar(10)) + N' from ' + quotename(name) + N'.sys.tables'
    from sys.databases where database_id > 1
    and state = 0
    and user_access = 0;
    
    exec sp_executesql @sql;
    

提交回复
热议问题