Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да изброя всички таблици във всички бази данни в SQL Server в един набор от резултати?

за прост начин да получите всички таблици на сървъра, опитайте това:

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

той ще върне една колона, която съдържа сървър+база данни+схема+име на таблица:изходен пример:

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

ако не сте на SQL Server 2005 или по-нова версия, заменете DECLARE @AllTables table с CREATE TABLE #AllTables и след това всеки @AllTables с #AllTables и ще работи.

РЕДАКТИРАНЕ
ето версия, която ще позволи да се използва параметър за търсене във всяка част или части от имената на сървъра+база данни+схема+таблица:

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

задайте @Search на NULL за всички таблици, задайте го на неща като 'dbo.users' или 'users' или '.master.dbo' или дори включете заместващи знаци като '.master.%.u' и т.н.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на условен оператор UPDATE в SQL

  2. Пример за вмъкване на SQL Server

  3. ВЪВЕТЕ СТОЙНОСТИ, КЪДЕТО НЕ СЪЩЕСТВУВА

  4. SQL Server v.Next :производителност STRING_AGG().

  5. STRING_SPLIT() в SQL Server 2016:Продължение №1