मेरे पास एक स्क्रिप्ट है जो एक संपूर्ण डेटाबेस बनाता है और कुछ दर्जन तालिकाओं में सभी रिकॉर्ड डालता है। यह बहुत अच्छा काम करता है, जब तक कि प्रसंस्करण के दौरान कोई समस्या न हो, और तालिका को प्रविष्टि के दौरान विफल होने पर IDENTITY_INSERT के साथ छोड़ दिया जाता है, और इससे पहले इसे फिर से बंद करने के लिए सेट किया जा सकता है।सभी तालिकाओं के लिए IDENTITY_INSERT OFF सेट करें
जब ऐसा होता है, तो स्क्रिप्ट स्वचालित रूप से फिर से चलाने का प्रयास करते समय विफल हो जाती है, त्रुटि के साथ "IDENTITY_INSERT पहले से ही तालिका xx के लिए चालू है" क्योंकि हम पहली तालिका के सम्मिलन में जाते हैं।
एक असफलता के रूप में मैं यह सुनिश्चित करना चाहता हूं कि सेटअप स्क्रिप्ट में शेष प्रोसेसिंग चलाने से पहले IDENTITY_INSERT सभी तालिकाओं के लिए बंद हो जाएगा।
एक विकल्प के रूप में, हम शायद एमएस एसक्यूएल कनेक्शन बंद कर सकते हैं और इसे फिर से खोल सकते हैं, जैसा कि मैं इसे समझता हूं, कनेक्शन सत्र के लिए सभी IDENTITY_INSERT मानों को साफ़ कर देगा।
ऐसा करने का सबसे अच्छा तरीका क्या है, और "पहले से ही" त्रुटियों को रोकें?
SQL सर्वर का कौन सा संस्करण? –
इस ऐप को w/2005 और ऊपर काम करने की ज़रूरत है, इसलिए आदर्श रूप से एक समाधान जो सभी हालिया और आगामी संस्करणों के लिए काम करता है। –
नीचे मेरा समाधान 05 और बाद में काम करना चाहिए। –