এসকিউএল সার্ভারে স্কিমা-আবদ্ধ দর্শন দ্বারা চিহ্নিত কলামের আকার পরিবর্তন করা


124

আমি স্কেল সার্ভারে একটি কলামের আকার পরিবর্তন করে চেষ্টা করে যাচ্ছি:

ALTER TABLE [dbo].[Address]
ALTER COLUMN [Addr1] [nvarchar](80) NULL

যেখানে দৈর্ঘ্য Addr1মূলত ছিল 40

এটি ব্যর্থ হয়েছে, এই ত্রুটি উত্থাপন:

The object 'Address_e' is dependent on column 'Addr1'.
ALTER TABLE ALTER COLUMN Addr1 failed because one or more objects access 
this column.

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

Address_e পূর্ববর্তী ডিবি প্রশাসক দ্বারা তৈরি একটি দৃশ্য।

আমি কলামের আকার পরিবর্তন করতে পারে কি অন্য কোন উপায় আছে?


2
ঠিকানা_e এটি পূর্ববর্তী ডিবি প্রশাসকের দ্বারা নির্মিত একটি দৃশ্য view এবং রেমাস যা উল্লেখ করেছে তার মতো এটির স্কেমব্যান্ডিং সংজ্ঞায়িত হয়েছে।
স্টেইলেন

উত্তর:


58

মতামতগুলি সম্ভবত WETH SCHEMABINDING বিকল্পটি ব্যবহার করে তৈরি করা হয়েছে এবং এর অর্থ তারা এ জাতীয় পরিবর্তনগুলি প্রতিরোধ করার জন্য স্পষ্টতই তারযুক্ত হয়ে গেছে। দেখে মনে হচ্ছে যে স্কিমাবাইন্ডিং কাজ করেছে এবং আপনাকে এই মতামতগুলি ভাঙ্গতে বাধা দিয়েছে, ভাগ্যবান দিন, হি? আপনার ডাটাবেস প্রশাসকের সাথে যোগাযোগ করুন এবং এটি ডেটাবেসের উপর প্রভাব বলার পরে, পরিবর্তনটি করতে বলুন।

এমএসডিএন থেকে :

SCHEMABINDING

অন্তর্নিহিত সারণী বা সারণীগুলির স্কীমার সাথে দৃশ্যের আবদ্ধ। যখন স্কেমবাইন্ডিং নির্দিষ্ট করা থাকে তখন বেস টেবিল বা টেবিলগুলি এমনভাবে সংশোধন করা যায় না যা দর্শন সংজ্ঞাটিকে প্রভাবিত করবে। সংশোধন করার মতো টেবিলের উপর নির্ভরতা অপসারণ করতে ভিউ সংজ্ঞাটি নিজেই প্রথমে সংশোধন বা বাদ দিতে হবে।


1
ধন্যবাদ রেমাস, ভিউতে স্কেমেবাইন্ডিং সংজ্ঞা দেওয়া আছে। সীমাবদ্ধতা বাইপাস করার কোনও সহজ উপায় আছে বা এটিকে কাজ করার জন্য আমার কী ভিউগুলি সরানোর প্রয়োজন?
স্টেইলেন

1
আপনি এটিকে বাইপাস করতে পারবেন না, এটি এর সম্পূর্ণ উদ্দেশ্য। টেবিল পরিবর্তনগুলি রোধ করতে স্কিমেবাইন্ডিগ যুক্ত করতে কেউ অতিরিক্ত দৈর্ঘ্যে গিয়েছিল। এটি কোনও দুর্ঘটনা নয়, দেখে মনে হচ্ছে যে ব্যক্তি কী করছে। আপনি কি নিশ্চিত যে আপনি টেবিলটি পরিবর্তন করতে চান?
রিমাস রুসানু

1
হ্যাঁ, আমি নিশ্চিত =) এবং যৌক্তিকভাবে (যদিও আমি জানি যে এটি সেভাবে কাজ করে না) আমি কলামটির দৈর্ঘ্য বাড়িয়ে দিচ্ছি, যা কলামটি বাদ না দিয়ে এবং পুনরায় তৈরি না করা হলে কেবলই ঠিক হওয়া উচিত, তবে দুর্ভাগ্যক্রমে এটি তেমন নয় ... তবে আপনার সহায়তার জন্য ধন্যবাদ! = ডি
স্টেইলেন

2
আমি একই সমস্যাটি দেখছি এবং দুর্ভাগ্যক্রমে আমরা ভিউগুলি সূচীকরণের জন্য স্কেমবাইন্ডিং ভিউগুলি ব্যবহার করছি। সুতরাং আমার ক্ষেত্রে আমি স্পষ্টভাবে অন্তর্নিহিত টেবিলগুলিতে পরিবর্তনগুলি অবরুদ্ধ করার জন্য কেবল এসকিউএল সার্ভারের প্রয়োজনীয় সূচকযুক্ত ভিউগুলিতে প্রয়োজনীয়তা মেনে চলার জন্য ব্যবহার করছি না ING আমি আমার মতামতগুলি বাদ না দিয়ে এবং পুনরায় পুনরুদ্ধার না করে এটিকে বাইপাস করতে চাই।
jpierson

256
ALTER TABLE [table_name] ALTER COLUMN [column_name] varchar(150)

