একটি এসকিউএল সার্ভার 2012 ক্রম পুনরায় সেট করা


13

আমি একটি নির্দিষ্ট টেবিল যা পরীক্ষার জন্য SEQUENCEঅবজেক্টটিকে পরীক্ষা করে দেখছি এবং পপুলেট করার প্রক্রিয়াধীন । এই প্রক্রিয়াটিতে আমি কয়েক হাজার inোকানো লাইন দিয়ে টেবিলটি পপুলেটিং পরীক্ষা করছি (যেহেতু আমি এটি কীভাবে প্রোগ্রাম করব তা অপরিচিত)। এই নির্দিষ্ট সারণীর সাথে আমি যে সমস্যাটি দেখছি তা হ'ল আমি যখন অন্য জনসংখ্যা পরীক্ষা শুরু করি তখন আমার SEQUENCEপ্রথম সংখ্যায় (যা 1) পুনরায় সেট হয় না।

যখন আমি নতুন পরীক্ষাটি পুনরায় চালাতে ইচ্ছুক তখন আমি প্রশ্নাবদ্ধ সারণীটি মুছে ফেলি তবে নিম্নলিখিতগুলি চালিত করুন:

DROP SEQUENCE foo.fee;
GO

DROP SCHEMA foo;
GO

আমি যখন পরীক্ষাটি আবার চালাতে চাই তখন আমি নীচের ক্রমানুসারে নিম্নোক্ত SCHEMASEQUENCEআদেশগুলি চালিত করি:

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কমান্ডটি সঠিকভাবে চালাচ্ছে ।

এটি একটি এসকিউএল 2012 এসপি 1 এন্টারপ্রাইজ সংস্করণ ইনস্টলেশন।

উত্তর:



5

কিছুটা সামান্য পরিবর্তন সহ আপনার স্ক্রিপ্ট ব্যবহার করা:

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
SET NOCOUNT ON
GO
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')
GO 50000
SELECT
    MIN(order_number), 
    MAX(order_number)
FROM foo.sample_table_with_data AS stwd
GO
DROP SEQUENCE foo.fee;
GO
DROP TABLE foo.sample_table_with_data
GO
DROP SCHEMA foo;

... আমি এসকিউএল সার্ভার 2012 এসপি 1 (বিল্ড 3000) বা তারও বেশি উপরে সমস্যাটি পুনরুত্পাদন করতে পারি না।

এই নির্দিষ্ট দৃশ্যের উল্লেখ করে আমি কোনও সংযুক্ত আইটেম বা কেবি নিবন্ধটি খুঁজে পাচ্ছি না (এবং প্রচুর অন্যান্য SEQUENCEসমস্যাও রয়েছে)। এটি প্রাক-এসপি 1 এর অস্তিত্বের কথা বলার অপেক্ষা রাখে না কারণ সমস্ত ফিক্সগুলি ডকুমেন্ট হওয়া শেষ করে না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.