जवाबों:
SQL सर्वर में एक तालिका का नाम बदलने के लिए, sp_rename
कमांड का उपयोग करें :
exec sp_rename 'schema.old_table_name', 'new_table_name'
'NewName'
क्षेत्र, अन्यथा अपनी मेज की तरह कुछ के लिए देख खत्म हो सकता है dbo.dbo.NewName
।
CREATE SYNONYM [schema].[synonymName] FOR [schema].[tableName]
एक स्तंभ का नाम बदलने के लिए:
sp_rename 'table_name.old_column_name', 'new_column_name' , 'COLUMN';
एक तालिका का नाम बदलने के लिए:
sp_rename 'old_table_name','new_table_name';
उपर्युक्त उत्तरों की तरह काम करने वाले sp_rename का उपयोग करते समय, यह भी जांच लें कि नाम बदलने के बाद कौन सी वस्तुएं प्रभावित होती हैं, उस तालिका का संदर्भ, क्योंकि आपको उन्हें भी बदलना होगा
मैंने यहां पिनाल डेव के ब्लॉग पर तालिका निर्भरता के लिए एक कोड उदाहरण लिया
USE AdventureWorks
GO
SELECT
referencing_schema_name = SCHEMA_NAME(o.SCHEMA_ID),
referencing_object_name = o.name,
referencing_object_type_desc = o.type_desc,
referenced_schema_name,
referenced_object_name = referenced_entity_name,
referenced_object_type_desc = o1.type_desc,
referenced_server_name, referenced_database_name
--,sed.* -- Uncomment for all the columns
FROM
sys.sql_expression_dependencies sed
INNER JOIN
sys.objects o ON sed.referencing_id = o.[object_id]
LEFT OUTER JOIN
sys.objects o1 ON sed.referenced_id = o1.[object_id]
WHERE
referenced_entity_name = 'Customer'
तो, इन सभी आश्रित वस्तुओं को भी अद्यतन करने की आवश्यकता है
या यदि आप कर सकते हैं तो कुछ ऐड-इन का उपयोग करें, उनमें से कुछ में ऑब्जेक्ट का नाम बदलने की सुविधा है, और सभी निर्भर करते हैं, वस्तुओं को भी दर्ज करते हैं
यदि आप exec sp_rename
LockMatchID त्रुटि की कोशिश करते हैं और प्राप्त करते हैं तो पहले एक उपयोग [डेटाबेस] स्टेटमेंट जोड़ने में मदद मिल सकती है:
मैंने कोशिश की
exec sp_rename '[database_name].[dbo].[table_name]', 'new_table_name';
-- Invalid EXECUTE statement using object "Object", method "LockMatchID".
इसे ठीक करने के लिए मुझे क्या करना था:
use database_name
exec sp_rename '[dbo].[table_name]', 'new_table_name';
तालिका नाम
sp_rename 'db_name.old_table_name', 'new_table_name'
स्तंभ
sp_rename 'db_name.old_table_name.name' 'userName', 'COLUMN'
सूची
sp_rename 'db_name.old_table_name.id', 'product_ID', 'INDEX'
स्टैटिक्स और डेटाटाइप्स के लिए भी उपलब्ध है
यही है वह जो मेरे द्वारा उपयोग किया जाता है:
EXEC sp_rename 'MyTable', 'MyTableNewName';
यहां प्रस्तावित से कुछ भी काम नहीं हुआ .. तो बस डेटा को नई तालिका में डाल दिया
SELECT *
INTO [acecodetable].['PSCLineReason']
FROM [acecodetable].['15_PSCLineReason'];
शायद किसी के लिए उपयोगी होगा ..
मेरे मामले में यह नया स्कीमा भी नहीं जानता था कि dbo मालिक था ..
अपडेट करें
EXECUTE sp_rename N'[acecodetable].[''TradeAgreementClaim'']', N'TradeAgreementClaim';
मेरे लिए काम किया। मैं इसे स्क्रिप्ट से स्वचालित रूप से जनरेट करता था जब तालिका में से एक के लिए पीके अपडेट करता था। इस तरह इसने नए स्कीमा को भी मान्यता दी।
किसी भिन्न स्कीमा के साथ तालिका नाम बदलने के लिए:
उदाहरण: बदलें dbo.MyTable1 को wrk.MyTable2
EXEC SP_RENAME 'dbo.MyTable1', 'MyTable2'
ALTER SCHEMA wrk TRANSFER dbo.MyTable2
.
में उनमें से एक है,[]
तो तालिका नाम के आसपास का उपयोग करें। (मुझे पता है, मुझे पता है, लेकिन डॉट्स हो सकते हैं ...) Egsp_rename '[Stupid.name]', 'NewName'
या स्कीमा के साथsp_rename '[dbo.Stupid.name]', 'NewName'