2010-07-28 9 views
15

मेरे पास है कुंजी निम्नलिखित:क्लस्टर्ड संपत्ति को कैसे छोड़ें लेकिन तालिका में प्राथमिक कुंजी को बनाए रखें। SQL सर्वर 2005

ALTER TABLE dbo.Table ADD CONSTRAINT PK_ID PRIMARY KEY CLUSTERED 
(
ID ASC 
) 

तो मैं क्लस्टर है सूचकांक और आईडी स्तंभ पर प्राथमिक कुंजी। अब मुझे क्लस्टर्ड इंडेक्स ड्रॉप करना होगा (मैं दूसरे क्लस्टर इंडेक्स को दूसरे कॉलम पर बनाना चाहता हूं), लेकिन प्राथमिक कुंजी बनाए रखें। क्या यह संभव है?

+0

मैं सहमत @ डेमास लेकिन आप SQL सर्वर का किस संस्करण पर हैं? (उदा। एंटरप्राइज़/मानक)। क्या आपको समवर्ती उपयोगकर्ताओं के बारे में चिंता करने की ज़रूरत है? क्या आपके पास टेबल पर अन्य गैर क्लस्टर इंडेक्स हैं? –

उत्तर

17

यह एक बयान में संभव नहीं है, लेकिन क्योंकि DDL MSSQL में व्यवहार है, तो आप बस सब कुछ एक सौदे के अंदर है, जबकि यह कोई प्राथमिक कुंजी है मेज तक पहुँचने अन्य सत्र को रोकने के लिए कर सकते हैं:

begin tran 
alter table dbo.[Table] drop constraint pk_id 
alter table dbo.[Table] add constraint pk_id primary key nonclustered (id) 
commit tran 
+0

भयानक समाधान !!! बहुत बहुत धन्यवाद – skaeff

3

यह संभव नहीं है, क्योंकि सूचकांक बाधा का भौतिक कार्यान्वयन है।

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