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

वस्तु को नहीं छोड़ा जा सका क्योंकि यह एक विदेशी कुंजी बाधा द्वारा संदर्भित है - SQL सर्वर / TSQL ट्यूटोरियल भाग 74

परिदृश्य:

आप 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 सर्वर में किसी तालिका के लिए विदेशी कुंजी बाधा नाम कैसे प्राप्त करें
 Sp_fkeys बहुत विस्तृत जानकारी देता है, कुछ कॉलम ऊपर स्नैपशॉट में नहीं दिखाए गए हैं। यहां उन स्तंभों की सूची दी गई है जो यह वापस आएंगे।


  • 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


वीडियो डेमो :वस्तु को नहीं छोड़ा जा सका क्योंकि यह एक विदेशी कुंजी बाधा द्वारा संदर्भित है



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. टेबल में प्राथमिक कुंजी के लिए सबसे अच्छा अभ्यास क्या है?

  2. SQL सर्वर में "अंतिम संशोधित" कॉलम बनाएं

  3. SQL सर्वर (T-SQL) में TIME डेटा प्रकार को फ़ॉर्मेट करते समय इसे याद रखें

  4. डिफ़ॉल्ट के रूप में चिह्नित केवल एक रिकॉर्ड के लिए बाधा

  5. सभी तालिकाओं के लिए SQL सर्वर डेटाबेस में विदेशी कुंजी बाधाओं को कैसे छोड़ें - SQL सर्वर / TSQL ट्यूटोरियल भाग 72