sql >> Databasteknik >  >> RDS >> Sqlserver

Hur listar jag alla tabeller i alla databaser i SQL Server i en enda resultatuppsättning?

För ett enkelt sätt att få alla tabeller på servern, prova detta:

SET NOCOUNT ON
DECLARE @AllTables table (CompleteTableName nvarchar(4000))
INSERT INTO @AllTables (CompleteTableName)
    EXEC sp_msforeachdb 'select @@SERVERNAME+''.''+''?''+''.''+s.name+''.''+t.name from [?].sys.tables t inner join sys.schemas s on t.schema_id=s.schema_id'
SET NOCOUNT OFF
SELECT * FROM @AllTables ORDER BY 1

det kommer att returnera en enda kolumn som innehåller server+databas+schema+tabellnamn:exempelutdata:

CompleteTableName
--------------------------------------------
YourServer.YourDatabase1.YourSchema1.YourTable1
YourServer.YourDatabase1.YourSchema1.YourTable2
YourServer.YourDatabase1.YourSchema2.YourTable1
YourServer.YourDatabase1.YourSchema2.YourTable2
YourServer.YourDatabase2.YourSchema1.YourTable1

om du inte använder SQL Server 2005 eller senare, byt ut DECLARE @AllTables table med CREATE TABLE #AllTables och sedan varje @AllTables med #AllTables och det kommer att fungera.

REDIGERA
här är en version som gör att en sökparameter kan användas på vilken del eller delar av servern+databasen+schema+tabellnamn som helst:

SET NOCOUNT ON
DECLARE @AllTables table (CompleteTableName nvarchar(4000))
DECLARE @Search nvarchar(4000)
       ,@SQL   nvarchar(4000)
SET @Search=null --all rows
SET @SQL='select @@SERVERNAME+''.''+''?''+''.''+s.name+''.''+t.name from [?].sys.tables t inner join sys.schemas s on t.schema_id=s.schema_id WHERE @@SERVERNAME+''.''+''?''+''.''+s.name+''.''+t.name LIKE ''%'+ISNULL(@SEARCH,'')+'%'''

INSERT INTO @AllTables (CompleteTableName)
    EXEC sp_msforeachdb @SQL
SET NOCOUNT OFF
SELECT * FROM @AllTables ORDER BY 1

ställ in @Search till NULL för alla tabeller, ställ in det på saker som 'dbo.users' eller 'users' eller '.master.dbo' eller till och med inkludera jokertecken som '.master.%u', etc.



  1. Hur man installerar MySQL på Debian 7

  2. SQL Server Stored Procedures från Oracle®

  3. Logga ALLA frågor i en SQL Server 2008 Express-databas?

  4. Utforska de olika begränsningarna i SQL Server