はい、可能です。
データベース オブジェクトのスキーマを変更するには、次の SQL スクリプトを実行する必要があります。
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.ObjectName
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'))
ここで、タイプ「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;
これで、これらの生成されたすべてのクエリを実行して、転送操作を完了することができます。