sql >> Databáze >  >> RDS >> Sqlserver

Jak zobrazím seznam všech tabulek ve všech databázích na serveru SQL Server v jedné sadě výsledků?

pro jednoduchý způsob, jak dostat všechny tabulky na server, zkuste toto:

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

vrátí jeden sloupec, který obsahuje server+databáze+schéma+název tabulky:ukázkový výstup:

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

pokud nepoužíváte SQL Server 2005 nebo vyšší, nahraďte DECLARE @AllTables table pomocí CREATE TABLE #AllTables a poté každý @AllTables s #AllTables a bude to fungovat.

UPRAVIT
zde je verze, která umožní použití vyhledávacího parametru pro jakoukoli část nebo části názvů server+databáze+schéma+tabulky:

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

nastavte @Search na NULL pro všechny tabulky, nastavte jej na věci jako 'dbo.users' nebo 'users' nebo '.master.dbo' nebo dokonce zahrňte zástupné znaky jako '.master.%.u' atd.



  1. Jak načíst data z kurzoru v Oracle pomocí For Loop

  2. Nahraďte duplicitní mezery jednou mezerou v T-SQL

  3. Vlastní sestavené statistiky

  4. Jak používat příkaz CASE v MySQL