কলাম এসকিউএল সার্ভার ২০০৮ এর নাম পরিবর্তন করুন


652

আমি এসকিউএল সার্ভার 2008 এবং নাভিচ্যাট ব্যবহার করছি। এসকিউএল ব্যবহার করে আমার একটি টেবিলের একটি কলামের নাম পরিবর্তন করতে হবে।

ALTER TABLE table_name RENAME COLUMN old_name to new_name;

এই বিবৃতি কাজ করে না।


2
খুঁজে বার করো stackoverflow.com/questions/174582/...
swetha

5
মনে রাখবেন যে এটি # 174582 প্রশ্নের স্বরলিপি নয় যা সোঠা লিঙ্ক করেছে: এটি এমএস এসকিউএল-নির্দিষ্ট, এটি একটি ডেটাবেস-অজোনস্টিক।

উত্তর:


1193

ব্যবহার sp_rename

EXEC sp_RENAME 'TableName.OldColumnName' , 'NewColumnName', 'COLUMN'

দেখুন: এসকিউএল সার্ভার - কীভাবে একটি কলামের নাম বা সারণির নাম পরিবর্তন করতে হবে

ডকুমেন্টেশন: sp_rename (লেনদেন-এসকিউএল)

আপনার ক্ষেত্রে এটি হবে:

EXEC sp_RENAME 'table_name.old_name', 'new_name', 'COLUMN'

আপনার মানগুলি বদ্ধ করার জন্য একক উদ্ধৃতি ব্যবহার করতে ভুলবেন না।


24
মনে রাখবেন যে নিউ কলামনামটি বন্ধনীগুলিতে রাখা উচিত নয়, কারণ এসকিউএল সার্ভার [[[নিউ কলামনাম]]] নতুন কলামের নাম হিসাবে ব্যবহার করবে। এছাড়াও, sp_renameটি EXEC বা EXECUTE দ্বারা উপসর্গ করা উচিত।
মার্ক ফ্রিম্যান

29
আপনাকে প্রথম প্যারামিটারে কলামটি সনাক্ত করতে অনুমতি দেওয়া হয়েছে এবং উত্সাহ দেওয়া হচ্ছে, তবে দ্বিতীয় প্যারামিটারে নয়। এটি পছন্দ করুন:EXEC sp_RENAME '[TableName].[OldColumnName]', 'NewColumnName', 'COLUMN'
নীলস ব্রিঞ্চ

2
আপনি নিজের উত্তরে জানানো হচ্ছে যে এই সঞ্চিত পদ্ধতি হ্যান্ডলগুলি ডিফল্ট মান, নাল ইত্যাদি contraints পুনঃনামকরণ করছেন যখন, যেমন একটি প্লেইন উল্টোদিকে alter tableযে যদি এই ধরনের সীমাবদ্ধতা অস্তিত্ব ব্যর্থ হবে।
টুনচে Göncüoğlu

