untuk cara mudah mendapatkan semua tabel di server, coba ini:
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
itu akan mengembalikan satu kolom yang berisi server+database+schema+nama tabel:sampel keluaran:
CompleteTableName
--------------------------------------------
YourServer.YourDatabase1.YourSchema1.YourTable1
YourServer.YourDatabase1.YourSchema1.YourTable2
YourServer.YourDatabase1.YourSchema2.YourTable1
YourServer.YourDatabase1.YourSchema2.YourTable2
YourServer.YourDatabase2.YourSchema1.YourTable1
jika Anda tidak menggunakan SQL Server 2005 atau lebih tinggi, ganti DECLARE @AllTables table
dengan CREATE TABLE #AllTables
dan kemudian setiap @AllTables
dengan #AllTables
dan itu akan berhasil.
EDIT
ini adalah versi yang memungkinkan parameter pencarian untuk digunakan pada setiap bagian atau bagian dari server+database+schema+nama tabel:
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
setel @Search ke NULL untuk semua tabel, setel ke hal-hal seperti 'dbo.users' atau 'users' atau '.master.dbo' atau bahkan sertakan wildcard seperti '.master.%.u', dll.