এসকিউএল সার্ভার ২০০৮ আর 2 এ ডাটাবেসটির নামকরণের ক্ষেত্রে ত্রুটি


164

আমি এই ক্যোয়ারীটি ডাটাবেসটির নাম পরিবর্তন করতে ব্যবহার করছি:

ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]

উত্তেজিত করার সময় এটি ত্রুটি দেখায়:

এমএসজি 5030, স্তর 16, রাজ্য 2, লাইন 1
ক্রিয়াকলাপ সম্পাদনের জন্য ডাটাবেসটিকে একচেটিয়াভাবে লক করা যায়নি।

আমার প্রশ্নের সাথে কিছু ভুল আছে?


4
ক্যোয়ারিতে কোনও ভুল নেই - ত্রুটিটি আপনাকে বলছে যে অন্যান্য সংযোগগুলি ডাটাবেসের সাথে সংযুক্ত রয়েছে, সুতরাং আপনাকে এই মুহুর্তে নাম পরিবর্তন করার অনুমতি নেই।
ড্যামিয়েন_ও_ অবিশ্বাস্য

1
আপনি যদি এসএসএমএস থেকে এটি করছেন, তা নিশ্চিত করুন যে আপনার কাছে ডিবিটির বিরুদ্ধে কোনও কোয়েরি উইন্ডো খোলা নেই, কারণ এটি একটি পৃথক সংযোগ যা ডিবিতে একটি লক রাখে।
jleach

উত্তর:


329

আপনি একক ব্যবহারকারী মোডে ডাটাবেস সেট করার চেষ্টা করতে পারেন।

https://stackoverflow.com/a/11624/2408095

use master
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE    
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER

1
হয় WITH ROLLBACK IMMEDIATEপ্রয়োজনীয়। আমি যদি এটি একেবারেই ব্যবহার না করি তবে এটি সমস্যার কারণ হবে?
ব্যবহারকারী 13892

পার্টিতে দেরি করে ফেলুন, তবে এই প্রশ্নের উত্তর দেওয়ার জন্য: হ্যাঁ, WITH ROLLBACK IMMEDIATEএই ক্রিয়াকলাপের অখণ্ডতা নিশ্চিত করার জন্য অন্যান্য ব্যবহারকারীরা যে ডেটাবেসটি চালু রয়েছে সেগুলি পরিবর্তন করার সময় আপনার ব্যবহার করা উচিত । ডাটাবেসটিকে আবার MULTI_USER মোডে সেট করার সময় এটি প্রয়োজনীয় নয় কারণ ডাটাবেসটি ইতিমধ্যে SINGLE_USER মোডে রয়েছে এবং যে কোনও উপায়ে যে কোনও লেনদেন চালাতে সক্ষম আপনি একমাত্র ব্যবহারকারী।
হাকান ইল্ডিজহান

61
  1. একক মোডে ডাটাবেস সেট করুন:

    ALTER DATABASE dbName
    SET SINGLE_USER WITH ROLLBACK IMMEDIATE
  2. ডাটাবেসটির নতুন নামকরণের চেষ্টা করুন:

    ALTER DATABASE dbName MODIFY NAME = NewName
  3. মাল্টিউজার মোডে ডাটাবেস সেট করুন:

    ALTER DATABASE NewName
    SET MULTI_USER WITH ROLLBACK IMMEDIATE

@ সামিমেহেদী আমাকে মাল্টিউসার ব্যবহার করা উচিত WITH ROLLBACk IMMEDIATE?
বেনডেগ

29

ইন SQL সার্ভার ম্যানেজমেন্ট স্টুডিও (SSMS) :

আপনি অবজেক্ট এক্সপ্লোরারে আপনার ডাটাবেসটিতে ডান ক্লিক করতে পারেন এবং বৈশিষ্ট্যে যেতে পারেন । সেখান থেকে অপশনে যান । সব পথ নিচে স্ক্রোল করুন এবং সেট অ্যাক্সেস সীমাবদ্ধ করুন থেকে SINGLE_USER । আপনার ডাটাবেসের নাম পরিবর্তন করুন, তারপরে ফিরে যান এবং এটি MULTI_USER এ সেট করুন ।


