मैं एक विशिष्ट तालिका का परीक्षण और आबादी करने की प्रक्रिया में हूं जो SEQUENCE
वस्तु का लाभ उठाती है । इस प्रक्रिया में मैं हजारों सम्मिलित लाइनों के साथ तालिका को पॉप्युलेट कर रहा हूं (जैसा कि मैं इस कार्यक्रम को कैसे करना है इससे अपरिचित हूं)। इस विशिष्ट तालिका के साथ जो समस्या मुझे दिखाई दे रही है वह यह है कि जब मैं एक और जनसंख्या परीक्षण शुरू SEQUENCE
करता हूं, तो मुझे पहले नंबर पर रीसेट नहीं करना चाहिए जो मुझे चाहिए (जो कि 1 है)।
जब मैं एक नई परीक्षा फिर से चलाने की इच्छा करता हूं तो मैं प्रश्न में तालिका को हटा देता हूं, फिर निम्नलिखित चलाएं:
DROP SEQUENCE foo.fee;
GO
DROP SCHEMA foo;
GO
जब मैं परीक्षण को फिर से चलाना चाहता हूं तो मैं निम्नलिखित SCHEMA
और SEQUENCE
आदेश चलाता हूं , जिन्हें नीचे दिए गए क्रम में निकाल दिया जाता है:
CREATE SCHEMA foo;
GO
CREATE SEQUENCE foo.fee
START WITH 1
INCREMENT BY 1
NO CYCLE
NO CACHE;
GO
मैं तब तालिका बनाता हूं:
CREATE TABLE foo.sample_table_with_data
(order_number bigint PRIMARY KEY NOT NULL,
sample_column_one nvarchar(max) NULL,
sample_column_two nvarchar(max) NULL,
sample_column_three nvarchar(max) NULL)
GO
एक बार जो पूरा हो गया है, मैं निम्नलिखित सम्मिलित कमांड को 50,000 बार चलाता हूं:
INSERT INTO [foo].[sample_table_with_data]
(
[order_number],
[sample_column_one],
[sample_column_two],
[sample_column_three]
)
VALUES
(
NEXT VALUE FOR foo.fee,
'Blah',
'Blah Blah',
'Blah Blah Blah'
)
अब तालिका में डेटा दर्ज करने में कोई समस्या नहीं है। मेरे सामने आने वाली चुनौती यह है कि जब मैं तालिका को हटाता हूं, तो स्कीमा और अनुक्रम को हटा दें, फिर तालिका, अनुक्रम, क्रम को फिर से बनाएं और SEQUENCE
पिछले डेटाबेस अवतार में अंतिम संख्या से उठाता है और वापस एक पर रीसेट न करें।
उदाहरण के लिए, यदि अनुक्रम में अंतिम संख्या 634,534 है, तो नई तालिका में अगला अनुक्रम संख्या 634,535 है।
तालिका को हटाने और स्कीमा और अनुक्रम को छोड़ने के बाद मैं अनुक्रम और स्कीमा को हटाने के लिए निम्नलिखित को चलाता हूं:
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
GO
SELECT * FROM sys.sequences
GO
मैं स्तब्ध हूं कि ऐसा क्यों हो रहा है। क्या कोई अन्य आदेश है जो मैं यहां याद कर रहा हूं जो मुझे स्थानीय बनाने में मदद करेगा कि यहां क्या चल रहा है?
मुझे ध्यान देना चाहिए कि यह तालिका 7 अन्य तालिकाओं वाले डेटाबेस से संबंधित है जो सभी SEQUENCE
कमांड को सही ढंग से चला रहे हैं ।
यह SQL 2012 SP1 एंटरप्राइज़ संस्करण स्थापना है।