2012-09-10 1 views
24

मैंने SQL Server में एक तालिका के लिए एक ट्रिगर बनाया और यह मेरे लिए काम करता है।SQL सर्वर के साथ किसी तालिका से जुड़े सभी ट्रिगर कैसे खोजें?

मेरी समस्या यह है: इसे कैसे ढूंढें और संशोधित करें?

मैं अपने ट्रिगर्स खोजने के लिए इस क्वेरी का उपयोग करें:

select * from sys.triggers 

यह सभी ट्रिगर लगता है, लेकिन यह कैसे खोल सकते हैं और ट्रिगर्स को बदलने के लिए?

उत्तर

34

आप इसे आसानी से एसएसएमएस के साथ कर सकते हैं। बस उस तालिका से जुड़े ट्रिगर्स की सूची देखने के लिए अपने टेबल नाम पर जाएं और ट्रिगर्स नोड का विस्तार करें। अपने ट्रिगर को संशोधित करने के लिए राइट क्लिक करें। के माध्यम से enter image description here

4
select m.definition from sys.all_sql_modules m inner join sys.triggers t 
on m.object_id = t.object_id 

यहां केवल परिभाषा की प्रतिलिपि बनाएँ और ट्रिगर को बदलें।

अन्यथा आप एसएसएमएस प्राप्त कर सकते हैं और अपने डीबी का विस्तार कर सकते हैं और प्रोग्राममेबिलिटी के तहत डेटाबेस ट्रिगर का विस्तार कर सकते हैं, फिर विशिष्ट ट्रिगर पर राइट क्लिक करें और वहां भी संशोधित करें पर क्लिक करें जिसे आप बदल सकते हैं।

2

जाओ

Need to list all triggers in SQL Server database with table name and table's schema

यह URL प्रश्नों जिसके द्वारा आप विशेष तालिका के साथ ट्रिगर संबद्ध की सूची प्राप्त कर सकते हैं की स्थापना की है।

मेरा मानना ​​है कि आप sqlserver में निम्नलिखित चरणों का काम कर रहे हैं चलाता

संशोधित एक ट्रिगर

  1. संशोधित करने के लिए एक सर्वर समूह को विस्तृत प्राप्त करने के लिए, और फिर एक सर्वर का विस्तार कर रहे हैं।

  2. डेटाबेस का विस्तार करें, डेटाबेस का विस्तार करें जिसमें युक्त तालिका है, और फिर तालिकाएं क्लिक करें।

  3. विवरण फलक में, उस तालिका पर राइट-क्लिक करें जिस पर ट्रिगर मौजूद है, सभी कार्यको इंगित करें, और फिर ट्रिगर प्रबंधित करें पर क्लिक करें।

  4. नाम में, ट्रिगर का नाम चुनें।

  5. आवश्यकतानुसार टेक्स्ट फ़ील्ड में ट्रिगर का टेक्स्ट बदलें। SQL सर्वर एंटरप्राइज़ प्रबंधक ट्रिगर के पाठ को इंडेंट करने के लिए CTRL + TAB दबाएं।

  6. ट्रिगर के सिंटैक्स को देखने के लिए, सिंटेक्स जांचें पर क्लिक करें।

26
select so.name, text 
from sysobjects so, syscomments sc 
where type = 'TR' 
and so.id = sc.id 
and text like '%YoutTableName%' 

इस तरह से आप सभी दी गई सारणी के साथ ट्रिगर संबद्ध बाहर सूचीबद्ध कर सकते हैं।

+1

यह संभावित रूप से _to कई पंक्तियों को वापस कर सकता है% YoutTableName% केवल एक तालिका का प्रतिनिधित्व करने के लिए नहीं है। उदाहरण: ** उत्पाद ** - <** उत्पाद ** संवर्धन> - संवर्धन – pfonseca

+1

यह एक अच्छा जवाब है, क्योंकि इसे सभी विकास वातावरण में काम करना चाहिए। मुझे एक ट्रिगर खोजने की ज़रूरत थी जो एसएसएमएस में मेरे डेटाबेस ट्रिगर्स फ़ोल्डर के तहत नहीं दिख रहा था, जो एक एज़ूर होस्टेड डेटाबेस से जुड़ा हुआ था। –

0

नीचे

select (select [name] from sys.tables where [object_id] = tr.parent_id) as TableName ,* from sys.triggers tr 
3

बहुत सरल प्रश्न यह उपयोगी हो सकता है

SELECT 
t.name AS TableName, 
tr.name AS TriggerName 
FROM sys.triggers tr 
INNER JOIN sys.tables t ON t.object_id = tr.parent_id 
WHERE 
t.name in ('TABLE_NAME(S)_GOES_HERE'); 

इस तरह से आप सिर्फ तालिकाओं के नाम प्लगइन करने के लिए है और क्वेरी सभी ट्रिगर

1
जरूरत लायेगा

संबंधित तालिकाओं के लिए ट्रिगर सूची खोजने के लिए sp_helptrigger का उपयोग करें

1

इस प्रश्न के साथ आप सभी तालिकाओं और सभी विचारों में सभी ट्रिगर ढूंढ सकते हैं।

;WITH 
     TableTrigger 
     AS 
     (
      Select 
       Object_Kind = 'Table', 
       Sys.Tables.Name As TableOrView_Name , 
       Sys.Tables.Object_Id As Table_Object_Id , 
       Sys.Triggers.Name As Trigger_Name, 
       Sys.Triggers.Object_Id As Trigger_Object_Id 
      From Sys.Tables 
      INNER Join Sys.Triggers On (Sys.Triggers.Parent_id = Sys.Tables.Object_Id) 
      Where (Sys.Tables.Is_MS_Shipped = 0) 
     ), 
     ViewTrigger 
     AS 
     (
      Select 
       Object_Kind = 'View', 
       Sys.Views.Name As TableOrView_Name , 
       Sys.Views.Object_Id As TableOrView_Object_Id , 
       Sys.Triggers.Name As Trigger_Name, 
       Sys.Triggers.Object_Id As Trigger_Object_Id 
      From Sys.Views 
      INNER Join Sys.Triggers On (Sys.Triggers.Parent_id = Sys.Views.Object_Id) 
      Where (Sys.Views.Is_MS_Shipped = 0) 
     ), 
     AllObject 
     AS 
     (
      SELECT * FROM TableTrigger 

      Union ALL 

      SELECT * FROM ViewTrigger 
     ) 


    Select 
     * 
    From AllObject 
    Order By Object_Kind, Table_Object_Id 
0

खोजने मेज पर चलाता है:

select so.name, text 
from sysobjects so, syscomments sc 
where type = 'TR' 
and so.id = sc.id 
and text like '%TableName%' 

और आप की दुकान की प्रक्रिया है जिससे तालिका के संदर्भ में है पा सकते हैं:

SELECT Name 
FROM sys.procedures 
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%yourtablename%'