روشی جهت یافتن فیلدهای استفاده شده درون Stored Procedure ، Function و View
گاهی اوقات بدلیل تغییرات در جداول و غیرو...، ممکن است لازم شود، از استفاده قرار گرفتن فیلدهای جداول درون Function ها،Stored Procedure‌ها و یا View‌ها ، مطلع شوید. در این زمان شما می‌توانید از روش زیر استفاده نماید.
قبل از هر چیز در ابتدا Script زیر را اجرا نمایید.که شامل یک جدول به نام FindField ، یک Stored Procedure به نام PROCEDURE_FindField و یک Function به نام FUNCTION_FindField می‌باشد.
Create Table FindField
(ID int,
Firstname varchar(255),
Lastname varchar(255))
Go
CREATE PROCEDURE PROCEDURE_FindField
AS
    SELECT Firstname FROM FindField;
GO
CREATE FUNCTION FUNCTION_FindField (@id int)
RETURNS int
WITH EXECUTE AS CALLER
AS
begin 
declare @id1 int;
   set @id1= (Select Max(Firstname) from dbo.FindField) ;
   RETURN (@id1);
END;
در ادامه Script زیر را اجرا نمایید:
SELECT OBJECT_NAME(object_id) as 'Procedure/Function/View Name',
definition
FROM sys.sql_modules
WHERE definition LIKE '%' + 'Firstname' + '%'
خروجی بصورت زیر خواهد بود:

همانطور که در شکل مشاهده می‌نمایید، فیلد Firstnameدر Function و Stored Procedure مورد استفاده واقع شده است.

جهت کسب اطلاعات بیشتر به آدرس زیر مراجعه نمایید:

http://msdn.microsoft.com/en-us/library/ms175081.aspx

  • #
    ‫۱۲ سال و ۲ ماه قبل، چهارشنبه ۴ مرداد ۱۳۹۱، ساعت ۱۷:۲۶
    ضمن تشکر. ابزار (افزونه) رایگانی هم برای انجام اینکار وجود دارد:
    • #
      ‫۱۲ سال و ۲ ماه قبل، پنجشنبه ۵ مرداد ۱۳۹۱، ساعت ۰۰:۵۴
      مرسی از افزونه ای که معرفی نمودید،
  • #
    ‫۱۲ سال و ۲ ماه قبل، چهارشنبه ۴ مرداد ۱۳۹۱، ساعت ۱۷:۴۹
    با تشکر از مطلب جالبتون.
    به نظر من یک کار دیگه. استفاده از WITH SCHEMABINDING در زمان ایجاد اشیای وابسته است.
    • #
      ‫۱۲ سال و ۲ ماه قبل، چهارشنبه ۴ مرداد ۱۳۹۱، ساعت ۱۸:۲۲
      این روش خوبی است ولی فقط برای viewها و توابع کاربرد دارد و نه برای SPها.

      • #
        ‫۱۲ سال و ۲ ماه قبل، چهارشنبه ۴ مرداد ۱۳۹۱، ساعت ۱۸:۳۸
        بله همینطوره.
        به نظر من  ایجاد اشیایی همانند Function و Stored Proc با وجود ORMهای امروزی، تا حدودی مناسب نیست (خارج از مواردی که مسائل Performance مطرح است).
        ایجاد و بازسازی این اشیا در صورت وجود در هنگام Seed پایگاه داده (چه ایجاد و  چه تغییر) می‌تواند بسیاری از مشکلات موجود را حل کند.
  • #
    ‫۱۲ سال و ۲ ماه قبل، پنجشنبه ۵ مرداد ۱۳۹۱، ساعت ۰۰:۲۶
    سلام
    با این کوئری که شما گفتید اگر View, Function , Stored Procedure رمز شده باشند
    دیگه نمی‌تونه جواب بده
    ولی با این کوئری امکانش هست
    SELECT TABLE_NAME,
           column_Name
    FROM   INFORMATION_SCHEMA.COLUMNS
    WHERE  column_Name LIKE '%' + 'Name' + '%' 
  • #
    ‫۱۲ سال و ۲ ماه قبل، پنجشنبه ۵ مرداد ۱۳۹۱، ساعت ۰۰:۳۲
    اون افزونه رایگانی که مهندس نصیری معرفی کردن
    از هر دو استفاده می‌کنه
    یعنی هم متن درون view  و Function , Procedure رو جستجو می‌کنه
    که اگر رمز شده باشند دیگه نتیجه ای نداره
    و هم عناوین ستون‌های اون شئ رو جستجو میکنه