به دست آوردن لیست اسامی همه جداول در SQL Server

برای به دست آوردن لیست اسامی همه جداول موجود در سطح یک بانک اطلاعاتی می تونید از این کوئری استفاده کنید:

USE	[master] /*اسم بانک اطلاعاتی*/
GO

SELECT b.[name] AS SchemaName, a.[name] AS TableName
FROM sys.tables a
INNER JOIN sys.schemas b ON a.schema_id = b.schema_id
WHERE [type] = 'U' AND DB_ID() > 4 /*شرط جداول غیر سیستمی*/

حالا برای به دست آوردن لیست اسامی همه جداول موجود در سطح یک Instance می تونید از این کوئری استفاده کنید:

USE	[master]
GO

IF OBJECT_ID('tempdb..#Tables', 'U') IS NOT NULL
DROP TABLE #Tables

CREATE TABLE #Tables (DBName NVARCHAR(64), SchemaName NVARCHAR(256), TableName NVARCHAR(256))

INSERT INTO #Tables
EXEC sp_MSforeachdb 
'
	USE [?]
	DECLARE @dbname NVARCHAR(128)
	SET @dbname = DB_NAME(DB_ID())

	SELECT @dbname AS DBName,b.name AS SchemaName,a.Name AS TableName
	FROM
	sys.tables a
	INNER JOIN sys.schemas b on a.schema_id = b.schema_id
	WHERE [type] = ''U'' AND DB_ID() > 4 /*شرط جداول غیر سیستمی*/
'

SELECT DBName,SchemaName,TableName
FROM #Tables
ORDER BY DBName,SchemaName,TableName