Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर:फ़ंक्शन/प्रक्रिया हस्ताक्षरों को बदलते समय संदर्भों की जाँच करें

आप सिस्टम तालिका में ट्रिगर नहीं जोड़ सकते हैं, लेकिन आप एक डीडीएल ट्रिगर बना सकते हैं जो ALTER PROC कथन पर सक्रिय होगा - उदाहरण:

ALTER TRIGGER DDL_PROC
ON DATABASE
FOR ALTER_PROCEDURE
AS
DECLARE @data XML, @ObjectName sysname, @ParamCount int
SET @data = EVENTDATA()
SET @ObjectName = @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'sysname')

PRINT 'You have changed procedure: ' + @ObjectName
SELECT @ParamCount = COUNT(*) FROM sys.parameters
WHERE object_id = OBJECT_ID(@ObjectName)
RAISERROR('This procedure now has %i parameter(s)',0,0,@ParamCount)
GO

मुझे यकीन नहीं है कि पिछली पैरामीटर सूची कैसे प्राप्त करें या यदि यह संभव भी है - क्या किसी को पता है?

यदि संभव हो तो नए मापदंडों को वैकल्पिक बनाने के लिए मैं चार्ल्स के सुझाव से सहमत हूं - मौजूदा कोड नहीं टूटेगा और आपको केवल संदर्भ खोजने होंगे यदि आपको जरूरी कॉल में पैरामीटर जोड़ें।

डेटाबेस को स्क्रिप्टिंग करना लंबा रास्ता लगता है। निम्नलिखित जैसी एक साधारण क्वेरी को आपकी खरीद (आपके डेटाबेस के भीतर) के सभी संदर्भ मिल जाने चाहिए:

SELECT so.name, so.type_desc
FROM sys.all_objects so
    JOIN sys.all_sql_modules sm ON so.[object_id] = sm.[object_id]
WHERE sm.[definition] LIKE '%<proc name>%'

यह वही बात है, लेकिन SQL सर्वर के पिछले संस्करणों में भी काम करेगी:

SELECT so.name, so.type
FROM syscomments sc
    JOIN sysobjects so ON sc.id = so.id
where text like '%<proc name>%'

आशा है कि यह मदद करता है,

एमडीडी



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जहां क्लॉज IN से पहले और जॉइन या बाद में बेहतर तरीके से निष्पादित होता है

  2. SQL सर्वर में टेक्स्ट मान को UTF8 से ISO 8859-1 . में बदलें

  3. मैं SQL सर्वर 2008 में varbinary (अधिकतम) कॉलम में Excel फ़ाइलों को कैसे सम्मिलित/पुनर्प्राप्त करूं?

  4. SQL सर्वर ODBC ड्राइवर त्रुटियाँ नहीं बढ़ा रहा है

  5. DATENAME() SQL सर्वर में उदाहरण