এসকিউএলে টেবিলের স্কিমা নাম পরিবর্তন করুন


175

আমি Employeesডাটাবেসে টেবিলের স্কিমা নাম পরিবর্তন করতে চাই । বর্তমান সারণীতে Employeesডাটাবেসের স্কিমা নামটি dboআমি এটিতে পরিবর্তন করতে চাই exe। আমি এটা কিভাবে করবো ?

উদাহরণ:

থেকে

dbo.Employees

প্রতি

exe.Employees

আমি এই প্রশ্নের সাথে চেষ্টা করেছি:

ALTER SCHEMA exe TRANSFER dbo.Employees

তবে এটি আমাকে একটি ত্রুটি দেয়:

স্কিমা 'এক্স' পরিবর্তন করতে পারবেন না, কারণ এটি বিদ্যমান নেই বা আপনার অনুমতি নেই।

আমি কি থেকে বাতিল হলাম?



1
স্কিমা এক্স কি বিদ্যমান?
জেমস কালশো

না আমি তৈরি করিনি। এটি তৈরি করতে আমার কী করা উচিত?
চ্যাচমিন


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

উত্তর:


272

স্কিমা তৈরি করুন:

IF (NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'exe')) 
BEGIN
    EXEC ('CREATE SCHEMA [exe] AUTHORIZATION [dbo]')
END

বিকল্প স্কিমা:

ALTER SCHEMA exe 
    TRANSFER dbo.Employees

3
Sys.scemas এবং EXEC (...) ফাংশনটি কি আপনি ব্যাখ্যা করতে পারেন?
চ্যাচমিন

10
sys.schemasডাটাবেসের জন্য সমস্ত স্কিমা ধারণ করে এমন একটি সারণী। এক্সিকিউট ('...') সবেমাত্র একটি গতিশীল এসকিউএল কল চালায়, এক্ষেত্রে এটি প্রয়োজন কারণ একটি ক্রিয়েট স্কেমা কমান্ড অবশ্যই একটি ক্যোয়ারী ব্যাচের প্রথম বিবৃতি হতে হবে এবং ডায়নামিক এসকিউএল আপনাকে পাওয়ার সাথে সাথে সম্পাদন করবে।
এরিক জে। দাম

জন্য সব টেবিল , চেক এই এবং এই একক বিবৃতিতে এটা করতে, আশা কেউ সাহায্য করে।
শাইজুট

অল্টার স্কিম ব্যবহার করা অত্যন্ত ধীর বলে মনে হচ্ছে। (300 সারি সহ একটি ছোট টেবিল স্থানান্তর করার জন্য আমি 3 মিনিটের পরে এটিকে থামিয়ে দিয়েছি Instead) পরিবর্তে, আমি বেছে বেছে বেছে বেছে বেছে বেছে বেছেছিলাম ডিবিও.এম্পলয়েস থেকে
পঞ্চম উপাদান

29

নীচে চেষ্টা করুন

declare @sql varchar(8000), @table varchar(1000), @oldschema varchar(1000), @newschema   varchar(1000)

  set @oldschema = 'dbo'
  set @newschema = 'exe'

 while exists(select * from sys.tables where schema_name(schema_id) = @oldschema)

  begin
      select @table = name from sys.tables 
      where object_id in(select min(object_id) from sys.tables where  schema_name(schema_id)  = @oldschema)

    set @sql = 'alter schema ' + @newschema + ' transfer ' + @oldschema + '.' + @table

   exec(@sql)
 end

set @sql = 'alter schema [' + @newschema + '] transfer [' + @oldschema + '].' + @tableকিছু বিশেষ শব্দ / অক্ষর যাতে ত্রুটি সৃষ্টি না করে তা নিশ্চিত করতে আমাকে ব্যবহার করতে হয়েছিল।
স্টোনিভ

21
ALTER SCHEMA NewSchema TRANSFER [OldSchema].[TableName]

ALTER SCHEMAএসকিউএল- এ কোয়েরিটি ব্যবহার করার সময় আমাকে সর্বদা বন্ধনী ব্যবহার করতে হয়, বা আমি একটি ত্রুটি বার্তা পাই।


5

