sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan lister jeg alle tabeller i alle databaser i SQL Server i et enkelt resultatsæt?

For en enkel måde at få alle tabeller på serveren, prøv dette:

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 vil returnere en enkelt kolonne, der indeholder server+database+skema+tabelnavn:eksempeloutput:

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

hvis du ikke er på SQL Server 2005 eller nyere, skal du erstatte DECLARE @AllTables table med CREATE TABLE #AllTables og derefter hver @AllTables med #AllTables og det vil virke.

REDIGER
her er en version, der gør det muligt at bruge en søgeparameter på enhver del eller dele af server+database+skema+tabelnavne:

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

sæt @Search til NULL for alle tabeller, indstil det til ting som 'dbo.users' eller 'users' eller '.master.dbo' eller inkluder endda jokertegn som '.master.%u' osv.



  1. Hurtig nem måde at migrere SQLite3 til MySQL?

  2. Top 50 SQL Server-interviewspørgsmål, du skal forberede i 2022

  3. Kopier en tabel fra en database til en anden i Postgres

  4. Hvordan kan jeg sætte en database under git (versionskontrol)?