ورود

View Full Version : بدست آوردن لیست تمام جداول موجود در سرور



hdv212
دوشنبه 02 اردیبهشت 1387, 13:17 عصر
با سلام
میخواستم ببینم چطوری میشه لیست تمام جداول موجود در سرور رو بدست آورد، بعدش من میخوام با جدول sys.databases جوین (join) کنم.

MShirzadi
دوشنبه 02 اردیبهشت 1387, 13:29 عصر
منظور شما بدست آوردن جدول مربوط به تمام DB های Server و تمام SysDB های آن هست یا ...

hdv212
دوشنبه 02 اردیبهشت 1387, 13:47 عصر
منظورم به دست آوردن تمام جداول موجود در سرور هست، یعنی تمام جداول موجود در تمام دیتابیس ها

حمیدرضاصادقیان
دوشنبه 02 اردیبهشت 1387, 13:51 عصر
شما میتونی از جدول sysobjects تمامی جداول رو بدست بیاری.

hdv212
دوشنبه 02 اردیبهشت 1387, 14:11 عصر
شما میتونی از جدول sysobjects تمامی جداول رو بدست بیاری.
ممنون، ولی این جدول هم فقط object های درون دیتاببیس جاری رو نشون میده، من کل جداول موجود در Sql server رو میخوام.

Kamyar.Kimiyabeigi
دوشنبه 02 اردیبهشت 1387, 15:31 عصر
اسم تمام database ها رومیتونین از syscursortables بدست بیارین (البته داخل master هست)
و با استفاده از اون و use کردن هر کدام از طریق INFORMATION_SCHEMA.TABLES اطلاعات مورد نظرتون رو بدست بیارین

hdv212
دوشنبه 02 اردیبهشت 1387, 18:17 عصر
دوستان، مشکل لیست کردن جداول کل سرور حل شد با این دستورات :

exec sp_msforeachdb 'use ? select * from information_schema.tables'
و یا این دستور :

exec sp_msforeachdb @command1 = 'SELECT * FROM ?.INFORMATION_SCHEMA.TABLES'
منتها چطور میشه نتایج این qury رو با هم union کرد ؟(چون جداول مربوط به هر دیتابیس رو در یک جدول لیست نمیکنه)

SabaSabouhi
سه شنبه 03 اردیبهشت 1387, 12:04 عصر
دوستان، مشکل لیست کردن جداول کل سرور حل شد با این دستورات :

exec sp_msforeachdb 'use ? select * from information_schema.tables'
و یا این دستور :

exec sp_msforeachdb @command1 = 'SELECT * FROM ?.INFORMATION_SCHEMA.TABLES'
منتها چطور میشه نتایج این qury رو با هم union کرد ؟(چون جداول مربوط به هر دیتابیس رو در یک جدول لیست نمیکنه)

با سلام
از این کد استفاده کنید:



SELECT top 1 * INTO #Temp FROM master.INFORMATION_SCHEMA.TABLES
DELETE FROM #Temp
exec sp_msforeachdb @command1 = 'INSERT INTO #Temp SELECT * FROM ?.INFORMATION_SCHEMA.TABLES'
SELECT * FROM #Temp



صبا صبوحى

hdv212
سه شنبه 03 اردیبهشت 1387, 14:18 عصر
SabaSabouhi جان مرسی
من با این کد مشکلم رو حل کردم :

CREATE TABLE #Stage
(
TABLE_CATALOG SYSNAME,
TABLE_SCHEMA SYSNAME,
TABLE_NAME SYSNAME,
TABLE_TYPE SYSNAME
)

INSERT #Stage
EXEC ('sp_msforeachdb ''SELECT * FROM ?.INFORMATION_SCHEMA.TABLES''')

SELECT *
FROM #Stage where table_type = 'BASE TABLE'

DROP TABLE #Stage