দ্রুত এবং সহজ!
ani627

এটা নিখুঁত. এসকিউএল সার্ভারের সাথে কাজ করা 2017
অ্যাডাম ম্যাকিয়েরিজিস্কি

19

প্রথমে আপনার ডাটাবেসে সমস্ত সংযোগ বন্ধ করার চেষ্টা করুন:

use master
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE 

ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]

ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER

এখান থেকে নেওয়া হয়েছে


4

এটি আমার জন্য এটি করেছে:

USE [master];
GO
ALTER DATABASE [OldDataBaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
EXEC sp_renamedb N'OldDataBaseName', N'NewDataBaseName';


-- Add users again
ALTER DATABASE [NewDataBaseName] SET MULTI_USER
GO

4

কারণ অন্য কেউ ডাটাবেস অ্যাক্সেস করছে। ডাটাবেসটিকে একক ব্যবহারকারী মোডে রাখুন এবং এরপরে নাম পরিবর্তন করুন।

এই লিঙ্কটি সহায়তা করতে পারে:
http://msdn.microsoft.com/en-IN/library/ms345378(v=sql.105).aspx

এবং এছাড়াও:
http://msdn.microsoft.com/en-us/library/ms345378.aspx


2

অন্যান্য উত্তরগুলিতে প্রদর্শিত হিসাবে একক ব্যবহারকারী মোডে ডাটাবেস পরিবর্তন করুন

কখনও কখনও, একক ব্যবহারকারী মোডে রূপান্তর করার পরেও, ডাটাবেসে অনুমোদিত একমাত্র সংযোগটি ব্যবহার হতে পারে।

একক ব্যবহারকারী মোডে রূপান্তর করার পরেও কোনও সংযোগ বন্ধ করার চেষ্টা করুন:

select * from master.sys.sysprocesses
where spid>50 -- don't want system sessions
  and dbid = DB_ID('BOSEVIKRAM')

ফলাফলগুলি দেখুন এবং প্রশ্নের মধ্যে থাকা ডাটাবেসের সাথে সংযোগের আইডি দেখুন।

তারপরে এই সংযোগটি বন্ধ করতে নীচের কমান্ডটি ব্যবহার করুন (ডাটাবেসটি এখন একক ব্যবহারকারী মোডে থাকায় কেবল একটি হওয়া উচিত)

কিল সংযোগ_আইডি

1 ম ক্যোয়ারীর ফলাফলগুলিতে সংযোগ_আইডি আইডি সহ প্রতিস্থাপন করুন


1

1. ডেটাবেস 1 ম একক ব্যবহারকারী মোড সেট

ALTER ডেটাবেস BOSEVIKRAM সেট SINGLE_USER সঙ্গে রোলব্যাক অবিলম্বে

2. ডেটাবেস পুনরায় নামকরণ করুন

ALTER ডেটাবেস BOSEVIKRAM সংশোধন NAME এর = [BOSEVIKRAM_Deleted]

৩.ডাটাবে সেট মালিউসার মোড

ALTER ডেটাবেস BOSEVIKRAM_Deleted সেট MULTI_USER সঙ্গে রোলব্যাক অবিলম্বে


0

সমস্ত সংযোগ বন্ধ করার আরেকটি উপায়:

প্রশাসনিক সরঞ্জামসমূহ> স্থানীয় পরিষেবাগুলি দেখুন

"এসকিউএল সার্ভার (এমএসএসকিউএলএসভার)" পরিষেবা বন্ধ করুন / শুরু করুন


-1
use master

ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE  

exec sp_renamedb 'BOSEVIKRAM','BOSEVIKRAM_Deleted'

ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER

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