2009-08-10 15 views
23

एसक्यूएल (एमएस एसक्यूएल सर्वर 2005 संस्करण) का उपयोग कर तालिका कॉलम का नाम बदलने के लिए सबसे अच्छा अभ्यास क्या है? यह मानता है कि कॉलम में डेटा है जिसे संरक्षित किया जाना चाहिए।एमएस एसक्यूएल सर्वर 2005 में एक कॉलम का नाम बदलना

उत्तर

47

आपको कॉलम का नाम बदलने के लिए एक संग्रहित प्रो का उपयोग करना होगा। निम्नलिखित किसी भी डेटा को प्रभावित किए बिना 'oldColumnName' से 'newColumnName' तक आपके कॉलम का नाम बदल जाएगा।

EXEC sp_rename 'tableName.[oldColumnName]', 'newColumnName', 'COLUMN' 

जाहिर है आपको किसी भी कोड/संग्रहीत प्रोसेस/एसक्यूएल को मैन्युअल रूप से पुराने नाम का उपयोग करने के लिए अपडेट करना होगा।

0

मुझे आज भी यही समस्या थी, और समाधान डेटाबेस पर सभी प्रक्रियाओं को मार डाला गया था, क्योंकि प्रक्रियाओं को लेनदेन को बंद कर दिया गया था। मुझे प्रक्रिया sp_rename निष्पादित किया गया था, लेकिन समस्या हल नहीं हुई थी। तो मैं डेटाबेस में प्रक्रियाओं को मार रहा था और proc काम करता है।

USE MASTER 
GO 

--Kill all the connections opened in database. 
DECLARE @dbname sysname 
SET @dbname = 'database_name' 

DECLARE @spid int 
SELECT @spid = min(spid) from master.dbo.sysprocesses where dbid = db_id(@dbname) 
WHILE @spid IS NOT NULL 
BEGIN 
EXECUTE ('KILL ' + @spid) 
SELECT @spid = min(spid) from master.dbo.sysprocesses where dbid = db_id(@dbname) AND spid > @spid 
END 


SELECT request_session_id 
FROM sys.dm_tran_locks 
WHERE resource_database_id = DB_ID('database_name') 
संबंधित मुद्दे