নেতিবাচক প্রভাবগুলি "টেবিলটি পুনরায় তৈরি করা দরকার এমন সংরক্ষণের পরিবর্তনগুলি প্রতিরোধ করুন।"


255

প্রস্তাবনা

আমি আজ এসকিউএল সার্ভার ২০০৮-এ একটি কলাম পরিবর্তন করছি, মুদ্রার (18,0) থেকে (19,2) জাতীয় ডেটাটাইপ পরিবর্তন করে।

এসকিউএল সার্ভার থেকে "আপনি যে পরিবর্তনগুলি করেছেন তার জন্য নিম্নলিখিত সারণিগুলি ফেলে দেওয়া এবং পুনরায় তৈরি করা দরকার" আমি ত্রুটি পেয়েছি।

আপনি উত্তর দেওয়ার আগে স্ক্র্যাম্বল করার আগে, দয়া করে নিম্নলিখিতটি পড়ুন:

আমি ইতিমধ্যে জানি যে সরঞ্জামগুলির বিকল্পগুলি ► বিকল্পগুলি ► ডিজাইনার ► টেবিল এবং ডাটাবেস ডিজাইনার ► বাক্সটি আনচেক করুন "সারণী পুনরায় তৈরির জন্য প্রয়োজনীয় পরিবর্তনগুলি রোধ করুন।" পাঁচটি ক্লিকগুলিতে টেবিল পুনরায় তৈরি করা দরকার এমন পরিবর্তনগুলি সংরক্ষণ করে প্রতিরোধ করুন ... তাই দিয়ে উত্তর দেবেন না !

আসল প্রশ্ন

আমার আসল প্রশ্নটি অন্য কোনও কিছুর জন্য, নিম্নরূপ:

এটি করার কোনও নেতিবাচক প্রভাব / সম্ভাব্য ত্রুটি আছে?

এই বাক্সটি চেক করা না থাকলে টেবিলটি কী স্বয়ংক্রিয়ভাবে বাদ পড়ে আবার পুনরায় তৈরি হয়?

যদি তা হয়, সারণীটি কি উত্স টেবিলের 100% সঠিক প্রতিলিপি অনুলিপি করে?


65
সরঞ্জামসমূহ> বিকল্পগুলি> ডিজাইনার ... এটিই আমি খুঁজছিলাম! ধন্যবাদ!
nrod

1
এছাড়াও কটাক্ষপাত করা stackoverflow.com/questions/9870968/...
pylover

2
এবং যদি আপনি এমএস এসকিউএল সার্ভারের সাথে থাকেন 2014 -> অতিরিক্ত> বিকল্পগুলি> উপরের মেনু থেকে ডিজাইনার।
ভিটিটা

উত্তর:


89

কেবলমাত্র এসকিউএল সার্ভারের পরিচালনা স্টুডিওটি কীভাবে এটি করা যায় তা প্রোগ্রাম করার জন্য প্রোগ্রাম করা হয়েছে সেখানে সারণীটি কেবলমাত্র ফেলে দেওয়া হয় এবং পুনরায় তৈরি করা হয়।

সেখানে অবশ্যই ক্ষেত্রে যেখানে এটা যে যখন এটি করার দরকার নেই কি করতে হবে, কিন্তু এছাড়াও আছে ক্ষেত্রে যেখানে সম্পাদনাগুলি ম্যানেজমেন্ট স্টুডিওতে আপনি করতে হবে না ড্রপ এবং পুনরায় তৈরি করা হয়েছে কারণ এটি হবে তা নয়।

সমস্যাটি হ'ল সমস্ত কেসকে গণনা করা এবং তারা কোন লাইনের উপর পড়েছে তা নির্ধারণ করা বেশ ক্লান্তিকর হবে।

এই কারণেই আমি ALTER TABLEভিজ্যুয়াল ডিজাইনারদের পরিবর্তে একটি কোয়েরি উইন্ডোতে ব্যবহার করতে চাই যা তারা কী করছে তা গোপন করে (এবং বেশ স্পষ্টতই বাগ রয়েছে) - আমি ঠিক জানি যা ঘটতে চলেছে, এবং আমি কেবলমাত্র সেই ক্ষেত্রেই প্রস্তুত করতে পারি যেখানে একমাত্র সম্ভাবনা রয়েছে টেবিলটি ড্রপ এবং পুনরায় তৈরি করা (যা এসএসএমএস আপনাকে এটি করবে কতবারের চেয়ে কিছু কম)।


