PDA

View Full Version : استفاده از sp_msforeachTable در یک دیتابیس



Miladsob
شنبه 15 بهمن 1390, 04:05 صبح
اگه بخوایم یه stored procedure بنویسیم که با گرفتن نام Database , و با استفاده از sp_msforeachTABLE لیست و مشخصاتِ جدولهای اون دیتابیس رو نشون بده! چه دستوراتی باید استفاده کنیم؟

خودم چند نمونه QUERY نوشتم ولی هیچ کدوم کار نمیکنن و نتیجه مطلوب نمی‌دَن!
ممنون می‌شم راهنمایی کنید!

Galawij
شنبه 15 بهمن 1390, 07:35 صبح
سلام،
فکر نمی کنم نام دیتابیس را بگیره، این لینک (http://barnamenevis.org/showthread.php?296751-%D8%AE%D8%A7%D9%84%DB%8C-%DA%A9%D8%B1%D8%AF%D9%86-%D8%AC%D8%AF%D8%A7%D9%88%D9%84-Database) را ببینید بهتون کمک می کنه.
این لینک (http://barnamenevis.org/showthread.php?300852-%D9%84%DB%8C%D8%B3%D8%AA-%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7%DB%8C-%D9%87%D9%85%D9%87-%D8%AC%D8%AF%D9%88%D9%84-%D9%87%D8%A7) هم هست، تازه پیداش کردم.

Miladsob
شنبه 15 بهمن 1390, 19:26 عصر
ممنون بابت لینک‌ها ، من خودم به همچین مفاهیمی در جستجو‌هام رسیده بودم، ولی الان مشکل من اینه که می‌خوام sp_msForeschTable رو روی یک DataBase خاص که در سوال داده میشه، انجام بدم!

Galawij
شنبه 15 بهمن 1390, 19:57 عصر
این لینک ها که همیشه جواب مستقیم سوال شما نیستند! بعضی وقت ها راهنمایی هستند. اگر لینک دوم را می دید کد پست دوم، با یک کمی تغییر جواب می داد، به این صورت:
+ QUOTENAME(name) + CHAR(13) FROM DB1.sys.tables
DB1 نام بانک هستش.

Galawij
شنبه 15 بهمن 1390, 22:15 عصر
خوب این هم پارامتریش:
Declare @DatabaseName nvarchar(50)
Set @DatabaseName='DB1'
Declare @Qeury nvarchar(500)
Set @Qeury=N'Use ' +@DatabaseName +'; '+' Exec sys.sp_MSforeachtable ''Select * From ?'''
Exec Sp_executesql @Qeury

Miladsob
چهارشنبه 19 بهمن 1390, 09:14 صبح
ممنون Galawij عزیز، من به جوابم رسیدم، همین کد رو در یک Stored Procedure قزاز دادم و مشکلم حل شد!

linux
جمعه 21 بهمن 1390, 02:34 صبح
ممنون Galawij عزیز، من به جوابم رسیدم، همین کد رو در یک Stored Procedure قزاز دادم و مشکلم حل شد!
اگر از sql serve 2005 به بعد استفاده می کنید این جواب شما را خواهد داد


select

*

from

INFORMATION_SCHEMA .COLUMNS c

where

TABLE_CATALOG ='Your Database'