परिदृश्य:
आप SQL सर्वर DBA या डेवलपर के रूप में काम कर रहे हैं, आपको डेटाबेस से एक तालिका छोड़ने की आवश्यकता है। जब आप ड्रॉप टेबल SchemaName.TableName स्टेटमेंट निष्पादित करते हैं, तो आपको नीचे त्रुटि मिलती है। एक विदेशी कुंजी बाधा द्वारा संदर्भित।अब हम जानते हैं कि तालिका विदेशी कुंजी बाधा द्वारा संदर्भित है। समस्या यह है कि किस तालिका में वह विदेशी कुंजी बाधा है जो इस तालिका को संदर्भित कर रही है।
समाधान:
1) इस जानकारी को प्राप्त करने के कई तरीके हैं। हम उस तालिका के नाम को खोजने के लिए सिस्टम दृश्यों का उपयोग कर सकते हैं जिसमें विदेशी कुंजी बाधा है जो हमारी प्राथमिक तालिका को संदर्भित कर रही है। , object_name(FK.referenced_object_id) ReferenceTableName FROM sys.foreign_keys AS FK WHERE object_name(FK.referenced_object_id)='YourTableName' and Schema_Name(Schema_id)='YourTableSchemaName'मैंने अपनी ग्राहक तालिका के लिए उपरोक्त स्क्रिप्ट निष्पादित की है जो डीबीओ स्कीमा में मौजूद है और यहां मुझे मिला है।
कैसे पता करें कि SQL सर्वर में किस टेबल की फॉरेन की टेबल को रेफर कर रही है। |
अब हम जानते हैं कि Ord वह तालिका है जिसमें विदेशी कुंजी बाधा है जो हमारी तालिका को संदर्भित कर रही है। हम आगे बढ़ सकते हैं और विदेशी कुंजी बाधा को छोड़ सकते हैं और फिर अपनी तालिका छोड़ सकते हैं।
2) सिस्टम संग्रहीत प्रक्रिया का उपयोग करें sp_fkeys
हम विदेशी कुंजी बाधाओं की जानकारी प्राप्त करने के लिए सिस्टम संग्रहीत प्रक्रिया का उपयोग कर सकते हैं जो हमारी तालिका को संदर्भित कर रहे हैं। यदि मेरी तालिका का नाम ग्राहक है, तो मैं नीचे के रूप में स्क्रिप्ट चला सकता हूँ
EXEC sp_fkeys 'ग्राहक'
SQL सर्वर में किसी तालिका के लिए विदेशी कुंजी बाधा नाम कैसे प्राप्त करें |
- PKTABLE_QUALIFIER
- PKTABLE_OWNER
- PKTABLE_NAME
- PKCOLUMN_NAME
- FKTABLE_QUALIFIER
- FKTABLE_OWNER
- FKTABLE_NAME
- FKCOLUMN_NAME
- KEY_SEQ
- UPDATE_RULE
- DELETE_RULE
- FK_NAME
- PK_NAME
वीडियो डेमो :वस्तु को नहीं छोड़ा जा सका क्योंकि यह एक विदेशी कुंजी बाधा द्वारा संदर्भित है