5
সত্যিই খুব ভাল উত্তর দেওয়ার পরেও আমি অনুভব করি যে এটি ওপি কর্তৃক উত্থাপিত সমস্ত প্রশ্নের উত্তর সরবরাহ করে না, এবং এই প্রশ্নগুলিতে আমি আগ্রহী, প্রকৃতপক্ষে। বিশেষত এটি করার কোনও নেতিবাচক প্রভাব / সম্ভাব্য ত্রুটি রয়েছে? এবং যদি তা হয়, সারণীটি কি উত্স টেবিলের 100% সঠিক প্রতিলিপিটি অনুলিপি করে? । এই প্রশ্নগুলি সম্পর্কে আপনার কাছে কোনও তথ্য আছে?
tfrascaroli

252

সরঞ্জাম -> বিকল্পগুলি -> ডিজাইনার নোড -> " টেবিল বিনোদনের প্রয়োজন এমন সংরক্ষণের পরিবর্তনগুলি প্রতিরোধ করুন " আনচেক করুন


12

রেফারেন্স - এই বিকল্পটি বন্ধ করা আপনাকে একটি সারণী পুনরায় তৈরি করা এড়াতে সহায়তা করতে পারে, এটি পরিবর্তনগুলি হারিয়ে যাওয়ারও কারণ হতে পারে। উদাহরণস্বরূপ, ধরুন যে আপনি টেবিলের পরিবর্তনগুলি ট্র্যাক করতে এসকিউএল সার্ভার ২০০৮-এ পরিবর্তন ট্র্যাকিং বৈশিষ্ট্যটি সক্ষম করেছেন। আপনি যখন এমন কোনও ক্রিয়াকলাপ সম্পাদন করেন যার ফলে টেবিলটি পুনরায় তৈরি হয়, আপনি "তাত্পর্য" বিভাগে উল্লিখিত ত্রুটি বার্তাটি পান। তবে, আপনি যদি এই বিকল্পটি বন্ধ করেন, সারণীটি পুনরায় তৈরি করা হলে বিদ্যমান পরিবর্তন ট্র্যাকিং তথ্য মুছে ফেলা হবে। সুতরাং, মাইক্রোসফ্ট সুপারিশ করে যে বিকল্পটি বন্ধ করে আপনি এই সমস্যাটি ঘটাবেন না।


11

এসকিউএল সার্ভার কেবল টেবিলগুলি ড্রপ এবং পুনরায় তৈরি করে যদি আপনি:

  • একটি নতুন কলাম যুক্ত করুন
  • কলামের জন্য মঞ্জুর নালস সেটিংস পরিবর্তন করুন
  • সারণীতে কলামের ক্রম পরিবর্তন করুন
  • কলামের ডেটা টাইপ পরিবর্তন করুন

ALTER ব্যবহার করা আরও নিরাপদ, আপনি যখন টেবিলটি পুনরায় তৈরি করার সময় মেটাডেটাটি নষ্ট হয়ে যায়, আপনার ডেটা নষ্ট হবে।


8
আপনার তালিকা সম্পূর্ণ নয়। IDENTITYউদাহরণস্বরূপ, একটি কলামে সম্পত্তি যুক্ত করুন / সরান ।
অ্যারন বারট্র্যান্ড

2
ক্ষেত্রগুলির শেষে নতুন কলাম যুক্ত করার জন্য যা নলবলে একটি টেবিল পুনর্নির্মাণের প্রয়োজন হয় না।
সিউডোডোড

2

হ্যাঁ, এ থেকে নেতিবাচক প্রভাব রয়েছে:

আপনি যদি এই পতাকা দ্বারা অবরুদ্ধ কোনও পরিবর্তনের চিত্র লিপিবদ্ধ করেন তবে নীচের স্ক্রিপ্টের মতো কিছু পাবেন (সমস্ত আমি পরিচিতিতে আইডি কলামটি একটি স্বায়ত্তশাসিত আইডেন্টিটি কলামে রূপান্তর করছি তবে টেবিলটির নির্ভরতা রয়েছে)। নিম্নলিখিত চলমান অবস্থায় ঘটতে পারে এমন সম্ভাব্য ত্রুটিগুলি লক্ষ্য করুন:

  1. এমনকি মাইক্রোসফ্টও সতর্ক করেছে যে এর ফলে ডেটা ক্ষতি হতে পারে (সেই মন্তব্যটি স্বয়ংক্রিয়ভাবে উত্পন্ন)!
  2. সময়ের জন্য, বিদেশী কীগুলি প্রয়োগ করা হয় না।
  3. আপনি যদি এসএমএসে ম্যানুয়ালি এটি চালান এবং 'এক্সইসিই (' INTERT INTO 'ব্যর্থ হয়), এবং আপনি নিম্নলিখিত বিবৃতিগুলি চালিত হতে দিন (যা তারা ডিফল্টরূপে করেন,' go 'দিয়ে বিভক্ত হয়ে যায়) তবে আপনি 0 টি সারি সন্নিবেশ করান, তারপরে ড্রপ করুন পুরানো টেবিল
  4. যদি এটি একটি বড় টেবিল হয় তবে সন্নিবেশের রানটাইমটি বড় হতে পারে এবং লেনদেনে একটি স্কিমা পরিবর্তন লক ধারণ করে, তাই অনেকগুলি বিষয়কে অবরুদ্ধ করে ।

