Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
punkt końcowy analizy SQL w usłudze Microsoft Fabric
Magazyn w usłudze Microsoft Fabric
Transferuje zabezpieczane między schematami.
Transact-SQL konwencje składni
Składnia
-- 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
[;]
Argumenty (w programowaniu)
schema_name
Schemat docelowy w bieżącej bazie danych. Zabezpieczanie jest przenoszone do tego schematu. Nie można mieć SYS
ani INFORMATION_SCHEMA
.
<entity_type>
Klasa jednostki, dla której jest zmieniany właściciel. Obiekt jest domyślny.
securable_name
Jednoczęściowa lub dwuczęściowa nazwa zabezpieczanego zakresu schematu, która ma zostać przeniesiona do schematu.
Uwagi
Użytkownicy i schematy są całkowicie oddzielone. Schematy nie są równoważne użytkownikom bazy danych. Użyj widoków wykazu systemu , aby zidentyfikować wszelkie różnice między użytkownikami bazy danych i schematami.
Alter SCHEMA może służyć tylko do przenoszenia zabezpieczania między schematami w tej samej bazie danych. Aby zmienić lub usunąć zabezpieczanie w schemacie, użyj instrukcji ALTER lub DROP specyficznej dla tego zabezpieczanego.
Jeśli jednoczęściowa nazwa jest używana dla securable_name, obowiązujące obecnie reguły rozpoznawania nazw będą używane do lokalizowania zabezpieczanego.
Wszystkie uprawnienia skojarzone z zabezpieczanym elementem są porzucane, gdy zabezpieczany zostanie przeniesiony do nowego schematu. Jeśli właściciel zabezpieczanego obiektu został jawnie ustawiony, właściciel pozostaje niezmieniony. Jeśli właściciel zabezpieczanego obiektu został ustawiony na WARTOŚĆ WŁAŚCICIEL SCHEMATU, właściciel pozostanie WŁAŚCICIELEM SCHEMATU; jednak po przeniesieniu SCHEMA OWNER zostanie rozpoznany jako właściciel nowego schematu. Nowy principal_id
właściciel będzie mieć wartość NULL
.
Ważne
Jeśli używasz ALTER SCHEMA
metody do transferu procedury składowanej, funkcji, widoku lub wyzwalacza do innego schematu, nie zmieni nazwy schematu, jeśli istnieje, obiektu w definition
kolumnie widoku katalogu sys.sql_modules lub w wyniku OBJECT_DEFINITION wbudowanej funkcji.
ALTER SCHEMA
W związku z tym nie należy używać do przenoszenia tych typów obiektów. Zamiast tego upuść i ponownie utwórz obiekt w nowym schemacie.
Przeniesienie obiektu, takiego jak tabela lub synonim, nie spowoduje automatycznej aktualizacji odwołań do tego obiektu. Należy ręcznie zmodyfikować wszystkie obiekty odwołujące się do przeniesionego obiektu. Jeśli na przykład przeniesiesz tabelę i ta tabela zostanie odwołana w wyzwalaczu, musisz zmodyfikować wyzwalacz, aby odzwierciedlić nową nazwę schematu. Użyj sys.sql_expression_dependencies , aby wyświetlić listę zależności od obiektu przed przeniesieniem go.
Aby zmienić schemat tabeli przy użyciu programu SQL Server Management Studio, w Eksploratorze obiektów kliknij prawym przyciskiem myszy tabelę, a następnie wybierz pozycję Projekt. Naciśnij F4 , aby otworzyć okno Właściwości. W polu Schemat wybierz nowy schemat.
ALTER SCHEMA używa blokady na poziomie schematu.
Ostrzeżenie
W punkcie końcowym analizy SQL sieci szkieletowej przesyłanie tabeli między schematami za pośrednictwem języka T-SQL nie jest obsługiwane. Może to negatywnie wpłynąć na operację synchronizacji między punktem końcowym usługi OneLake i analizą SQL.
Uprawnienia
Aby przenieść zabezpieczany z innego schematu, bieżący użytkownik musi mieć uprawnienie CONTROL do zabezpieczanego (nie schematu) i uprawnienia ALTER w schemacie docelowym.
Jeśli zabezpieczana ma na nim specyfikację EXECUTE AS OWNER, a właściciel jest ustawiony na WARTOŚĆ WŁAŚCICIEL SCHEMATu, użytkownik musi również mieć uprawnienie PERSONIFIKUJ właściciela schematu docelowego.
Wszystkie uprawnienia skojarzone z zabezpieczanym transferem są usuwane po przeniesieniu.
Przykłady
Odp. Przenoszenie własności tabeli
Poniższy przykład modyfikuje schemat HumanResources
, przenosząc tabelę Address
ze schematu Person
do schematu HumanResources
.
USE AdventureWorks2022;
GO
ALTER SCHEMA HumanResources TRANSFER Person.Address;
GO
B. Przenoszenie własności typu
Poniższy przykład tworzy typ w schemacie Production
, a następnie transferuje typ do schematu 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
Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)
C. Przenoszenie własności tabeli
Poniższy przykład tworzy tabelę Region
w schemacie dbo
, tworzy Sales
schemat, a następnie przenosi Region
tabelę ze schematu dbo
do schematu 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