मैं एक उत्प्रेरक है कि इस तरह एक विधानसभा कॉल बनाया है तर्क पारित करने के लिए:कैसे एक बाहरी (SQLCLR) SQL सर्वर ट्रिगर
CREATE TRIGGER Testrigger ON STATION
FOR INSERT
AS EXTERNAL NAME assemblytest.[WriteTimeInfile.Program].Testrigger
कि विधानसभा में नेट कोड है कि कुछ इस तरह है:
namespace WriteTimeInfile
{
public class Program
{
[SqlTrigger(Name = @"Testrigger", Target = "[dbo].[STATION]", Event = "FOR INSERT, UPDATE, DELETE")]
public static void Testrigger()
{
File.AppendAllText(@"C:\Users\Vivien\date.txt",
DateTime.Now.ToString() + Environment.NewLine);
}
}
}
मैं एक तर्क, बनाया पंक्ति या इस तरह अद्यतन पंक्ति कुछ के रूप में, पारित करने में सक्षम होना चाहते हैं:
CREATE TRIGGER Testrigger ON STATION
AFTER INSERT
AS
EXTERNAL NAME assemblytest.[WriteTimeInfile.Program].Testrigger (STATION.ID)
मुझे स्टैक ओवरफ्लो पर 7 साल पुराना topic मिला जो बताता है कि सीएलआर असेंबली को तर्क देने का कोई तरीका नहीं है।
मैं पूछ रहा हूं कि यह हाल ही में SQL सर्वर संस्करणों में संभव है या नहीं।
क्या आपको पता है कि कोई रास्ता है और यदि हां, तो कृपया इसे कैसे करें?
आपके पास हमेशा SQLCLR ट्रिगर के अंदर से INSERTED और हटाए गए तालिकाओं तक पहुंच थी, [जैसा कि डॉक्यूमेंटेशन के इस पुराने संस्करण में दिखाया गया है) (https://msdn.microsoft.com/en-us/library/938d9dz2 (v = vs.90) .aspx)। आपको ट्रिगर में किसी भी तर्क को पारित करने की आवश्यकता नहीं है, जैसे कि आपको सामान्य ट्रिगर –
* पर किसी भी तर्क को पारित करने की आवश्यकता नहीं है * आप * ट्रिगर्स को पैरामीटर क्यों पास करना चाहते हैं? किस तरह के पैरामीटर? आप इसके बजाय संग्रहीत प्रक्रिया का उपयोग क्यों नहीं करते? यदि आप परिवर्तन पहचान के साथ किसी प्रकार की ईटीएल कार्यक्षमता को कार्यान्वित करना चाहते हैं, तो आप चाबियाँ खोजने और संशोधित पंक्तियों के प्रकार बदलने के लिए चेंज ट्रैकिंग (सीडीसी नहीं) का उपयोग कर सकते हैं और उन्हें –