मेरा अनुमान है कि कार्यान्वयन के कारण यह प्रतिबंध था। एकाधिक तालिका पर इस सेटिंग को अनुमति देना एक संभावित पूर्णता हिट था:
चूंकि यह एक सत्र पैरामीटर है, जिससे सेटिंग को एकल तालिका पर सक्रिय करने की अनुमति मिलती है, जिसका अर्थ है कि यह सत्र पर सर्वर-साइड पर संग्रहीत करने के लिए सरल ध्वज और तालिका का ऑब्जेक्ट आईडी है। हो सकता है कि यह सिर्फ एक पूर्णांक है: 0 यदि कोई IDENTITY_INSERT सक्रिय नहीं है, और तालिका के लिए डेटाबेस + ऑब्जेक्टिड के कुछ कोडिंग हैं।
एक सत्र के भीतर कई तालिकाओं पर सेट किए जाने वाले पैरामीटर की अनुमति देने का मतलब होगा कि सर्वर ऐसी वस्तुओं की एक गतिशील सूची को संग्रहीत करेगा और इसे किसी भी सम्मिलित विवरण के लिए जांच करेगा। एक सत्र की कल्पना करें कि एक हज़ार तालिकाओं के लिए पैरामीटर सक्रिय होता है:
- इसका मतलब है कि सर्वर ने सत्र चर में 1000 आइटम आवंटित किए हैं
- इसका मतलब यह भी है कि सर्वर को इस सत्र में प्रत्येक सम्मिलित विवरण के लिए 1000 वस्तुओं की सूची की जांच करनी है।
इसके अलावा, मुझे संदेह है कि सेट पहचान_ सर्वर पर सर्वर पर व्यापक प्रदर्शन हिट है। Sybase में एक " पहचान बर्निंग सेट फैक्टर " था, जो केवल एक बार में सहेजे जाने वाले टेबल के पहचान काउंटर के मूल्य को बचाने की अनुमति देता था (मान को स्मृति में रखा जाता है और डिस्क पर एक बार और सर्वर पर लिखा जाता है। बंद करना )। SQL सर्वर समान कोड पर आधारित है, इसलिए संभवतया कुछ तुलनात्मक अनुकूलन है, लेकिन एक टेबल पर पहचान_insert को सक्रिय करना संभवतः सर्वर को हर डालने के लिए पहचान मूल्य को बचाने के लिए विवश करता है, क्योंकि यह अधिकतम अंतराल आकार की गारंटी नहीं दे सकता है। इसलिए यदि एक सत्र एक तालिका में आवेषण पर एक प्रदर्शन हिट बनाता है, तो यह संभवतः स्वीकार्य है, लेकिन यह नहीं कि यदि यह सर्वर पर सभी ऑटो_संचालनों की तालियों पर पूर्ण हिट बना सके ..