11
নাহ, সমস্যাটি রেমাসের মতো বলেছিল।
কোডটিতে

11
@ নীলরাড উম্মম, সম্ভবত আপনি পিএল-এসকিউএল সম্পর্কে ভাবছেন? অলটার কলাম হ'ল এসকিউএল ২০০৮ আর ২
স্কেমিডলপ

4
আমি কিছু অনুপস্থিত করছি? এত উপভোগ কেন? এটি প্রশ্নের উত্তর দেয় না।
অ্যান্ডি উইসেন্ডেঙ্গার

13
আপ-ভোটের সংখ্যাটি হতে পারে কারণ এই প্রশ্নটি বর্তমানে 'tsql এর পরিবর্তিত দৈর্ঘ্যের জন্য' শীর্ষ গুগল হিট এবং এইভাবে (আমার মতো) লোকেরা কীভাবে একটি কলামের দৈর্ঘ্য পরিবর্তন করতে পারে তা এই উত্তরটি এবং দেখুন দেখুন - দোষ ছাড়াই "ধন্যবাদ" বলার জন্য ভোট দিন (যেমন আমি আপনার মন্তব্য না পড়া পর্যন্ত হয়নি) যে প্রশ্নের শিরোনামের পরামর্শের চেয়ে প্রশ্নটি আরও সূক্ষ্ম।
ডুম্বলডেড

6

যদি কেউ এসকিউএল সার্ভার ২০০৮ এ "প্রতিলিপিযুক্ত টেবিলের কলামের প্রস্থ বৃদ্ধি করতে" চায় তবে তার " replicate_ddl=1" সম্পত্তিটি পরিবর্তন করার দরকার নেই । কেবল নীচের পদক্ষেপগুলি অনুসরণ করুন -

  1. এসএসএমএস খুলুন
  2. প্রকাশক ডাটাবেসে সংযুক্ত করুন
  3. আপনার আদেশ প্রদান করুন -- ALTER TABLE [Table_Name] ALTER COLUMN [Column_Name] varchar(22)
  4. এটা তোলে থেকে কলাম প্রস্থ বৃদ্ধি হবে varchar(x)থেকে varchar(22)এবং একই পরিবর্তন গ্রাহক দেখতে পাবে (লেনদেনের প্রতিলিপি পেয়েছি)। সুতরাং প্রতিলিপিটি পুনরায় আরম্ভ করার দরকার নেই

যারা এটি সন্ধান করছেন তাদের সকলকে এটি সহায়তা করবে আশা করি।


5

এই লিঙ্কটি দেখুন

টি-এসকিউএল কমান্ড ব্যবহার করে ডিফল্ট সীমাবদ্ধতার সাথে একটি এমএস এসকিউএল সার্ভার সারণী কলামটি পুনরায় আকার দিন বা সংশোধন করুন

যেমন একটি এসকিউএল সার্ভার সমস্যার সমাধান হতে চলেছে

টেবিল কলামে ডিফল্ট সীমাবদ্ধতা ফেলে দেওয়া বা অক্ষম করা হচ্ছে।

সারণী কলামের ডেটা টাইপ এবং / অথবা ডেটা আকার পরিবর্তন করা।

স্কুয়েল টেবিল কলামে ডিফল্ট সীমাবদ্ধতা পুনরায় তৈরি বা সক্ষম করে।

বিদায়


এবং স্কিমা বাইন্ডিং মতামতগুলি ফেলে দেওয়া এবং পুনরায় তৈরি করা দরকার।
নুরেটিন

2

আমি যে প্রোগ্রামটি ব্যবহার করছি তার সংস্করণটির সাথে এখানে কাজ করে: আপনার জন্যও এটি কাজ করতে পারে।

আমি কেবল নির্দেশ এবং আদেশটি রাখি যা এটি করে। ক্লাসটি টেবিলের নাম। আপনি এই পদ্ধতিতে এটি টেবিলের মধ্যে এটি পরিবর্তন করুন self শুধু অনুসন্ধান প্রক্রিয়া ফিরে না।


টেবিল ক্লাস দেখুন

select * from class

পুরো লেবেলগুলিতে ফিট করার জন্য ফ্যাকিড ("ফ্যাসি" হিসাবে দেখা যায়) এবং শ্রেণিবদ্ধ ("ক্লাসনু" হিসাবে দেখা যায়) কলামগুলির দৈর্ঘ্য পরিবর্তন করুন।

alter table class modify facid varchar (5);

alter table class modify classnumber varchar(11);

পার্থক্যটি দেখতে টেবিলটি আবার দেখুন

select * from class;

(পার্থক্যটি দেখতে আবার কমান্ডটি চালান)


এটি ভাল জন্য প্রকৃত টেবিল পরিবর্তন করে, তবে আরও ভাল জন্য।

কমান্ডগুলির নোট হিসাবে PS আমি এই নির্দেশাবলী তৈরি করেছি। এটি কোনও পরীক্ষা নয়, তবে এটি একটিতে সহায়তা করতে পারে :)


0

কলামের জোট পরীক্ষা করুন। এই স্ক্রিপ্টটি কোলেশনটিকে টেবিল ডিফল্টে পরিবর্তন করতে পারে। স্ক্রিপ্টে বর্তমান কোলেশন যুক্ত করুন।

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