2015-06-05 10 views
26

में डेटाबेस नाम का नाम बदलें मेरे पास "ip_ent_site" नामक डेटाबेस है। और मैं इसे उदाहरण के लिए "ip_ent_site1" का नाम बदलना चाहता हूं।एसक्यूएल सर्वर प्रबंधन स्टूडियो 2014

enter image description here

मैं राइट क्लिक किया और नाम बदलने की है, उस पर ध्यान में रखते हुए किया गया है असफल रहा।

enter image description here

किसी को भी मदद कर सकते हैं: यह त्रुटि संदेश है?

+0

@ जेसनक्लार्क - I लगता है कि आपका लिंक इस पृष्ठ पर वापस लिंक करता है ... –

उत्तर

7

नाम बदलने से पहले, एकल उपयोगकर्ता मोड में डेटाबेस सेट MSDN

USE master; 
GO 
ALTER DATABASE ip_ent_site 
SET SINGLE_USER 
WITH ROLLBACK IMMEDIATE; 

तब इसका नाम बदलना

USE master 
GO 
ALTER DATABASE ip_ent_site 
Modify Name = ip_ent_site1 
GO 

और फिर यह बहु उपयोगकर्ता मोड

ALTER DATABASE ip_ent_site1 
SET MULTI_USER; 
+1

केवल पढ़ने के लिए डेटाबेस सेट करना आवश्यक नहीं है यदि आप अस्थायी रूप से इसे एकल_user पर सेट करते हैं। इसके अलावा, आपने इसे पढ़ने से हटाने के लिए स्क्रिप्ट में नहीं रखा !! – ErikE

+0

आप सही @ErikE हैं। मैंने जवाब संपादित किया। अच्छी पकड़। – sqluser

0

निष्पादित व्यवस्था करने के लिए वापस रख डाटाबेस का उपयोग करने वाले सत्रों को खोजने के लिए प्रक्रिया sp_who2 एएसई और फिर kill कमांड के साथ सत्र बंद करें या सत्रों को मार दें।

25

ऐसा इसलिए है क्योंकि खुले लेनदेन हैं। वे लेन-देन मारा जा सकता है, तो यह आसानी से इस एसक्यूएल

ALTER DATABASE ip_ent_site 
SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
GO 
sp_rename 'ip_ent_site', 'new_db_name' ,'DATABASE'; 
GO 
ALTER DATABASE new_db_name 
SET MULTI_USER 
GO 
+1

क्या आप बता सकते हैं कि प्रत्येक कथन क्या है, मैं जानना बहुत उत्सुक हूं, अग्रिम धन्यवाद –

+0

पहला बयान डीबी को एकल उपयोगकर्ता को सेट करता है और सभी खुले कनेक्शन को मारता है और सभी खुले लेनदेन को वापस चलाता है। दूसरा बयान डीबी का नाम बदलता है। अंतिम कथन उपयोगकर्ता कनेक्शन के लिए नामित डीबी खुलता है – Raj

+3

डाउनवॉटिंग ठीक है। लेकिन क्या कोई भी नीचे हट सकता है, समझाया जा सकता है, तो हम सभी कुछ नया सीखते हैं? – Raj

10

कारण यह है कि डेटाबेस जब आप इसे का नाम बदलने रहे हैं डाटाबेस के लिए किसी भी अन्य कनेक्शन/लेन-देन को रोकने के लिए है के साथ किया जा सकता है। डेटाबेस नाम का नाम बदलने के

ALTER DATABASE [ip_ent_site] SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
GO 

ALTER DATABASE [ip_ent_site] MODIFY NAME = [ip_ent_site_new] 
GO 

ALTER DATABASE [ip_ent_site_new] SET MULTI_USER;  
GO 
+0

मैं डेटाबेस का नाम बदलने के लिए इस क्वेरी का उपयोग कर रहा हूं, यह सुनिश्चित नहीं है कि उत्तर उपयोगी क्यों नहीं है। –

+0

यह वैध एसक्यूएल है और तीसरे कथन को छोड़कर नौकरी करता है, नए नाम का उपयोग करने की आवश्यकता है। आश्चर्य है कि किसने नीचे और क्यों। – Raj

1

यह सबसे आसान तरीका:

एक साधारण स्क्रिप्ट db पर एक ताला प्राप्त करने के लिए। बस यह आदेश चलाने से पहले सुनिश्चित करें कि आपने सभी क्वेरी विंडो बंद कर दी हैं।

EXEC sp_renamedb 'NEW_NAME', 'NEW_NAME'

+1

अच्छा एक-लाइनर लेकिन: 'यह सुविधा माइक्रोसॉफ्ट एसक्यूएल सर्वर के भविष्य के संस्करण में हटा दी जाएगी। इस सुविधा का उपयोग नए विकास कार्यों में करने से बचें, और वर्तमान में इस सुविधा का उपयोग करने वाले अनुप्रयोगों को संशोधित करने की योजना बनाएं। इसके बजाय वैकल्पिक डाटाबेस नाम का प्रयोग करें – msysmilu

3

सही करने की क्षमता पर क्लिक करें सक्षम और नाम बदलने के लिए

डीबी:

  1. बंद सभी क्वेरी विंडोज
  2. राइट क्लिक & नाम बदलने डीबी
0

नाम बदलें SQLDatabase नाम का उपयोग करना क्वेरी

उपयोग [गुरु] जाना

ऑल्टर डाटाबेस Old_database_name संशोधित नाम = New_database_name

या

sp_renameDB 'old_dbname', ' new_dbname '

संबंधित मुद्दे