سؤال

في SQL Server عند تحديد تعديل SP أو UDF، يقوم بتحميل استعلام Abjects Arder في نافذة استعلام. هل يمكن الوصول إلى هذه الاستفسارات في جدول النظام حتى أتمكن من تخزين بيانات التغيير في مكان ما؟ يبدو أن SysComments لديها بعض الأشياء ولكن ليس كلها جميعا.

شكرا

هل كانت مفيدة؟

المحلول

لا تستخدم syscomments., ، لأن syscomments.text يكون nvarchar(4000) ونتيجة لذلك، سيتم اقتطاع أي شيء أطول.

يستخدم sys.sql_modules لأن definition يكون nvarchar(max), ، لن يتم اقتطاع رمز طويل.

استخدم هذا لعرض نص إجراء معين أو عرض أو وظيفة:

SELECT * FROM sys.sql_modules WHERE object_id=object_id('YourProcedure')

استخدم هذا للحصول على اسم أو اكتب ونص أي إجراء أو عرض أو وظيفة:

SELECT DISTINCT
    o.name AS Object_Name,o.type_desc, m.definition
    FROM sys.sql_modules        m 
        INNER JOIN sys.objects  o ON m.object_id=o.object_id
    WHERE m.object_id=object_id('CPT_SP_IRA_ComboBox_IncidentStatus')

نصائح أخرى

أنا لست متأكدا تماما ما تطرحه، ولكن يمكنك رؤية الإجراءات المخزنة مع الاستعلام التالي:

SELECT SO.Type,SO.Name,SC.Text
FROM sysobjects SO (NOLOCK)
INNER JOIN syscomments SC (NOLOCK) on SO.Id = SC.ID
AND SO.Type = 'P'
ORDER BY SO.Name

إذا كنت بعد أنواع كائنات مختلفة، نلقي نظرة على sys.sysobjects. لأنواع مختلفة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top