এসএসএমএসের মাধ্যমে আমি এর মাধ্যমে একটি নতুন স্কিমা তৈরি করেছি:

  • আমার সার্ভারের মধ্যে অবজেক্ট এক্সপ্লোরারে সুরক্ষা ফোল্ডারটি ক্লিক করা,
  • ডান ক্লিক স্কিমাস
  • "নতুন স্কিমা ..." নির্বাচিত
  • আমার নতুন স্কিমাটির নাম দেওয়া হয়েছে (আপনার ক্ষেত্রে এক্সিকিউশন)
  • ঠিক আছে আঘাত

আমি এই পোস্টটি স্কিমা পরিবর্তন করার জন্য পেয়েছি, কিন্তু নতুন স্কিমাতে পরিবর্তন করার চেষ্টা করার সময় একই অনুমতির ত্রুটিও পেয়েছিলাম। আমার এসএসএমএসে আমার বেশ কয়েকটি ডাটাবেস তালিকাভুক্ত রয়েছে, তাই আমি কেবল ডাটাবেস নির্দিষ্ট করার চেষ্টা করেছি এবং এটি কাজ করেছে:

USE (yourservername)  
ALTER SCHEMA exe TRANSFER dbo.Employees 

3

আপনার কোডটি হ'ল:

FROM
 dbo.Employees
TO
 exe.Employees

আমি এই প্রশ্নের সাথে চেষ্টা করেছি।

ALTER SCHEMA exe TRANSFER dbo.Employees

শুধু এটি লিখুন create schema exeএবং সম্পাদন করুন



2

এমএসডিএন দেখুন ...

CREATE SCHEMA: http://msdn.microsoft.com/en-us/library/ms189462.aspx

তারপর

ALTER SCHEMA: http://msdn.microsoft.com/en-us/library/ms173423.aspx

অথবা আপনি এটি পরীক্ষা করে দেখতে পারেন ...

আমি কীভাবে টি-এসকিউএল-তে কোনও টেবিলকে স্কিমাতে স্থানান্তর করব


আমার পরিস্থিতিতে কীভাবে স্কিমা তৈরি করবেন তার উদাহরণ আপনি আমাকে দেখাতে পারেন?
চ্যাম্পিয়ন

0

স্কুএলে অবজেক্টগুলির নামকরণ করতে খুব সতর্ক থাকুন আপনি যা করছেন তার সাথে পুরোপুরি দূরে না থাকলে আপনি নির্ভরতা ব্যর্থ করতে পারেন। এই বলে যে জিনিসগুলির নামকরণের জন্য এটি সহজেই (খুব বেশি) কাজ করে তবে আপনার পরিবেশে উপযুক্ত অ্যাক্সেস পাওয়া যায়:

exec sp_rename 'Nameofobject', 'ReNameofobject'

1
দুর্ভাগ্যক্রমে এটি এই দৃশ্যে কাজ করবে না, sp_rename কেবল কোনও জিনিসের [নাম] মান পরিবর্তনের জন্য কাজ করে। আপনি এটির সাথে স্কিমা পরিবর্তন করতে পারবেন না। আপনি চেষ্টা যদি exec sp_rename 'dbo.Employees', 'exe.Employees'তোমার নাম হবে [dbo] [exe.Employees]।
এরিক জে দাম

ALTER SCHEMA (স্কিমার নাম) ট্রান্সফার (স্কিমা নাম)। (অবজেক্টনেম);
djangojazz

এছাড়াও মনে রাখবেন যে আপনি যখন কোনও টেবিলের স্কিমা পরিবর্তন করবেন, সেই টেবিলটি ব্যবহার করে এমন কোনও দৃশ্য আপডেট হবে না । এই ভিউগুলিতে আপনাকে ম্যানুয়ালি পাঠ্য (স্কিমার নাম) আপডেট করতে হবে। (দীর্ঘশ্বাস ...)
মাইক গ্লেডহিল

0

আপনি এসএসএমএসে সঠিক ডাটাবেস প্রসঙ্গে আছেন তা নিশ্চিত করুন। আপনার মতো একই ত্রুটি পেয়েছি, তবে আমি জানতাম যে স্কিমার ইতিমধ্যে বিদ্যমান। বুঝতে পারিনি যে আমি 'মাস্টার' প্রসঙ্গে আছি। আমি আমার ডাটাবেসে প্রসঙ্গ পরিবর্তন করার পরে ALTER কাজ করেছিল।


0

ক্ষেত্রে, কেউ নিম্ন সংস্করণ খুঁজছেন -

এসকিউএল সার্ভার 2000 এর জন্য:

sp_changeobjectowner @objname = 'dbo.Employess', @ newwowner = 'exe'

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