2013-02-25 11 views
8

मैं बंद करने के लिए एक स्तंभ का है पहचान गुण सेट करना चाहते हैं और एक स्पष्ट मूल्य पर again.I've इस क्वेरी लिखा करने के लिए इसे स्थापित कर डालने के बाद:पहचान सेटिंग को चालू या बंद करने के लिए एसक्यूएल सर्वर में

SET IDENTITY_INSERT Tbl_Cartoons OFF 

हालांकि यह सफलतापूर्वक निष्पादित करता है, तालिका डिज़ाइन में कुछ भी नहीं बदलता है। कृपया एक समाधान का सुझाव दें, यह वास्तव में महत्वपूर्ण है।

उत्तर

5

आपके द्वारा दी गई सभी पंक्तियां पहचान को अक्षम करना है ताकि आप अपने पहचान कॉलम में विशिष्ट मान डाल सकें - आम तौर पर यह एक-ऑफ के लिए आवश्यक है जैसे डेटा को स्थानांतरित करना। कॉलम पर पहचान अभी भी है, इसकी परवाह नहीं की जा रही है। संकल्पनात्मक रूप से यह ट्रिगर्स को अक्षम करने और हटाने के बीच के अंतर के समान है।

कॉलम से पहचान को हटाने के लिए पूरी तरह से कठिन है। The question covers it, लेकिन मूल विचार यह है कि आपको एक नया कॉलम बनाना है, डेटा को कॉपी करना है, फिर पहचान कॉलम को हटा देना है।

+0

धन्यवाद एक बहुत ... –

6

SET IDENTITY_INSERT सेट करने वाले सत्र को स्पष्ट मान दर्ज करने की अनुमति है।

लेकिन कॉलम अभी भी एक पहचान कॉलम है। यह सिर्फ इतना है कि आपका सत्र पहचान बाधा को अनदेखा कर सकता है।

1

आईडी कॉलम के मूल्य को स्पष्ट रूप से सेट करने में सक्षम होने के लिए पहचान_इनर्ट सेट करें। स्वत: असाइन करने के लिए इसे फिर से सेट करें।

22

आप वास्तव में स्पष्ट मान डालने का प्रयास करने से पहले SET IDENTITY_INSERT Tbl_Cartoons ON का उपयोग करना चाहते हैं।

आप कह रहे हैं कि "IIDENTITY कॉलम में मान डालने के लिए ज़िम्मेदार होने जा रहा हूं"।

SET IDENTITY_INSERT Tbl_Cartoons OFF कहता है "मैं सिस्टम को IDENTITY कॉलम में मान डालने की ज़िम्मेदारी दूंगा"।

11

पहचान स्तंभ में स्पष्ट मान सम्मिलित करने के लिए, निम्न कार्य करें:

SET IDENTITY_INSERT Tbl_Cartoons ON 
GO 

-- code to insert explicit ID values 

SET IDENTITY_INSERT Tbl_Cartoons OFF 
GO 
0

आप पहचान संपत्ति बंद कर सकते हैं, लेकिन यह संपादन प्रणाली टेबल जो एक अच्छा अभ्यास नहीं माना जाता है शामिल है। तुम भी आवश्यक अधिकार की संभावना नहीं है, और शायद निम्नलिखित कोड का प्रयास कर You do not have permission to run the RECONFIGURE statement देखेंगे:

DECLARE @tableName nvarchar(128) = 'YourTable'; 

-- Get a list of identity columns (informational) 
SELECT OBJECT_NAME(object_id) tableName, sc.name colName, st.name dataType 
FROM sys.columns sc 
JOIN sys.types st 
    ON st.system_type_id = sc.system_type_id 
WHERE sc.is_identity = 1 
AND OBJECT_NAME(object_id) = @tableName 

-- Allow ad-hoc changes to system catalogs 
EXEC sp_configure 'allow update', 1 
GO 
reconfigure with override 
GO 
-- Eliminate the identityness 
UPDATE syscolumns SET colstat = colstat - 1 
WHERE id = object_id(@tableName) 
AND name = 'Id' -- Specify column if you like, though only one identity per table is currently supported 
GO 
-- Unallow ad-hoc changes to system catalogs 
exec sp_configure 'allow update', 0 
GO 
reconfigure with override 
GO 
संबंधित मुद्दे