Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak wyświetlić listę wszystkich tabel we wszystkich bazach danych w programie SQL Server w jednym zestawie wyników?

aby w prosty sposób uzyskać wszystkie tabele na serwerze, wypróbuj to:

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

zwróci pojedynczą kolumnę zawierającą serwer+bazę danych+schemat+nazwa tabeli:przykładowe dane wyjściowe:

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

jeśli nie korzystasz z SQL Server 2005 lub nowszego, zastąp tabelę DECLARE @AllTables table z CREATE TABLE #AllTables a potem co @AllTables z #AllTables i zadziała.

EDYTUJ
Oto wersja, która pozwoli na użycie parametru wyszukiwania w dowolnej części lub częściach nazwy serwera+bazy danych+schematu+tabeli:

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

ustaw @Search na NULL dla wszystkich tabel, ustaw go na rzeczy takie jak „dbo.users”, „users” lub „.master.dbo”, a nawet dołącz symbole wieloznaczne, takie jak „.master.%.u” itp.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zrozumienie zawsze włączonej grupy dostępności między wystąpieniami SQL Server opartymi na systemie Linux. Część 1

  2. Kiedy zasada DRY nie ma zastosowania:operacje BITWISE w SQL Server

  3. ExecuteNonQuery:Właściwość połączenia nie została zainicjowana.

  4. Pivot przy użyciu SQL Server 2000

  5. Jak skonfigurować pocztę bazy danych w programie SQL Server (SSMS)