हां, यह संभव है।
डेटाबेस ऑब्जेक्ट के स्कीमा को बदलने के लिए आपको निम्न SQL स्क्रिप्ट चलाने की आवश्यकता है:
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.ObjectName
जहां ऑब्जेक्टनाम किसी तालिका, दृश्य या संग्रहीत कार्यविधि का नाम हो सकता है। समस्या किसी दिए गए shcema नाम के साथ सभी डेटाबेस ऑब्जेक्ट्स की सूची प्राप्त कर रही है। शुक्र है, sys.Objects नाम की एक सिस्टम टेबल है जो सभी डेटाबेस ऑब्जेक्ट्स को स्टोर करती है। निम्न क्वेरी इस कार्य को पूरा करने के लिए सभी आवश्यक SQL स्क्रिप्ट उत्पन्न करेगी:
SELECT 'ALTER SCHEMA NewSchemaName TRANSFER [' + SysSchemas.Name + '].[' + DbObjects.Name + '];'
FROM sys.Objects DbObjects
INNER JOIN sys.Schemas SysSchemas ON DbObjects.schema_id = SysSchemas.schema_id
WHERE SysSchemas.Name = 'OldSchemaName'
AND (DbObjects.Type IN ('U', 'P', 'V'))
जहां टाइप 'यू' यूजर टेबल को दर्शाता है, 'वी' विचारों को दर्शाता है और 'पी' संग्रहित प्रक्रियाओं को दर्शाता है।
उपरोक्त स्क्रिप्ट को चलाने से ऑब्जेक्ट को एक स्कीमा से दूसरे में स्थानांतरित करने के लिए आवश्यक SQL कमांड उत्पन्न होंगे। कुछ इस तरह:
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.CONTENT_KBArticle;
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.Proc_Analytics_Statistics_Delete;
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.Proc_CMS_QueryProvider_Select;
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.COM_ShoppingCartSKU;
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.CMS_WebPart;
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.Polls_PollAnswer;
अब आप ट्रांसफर ऑपरेशन को पूरा करने के लिए इन सभी जेनरेट की गई क्वेरी को चला सकते हैं।