Applies to:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric の SQL 分析エンドポイント
Microsoft Fabric のウェアハウス
スキーマ間でセキュリティ保護可能なリソースを移動します。
構文
-- Syntax for SQL Server and Azure SQL Database
ALTER SCHEMA schema_name
TRANSFER [ <entity_type> :: ] securable_name
[;]
<entity_type> ::=
{
Object | Type | XML Schema Collection
}
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric
ALTER SCHEMA schema_name
TRANSFER [ OBJECT :: ] securable_name
[;]
引数
schema_name
現在のデータベース内のターゲット スキーマ。 セキュリティ保護可能なリソースは、このスキーマに移動されます。
SYS
またはINFORMATION_SCHEMA
にすることはできません。
<entity_type>
所有者が変更されるエンティティのクラス。 既定値はオブジェクトです。
securable_name
スキーマに移動するスキーマ スコープのセキュリティ保護可能なセキュリティ保護可能なリソースの 1 部または 2 部構成の名前。
解説
ユーザーとスキーマは完全に分離されています。 スキーマは、データベース ユーザーと同等ではありません。 システム カタログ ビューを使用して、データベース ユーザーとスキーマの違いを特定します。
ALTER SCHEMA は、セキュリティ保護可能なリソースを同じデータベース内のスキーマ間で移動する場合にのみ使用できます。 スキーマ内のセキュリティ保護可能なリソースを変更または削除するには、そのリソースに固有の ALTER または DROP ステートメントを使用します。
securable_name に 1 つの要素から構成される名前を使用した場合、セキュリティ保護可能なリソースを特定するために、現在有効な名前解決規則が使用されます。
セキュリティ保護可能なリソースに関連付けられているすべてのアクセス許可は、セキュリティ保護可能なリソースが新しいスキーマに移動されると削除されます。 セキュリティ保護可能なリソースの所有者が明示的に設定されている場合、所有者は変更されません。 セキュリティ保護可能なリソースの所有者が SCHEMA OWNER に設定されている場合、所有者は SCHEMA OWNER のままですが、移動後、SCHEMA OWNER は新しいスキーマの所有者に解決されます。 新しい所有者の principal_id
が NULL
されます。
Von Bedeutung
ALTER SCHEMA
を使用してストアド プロシージャ、関数、ビュー、またはトリガーを別のスキーマに転送する場合、sys.sqldefinition
カタログ ビューの列内のオブジェクトのスキーマ名、またはOBJECT_DEFINITION組み込み関数の結果では変更されません。 そのため、 ALTER SCHEMA
を使用してこれらのオブジェクト型を移動しないでください。 代わりに、オブジェクトを削除して新しいスキーマで再作成してください。
テーブルやシノニムなどのオブジェクトを移動しても、そのオブジェクトに対する参照は自動的には更新されません。 移動したオブジェクトを参照しているオブジェクトに対しては、手動で変更を加える必要があります。 たとえば、テーブルを移動するとき、そのテーブルがトリガーで参照されている場合は、新しいスキーマ名が反映されるようにトリガーに変更を加える必要があります。 オブジェクトを移動する前には、sys.sql_expression_dependencies を使ってオブジェクトの従属関係を一覧表示できます。
SQL Server Management Studio を使用してテーブルのスキーマを変更するには、オブジェクト エクスプローラーでテーブルを右クリックし、[ デザイン] を選択します。 F4 キーを押して [プロパティ] ウィンドウを開きます。 [スキーマ] ボックスで新しいスキーマを選択します。
ALTER SCHEMA では、スキーマ レベル ロックが使用されます。
注意事項
Fabric SQL 分析エンドポイントでは、T-SQL 経由でスキーマ間でテーブルを転送することはできません。 OneLake と SQL 分析エンドポイントの間の同期操作に悪影響を与える可能性があります。
アクセス許可
別のスキーマからセキュリティ保護可能なリソースを移動する場合、現在のユーザーには、(スキーマではなく) セキュリティ保護可能なリソースに対する CONTROL 権限とターゲット スキーマに対する ALTER 権限が必要です。
セキュリティ保護可能なリソースに EXECUTE AS OWNER の指定があり、所有者が SCHEMA OWNER に設定されている場合は、対象スキーマの所有者に対する IMPERSONATE 権限も必要です。
移動するセキュリティ保護可能なリソースに関連付けられているすべての権限は、移動時に削除されます。
例
A。 テーブルの所有権を譲渡する
次の例では、テーブル HumanResources
をスキーマ Address
からスキーマ Person
に移動し、スキーマ HumanResources
を変更します。
USE AdventureWorks2022;
GO
ALTER SCHEMA HumanResources TRANSFER Person.Address;
GO
B. 型の所有権を譲渡する
次の例では、Production
スキーマに型を作成し、その型を Person
スキーマに譲渡します。
USE AdventureWorks2022;
GO
CREATE TYPE Production.TestType FROM [VARCHAR](10) NOT NULL ;
GO
-- Check the type owner.
SELECT sys.types.name, sys.types.schema_id, sys.schemas.name
FROM sys.types JOIN sys.schemas
ON sys.types.schema_id = sys.schemas.schema_id
WHERE sys.types.name = 'TestType' ;
GO
-- Change the type to the Person schema.
ALTER SCHEMA Person TRANSFER type::Production.TestType ;
GO
-- Check the type owner.
SELECT sys.types.name, sys.types.schema_id, sys.schemas.name
FROM sys.types JOIN sys.schemas
ON sys.types.schema_id = sys.schemas.schema_id
WHERE sys.types.name = 'TestType' ;
GO
例: Azure Synapse Analytics、Analytics Platform System (PDW)
C. テーブルの所有権を譲渡する
次の例では、Region
スキーマで dbo
テーブルを作成し、Sales
スキーマを作成し、Region
テーブルを dbo
スキーマから Sales
スキーマに移動します。
CREATE TABLE dbo.Region
(Region_id INT NOT NULL,
Region_Name CHAR(5) NOT NULL)
WITH (DISTRIBUTION = REPLICATE);
GO
CREATE SCHEMA Sales;
GO
ALTER SCHEMA Sales TRANSFER OBJECT::dbo.Region;
GO