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

后端 未结 16 1234
轮回少年
轮回少年 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条回答
  •  旧时难觅i
    2020-11-28 07:47

    please fill the @likeTablename param for search table.

    now this parameter set to %tbltrans% for search all table contain tbltrans in name.

    set @likeTablename to '%' to show all table.

    declare @AllTableNames nvarchar(max);
    
    select  @AllTableNames=STUFF((select ' SELECT  TABLE_CATALOG collate DATABASE_DEFAULT+''.''+TABLE_SCHEMA collate DATABASE_DEFAULT+''.''+TABLE_NAME collate DATABASE_DEFAULT as tablename FROM '+name+'.INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = ''BASE TABLE'' union '
     FROM master.sys.databases 
    FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)') 
    ,1,1,'');
    
    set @AllTableNames=left(@AllTableNames,len(@AllTableNames)-6)
    
    declare @likeTablename nvarchar(200)='%tbltrans%';
    set @AllTableNames=N'select tablename from('+@AllTableNames+N')at where tablename like '''+N'%'+@likeTablename+N'%'+N''''
    exec sp_executesql  @AllTableNames
    

提交回复
热议问题