-

/* To prevent any potential data loss issues, you should review this script in detail before running it outside the context of the database designer.*/

BEGIN TRANSACTION
GO
ALTER TABLE raw.Contact
    DROP CONSTRAINT fk_Contact_AddressType
GO
ALTER TABLE ref.ContactpointType SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
BEGIN TRANSACTION
GO
ALTER TABLE raw.Contact
    DROP CONSTRAINT fk_contact_profile
GO
ALTER TABLE raw.Profile SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
BEGIN TRANSACTION
GO
CREATE TABLE raw.Tmp_Contact
    (
    ContactID int NOT NULL IDENTITY (1, 1),
    ProfileID int NOT NULL,
    AddressType char(2) NOT NULL,
    ContactText varchar(250) NULL
    )  ON [PRIMARY]
GO
ALTER TABLE raw.Tmp_Contact SET (LOCK_ESCALATION = TABLE)
GO
SET IDENTITY_INSERT raw.Tmp_Contact ON
GO
IF EXISTS(SELECT * FROM raw.Contact)
     EXEC('INSERT INTO raw.Tmp_Contact (ContactID, ProfileID, AddressType, ContactText)
        SELECT ContactID, ProfileID, AddressType, ContactText FROM raw.Contact WITH (HOLDLOCK TABLOCKX)')
GO
SET IDENTITY_INSERT raw.Tmp_Contact OFF
GO
ALTER TABLE raw.PostalAddress
    DROP CONSTRAINT fk_AddressProfile
GO
ALTER TABLE raw.MarketingFlag
    DROP CONSTRAINT fk_marketingflag_contact
GO
ALTER TABLE raw.Phones
    DROP CONSTRAINT fk_phones_contact
GO
DROP TABLE raw.Contact
GO
EXECUTE sp_rename N'raw.Tmp_Contact', N'Contact', 'OBJECT' 
GO
ALTER TABLE raw.Contact ADD CONSTRAINT
    Idx_Contact_1 PRIMARY KEY CLUSTERED 
    (
    ProfileID,
    ContactID
    ) 

GO
ALTER TABLE raw.Contact ADD CONSTRAINT
    Idx_Contact UNIQUE NONCLUSTERED 
    (
    ProfileID,
    ContactID
    ) 

GO
CREATE NONCLUSTERED INDEX idx_Contact_0 ON raw.Contact
    (
    AddressType
    ) 
GO
ALTER TABLE raw.Contact ADD CONSTRAINT
    fk_contact_profile FOREIGN KEY
    (
    ProfileID
    ) REFERENCES raw.Profile
    (
    ProfileID
    ) ON UPDATE  NO ACTION 
     ON DELETE  NO ACTION 

GO
ALTER TABLE raw.Contact ADD CONSTRAINT
    fk_Contact_AddressType FOREIGN KEY
    (
    AddressType
    ) REFERENCES ref.ContactpointType
    (
    ContactPointTypeCode
    ) ON UPDATE  NO ACTION 
     ON DELETE  NO ACTION 

GO
COMMIT
BEGIN TRANSACTION
GO
ALTER TABLE raw.Phones ADD CONSTRAINT
    fk_phones_contact FOREIGN KEY
    (
    ProfileID,
    PhoneID
    ) REFERENCES raw.Contact
    (
    ProfileID,
    ContactID
    ) ON UPDATE  NO ACTION 
     ON DELETE  NO ACTION 

GO
ALTER TABLE raw.Phones SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
BEGIN TRANSACTION
GO
ALTER TABLE raw.MarketingFlag ADD CONSTRAINT
    fk_marketingflag_contact FOREIGN KEY
    (
    ProfileID,
    ContactID
    ) REFERENCES raw.Contact
    (
    ProfileID,
    ContactID
    ) ON UPDATE  NO ACTION 
     ON DELETE  NO ACTION 

GO
ALTER TABLE raw.MarketingFlag SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
BEGIN TRANSACTION
GO
ALTER TABLE raw.PostalAddress ADD CONSTRAINT
    fk_AddressProfile FOREIGN KEY
    (
    ProfileID,
    AddressID
    ) REFERENCES raw.Contact
    (
    ProfileID,
    ContactID
    ) ON UPDATE  NO ACTION 
     ON DELETE  NO ACTION 

GO
ALTER TABLE raw.PostalAddress SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.