4
মনে রাখবেন যে আপনি যদি 'টেবিল_নাম.নিউ_নাম' ব্যবহার করেন তবে তা [স্কিমা] হয়ে যায় [[টেবিল_নাম] [[টেবিল_নাম.নউ_নাম] - সুতরাং সেই টেবিলের নামটি নতুন নামে রাখবেন না! (এটি এই উত্তরে সঠিক, কেবল উঁকি দেওয়ার জন্য একটি নোট যুক্ত করুন)
মার্ক শুলথিস

1
ডাটাবেসে যদি স্কিমা থাকে তবে আপনাকে টেবিলের নামের আগে স্কিমা নাম রাখতে হবে: EXEC sp_RENAME 'স্কিমা_নাম.সামগ্রী_নামকী_নামা', 'নতুন_নাম', 'কলম'
আমিন

106

বিকল্প হিসাবে SQL, আপনি মাইক্রোসফ্ট এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে এটি করতে পারেন। জিইউআই ব্যবহারের কয়েকটি দ্রুত উপায় এখানে রয়েছে:

প্রথম উপায়

কলামটিতে ধীরে ধীরে ডাবল ক্লিক করুন। কলামের নাম একটি সম্পাদনাযোগ্য পাঠ্য বাক্সে পরিণত হবে।


দ্বিতীয় উপায়

কলামে ডান ক্লিক করুন এবং প্রসঙ্গ মেনু থেকে নাম পরিবর্তন করুন choose

উদাহরণ স্বরূপ:

কলামের নাম পুনরায় নামকরণ করতে


তৃতীয় উপায়

আপনি যখন একসাথে একাধিক কলামের নাম পরিবর্তন করতে পারেন তখন এই উপায়টি পছন্দনীয়।

  1. টেবিলটিতে ডান-ক্লিক করুন যাতে কলাম রয়েছে যার নাম পরিবর্তনকরণ প্রয়োজন।
  2. ডিজাইন ক্লিক করুন ।
  3. টেবিল ডিজাইন প্যানেলে, আপনি যে কলামের নামটি পরিবর্তন করতে চান তার পাঠ্যবক্সটি ক্লিক করুন এবং সম্পাদনা করুন।

উদাহরণ স্বরূপ: এমএসএসএমএস সারণী নকশার উদাহরণ

দ্রষ্টব্য: আমি জানি ওপি বিশেষত এসকিউএল সমাধানের জন্য জিজ্ঞাসা করেছিল, ভেবেছিল এটি অন্যকে সহায়তা করতে পারে :)


1
অথবা ব্যবহারকারীর সুবিধাগুলি নেই।
ক্যারি কেন্ডাল

6
কখনই না। আপনি টেবিলটি অনুলিপি করছেন, তারপরে পুরানোটিটি নামিয়ে নামকরণ করছেন। কোনও টেবিল সম্পর্কে কিছু পরিবর্তন করতে GUI কখনও কখনও ব্যবহার করবেন না।
এইচএলজিইএম

6
@ এইচএলজিইএম এটি বেশ বড় কম্বল স্টেটমেন্ট। যাই হোক না কেন, আপনি যা ব্যাখ্যা করেছেন তার কোনও সংস্থান সরবরাহ করতে পারেন? যেমন টেবিল বাদ দেওয়া ইত্যাদি
ক্যারি কেন্ডাল

2
@ ক্যারি কেন্ডল, জিইউআই থেকে পরিবর্তনের পরিবর্তে স্ক্রিপ্ট তৈরি করুন এবং আপনি দেখতে পাবেন। এ কারণেই sp_rename বা পরিবর্তন টেবিল ব্যবহারের চেয়ে GUI কে একটি বৃহত টেবিলের সাথে পরিবর্তন করতে খুব ধীর। তদ্ব্যতীত, ডাটাবেস কাঠামোর পরিবর্তনগুলি কোড পরিবর্তন এবং অন্য কোডের মতো উত্স নিয়ন্ত্রণে থাকা উচিত তাই স্ক্রিপ্টে থাকা উচিত। এটি বিশেষত গুরুত্বপূর্ণ যদি আপনি ডেভ প্রোডাকশন ডাটাবেস অধিকারকে সারণী পরিবর্তন করার অনুমতি না দেন তবে যে কোনও ক্ষেত্রে আপনাকে স্ক্রিপ্টের প্রয়োজন হবে। এবং আপনি প্রোডে কয়েক মিলিয়ন রেকর্ড সহ টেবিলগুলি অনুলিপি করা, ছেড়ে দেওয়া এবং পুনরায় তৈরি করতে চান না।
এইচএলজিইএম

18
আমি স্রেফ একটি এসকিউএল সার্ভার 2012 টেবিলটির নাম পরিবর্তন করে প্রোফাইল স্ট্রিং ব্যবহার করে ম্যানেজমেন্ট স্টুডিও ব্যবহার করেছি এবং এটি sp_rename ব্যবহার করেছে। যদিও আগের সংস্করণগুলির জন্য কথা বলতে পারে না।
স্টিভ ডাউলিং

58

চেষ্টা করুন:

EXEC sp_rename 'TableName.OldName', 'NewName', 'COLUMN'

27

আপনার টেবিলের স্কিমাও নির্দিষ্ট করা উচিত বা আপনি এই ত্রুটিটি পেতে পারেন:

এমএসজি 15248, স্তর 11, রাজ্য 1, প্রক্রিয়া sp_rename, লাইন 238 হয় প্যারামিটার @objname অস্পষ্ট বা দাবিযুক্ত @objtype (COLUMN) ভুল।

এটি যদি কোনও ডিপ্লোয়মেন্ট স্ক্রিপ্ট হয় তবে আমি এটিতে কিছু অতিরিক্ত সুরক্ষা যুক্ত করার পরামর্শ দেব।

IF EXISTS (
        SELECT 1
        FROM sys.columns
        WHERE
            name = 'OldColumnName' AND
            object_name(object_id) = 'TableName'
    ) AND
    NOT EXISTS (
        SELECT 1
        FROM sys.columns
        WHERE
            name = 'NewColumnName' AND
            object_name(object_id) = 'TableName'
    )
    EXEC sp_RENAME 'SchemaName.TableName.OldColumnName', 'NewColumnName', 'COLUMN';

আমি এই নিরাপদ পদ্ধতির পছন্দ করি, মাইগ্রেশন লেখার জন্য ভাল যা বিভিন্ন পরিবেশে চলতে পারে / নাও পারে।
আদিল এইচ। রাজা

অস্তিত্ব যাচাইয়ের মতো, আমাকে অন্যান্য স্ক্রিপ্টগুলির একটি ব্যাচের অংশ হিসাবে পুনরায় পুনরায় কাজ করতে অনুভব করে
অজানা

19

ইতিমধ্যে অন্তর্নির্মিত ফাংশনটি ব্যবহার করা ভাল পরামর্শ হবে তবে এর অন্য উপায়টি হ'ল:

  1. একই ডেটা টাইপ এবং নতুন NAME সহ একটি নতুন কলাম তৈরি করুন।
  2. সমস্ত ডেটা নতুন কলামে অনুলিপি করতে একটি আপডেট / INSERT বিবৃতি চালান।
  3. পুরানো কলামটি ফেলে দিন।

sp_renameএটি ব্যবহার করার পিছনে সুবিধা হ'ল এটি এর সাথে সম্পর্কিত সমস্ত সম্পর্কের যত্ন নেয়।

ডকুমেন্টেশন থেকে :

sp_rename স্বয়ংক্রিয়ভাবে সম্পর্কিত সূচকটির নতুন নামকরণ করে যখনই কোনও প্রাথমিক কী বা অনন্য প্রতিবন্ধকতার নাম পরিবর্তন করা হয়। যদি কোনও নামকরণের সূচকটি একটি মূল কী বাধাটির সাথে আবদ্ধ থাকে তবে প্রাথমিক কী বাধাও স্বয়ংক্রিয়ভাবে sp_rename দ্বারা নামকরণ করা হয়। sp_rename প্রাথমিক এবং গৌণ এক্সএমএল সূচকগুলির নাম পরিবর্তন করতে ব্যবহৃত হতে পারে।


* পদক্ষেপ 1 এ NULL কে নতুন কলামে অনুমতি দেওয়া উচিত * নতুন কলাম পরিবর্তন করতে
ptionচ্ছিকভাবে

16

আপনি sp_renameএকটি কলামটির নাম পরিবর্তন করতে ব্যবহার করতে পারেন ।

USE YourDatabase;  
GO  
EXEC sp_rename 'TableName.OldColumnName', 'NewColumnName', 'COLUMN';  
GO  

প্রথম প্যারামিটার বস্তুর পরিবর্তন করা হয়, দ্বিতীয় প্যারামিটারটি নতুন নাম যে বস্তুর দেওয়া হবে, এবং তৃতীয় প্যারামিটারটি কলামটি জানায় যে সার্ভার এই পুনঃনামকরণ জন্য column, এবং এছাড়াও নামান্তর করতে ব্যবহার করা যেতে পারে tables, indexএবং alias data type


2
বুঝতে পারছেন না, আপনি sp_rename সম্পর্কে 5 টির মধ্যে 4 টিরও উপরে নতুন উত্তর যুক্ত করলেন কেন ...?
পাভেল জাজ্পস্কি

3
এক পর্যায়ে, কাউকে এখানে প্যারামিটারটির অপারেশন সম্পর্কে ব্যাখ্যা করতে হবে, কেউ এটি করেনি
আলেকজান্দ্রে

1
হ্যাঁ, আসলে আপনি ঠিক বলেছেন, আমার কাছে এটি এতটাই সুস্পষ্ট তবে নতুন ছেলেদের পক্ষে এটি নাও হতে পারে।
পাভেল জাজ্পস্কি

12

যেহেতু আমি প্রায়শই এখানে আসি এবং তারপরে বন্ধনীগুলি কীভাবে ব্যবহার করব তা ভাবছি, এই উত্তরটি আমার মতো তাদের পক্ষে কার্যকর হতে পারে।

EXEC sp_rename '[DB].[dbo].[Tablename].OldColumnName', 'NewColumnName', 'COLUMN'; 
  • OldColumnNameমধ্যে রাখা যাবে না []। এটি কাজ করবে না.
  • করা উচিত NewColumnNameমধ্যে [], তা হবে [[NewColumnName]]

3

এসকিএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে কিছু সিস্টেম সংজ্ঞায়িত স্টোরড
প্রসেসারস (এসপি) রয়েছে যার মধ্যে একটি কলামের নাম পরিবর্তন করতে ব্যবহৃত হয় SP এসপিটি sp_rename

সিনট্যাক্স: sp_rename '[টেবিলের নাম] .old_column_name', 'new_column_name'
আরও সহায়তার জন্য এই নিবন্ধটি উল্লেখ করুন: মাইক্রোসফ্ট ডক্স দ্বারা sp_rename

দ্রষ্টব্য: এই এসপি কার্যকর করার সময় স্কেল সার্ভারটি আপনাকে সাবধানতা হিসাবে একটি সতর্কতা বার্তা দেবে : সাবধানতা: কোনও বস্তুর নামের কোনও অংশ পরিবর্তন করা স্ক্রিপ্টগুলি এবং সঞ্চিত পদ্ধতিগুলিকে ভেঙে ফেলতে পারে । এটি কলামের সাথে জড়িত আপনার নিজের এসপি লিখে থাকলেই এটি গুরুত্বপূর্ণ his সারণীতে আপনি পরিবর্তন করতে চলেছেন।


2

@ তাহেরের উন্নত সংস্করণ

DECLARE @SchemaName AS VARCHAR(128)
DECLARE @TableName AS VARCHAR(128)
DECLARE @OldColumnName AS VARCHAR(128)
DECLARE @NewColumnName AS VARCHAR(128)
DECLARE @ParamValue AS VARCHAR(1000)

SET @SchemaName = 'dbo'
SET @TableName = 'tableName'
SET @OldColumnName = 'OldColumnName'
SET @NewColumnName = 'NewColumnName'
SET @ParamValue = @SchemaName + '.' + @TableName + '.' + @OldColumnName

IF EXISTS
(
    SELECT 1 FROM sys.columns WHERE name = @OldColumnName AND OBJECT_NAME(object_id) = @TableName
)
AND NOT EXISTS
(
    SELECT 1 FROM sys.columns WHERE name = @NewColumnName AND OBJECT_NAME(object_id) = @TableName
)
BEGIN
    EXEC sp_rename @ParamValue, @NewColumnName, 'COLUMN';
END

0

অথবা আপনি এসকিউএল ম্যানেজমেন্ট স্টুডিওতে কলামে স্লো-ক্লিক করতে পারেন এবং এটি ইউআইয়ের মাধ্যমে পুনরায় নামকরণ করতে পারেন ...


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