はい、可能です。
データベースオブジェクトのスキーマを変更するには、次のSQLスクリプトを実行する必要があります。
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.ObjectName
ObjectNameは、テーブル、ビュー、またはストアドプロシージャの名前です。問題は、指定されたスキーマ名を持つすべてのデータベースオブジェクトのリストを取得することであるようです。ありがたいことに、すべてのデータベースオブジェクトを格納する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'))
タイプ「U」はユーザーテーブルを示し、「V」はビューを示し、「P」はストアドプロシージャを示します。
上記のスクリプトを実行すると、あるスキーマから別のスキーマにオブジェクトを転送するために必要な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;
これで、生成されたこれらすべてのクエリを実行して、転送操作を完了することができます。