Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Warehouse i Microsoft Fabric
Överför ett skydd mellan scheman.
Transact-SQL syntaxkonventioner
Syntax
-- 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
[;]
Argumentpunkter
schema_name
Målschemat i den aktuella databasen. Skyddsbara flyttas till det här schemat. Kan inte vara SYS
eller INFORMATION_SCHEMA
.
<entity_type>
Klassen för den entitet som ägaren ändras för. Objektet är standard.
securable_name
Namnet på en eller två delar för ett schemaomfattningsbegränsat skydd som ska flyttas till schemat.
Anmärkningar
Användare och scheman är helt separata. Scheman motsvarar inte databasanvändare. Använd systemkatalogvyer för att identifiera eventuella skillnader mellan databasanvändare och scheman.
ALTER SCHEMA kan bara användas för att flytta skyddsbara filer mellan scheman i samma databas. Om du vill ändra eller släppa en skyddsbar i ett schema använder du ALTER- eller DROP-instruktionen som är specifik för den skyddsbara.
Om ett endelsnamn används för securable_name används de namnmatchningsregler som för närvarande gäller för att hitta skyddsbara.
Alla behörigheter som är associerade med skyddsbara tas bort när skyddsbara flyttas till det nya schemat. Om ägaren till skyddsbara objektet uttryckligen har angetts förblir ägaren oförändrad. Om ägaren till den skyddsbara enheten har angetts till SCHEMAÄGARE förblir ägaren SCHEMAÄGARE. Men efter flytten matchas SCHEMAÄGAREN med ägaren av det nya schemat. Den principal_id
nya ägaren blir NULL
.
Viktigt!
Om du använder ALTER SCHEMA
för att överföra en lagrad procedur, funktion, vy eller utlösare till ett annat schema ändras inte schemanamnet, om det finns, för objektet i kolumnen i definition
katalogvyn sys.sql_modules eller i resultatet av den OBJECT_DEFINITION inbyggda funktionen.
ALTER SCHEMA
Därför bör inte användas för att flytta dessa objekttyper. Släpp i stället och återskapa objektet i det nya schemat.
Om du flyttar ett objekt, till exempel en tabell eller synonym, uppdateras inte referenser till objektet automatiskt. Du måste ändra alla objekt som refererar till det överförda objektet manuellt. Om du till exempel flyttar en tabell och tabellen refereras till i en utlösare måste du ändra utlösaren så att den återspeglar det nya schemanamnet. Använd sys.sql_expression_dependencies för att visa beroenden för objektet innan du flyttar det.
Om du vill ändra schemat för en tabell med hjälp av SQL Server Management Studio högerklickar du på tabellen i Object Explorer och väljer design. Tryck på F4 för att öppna fönstret Egenskaper. I rutan Schema väljer du ett nytt schema.
ALTER SCHEMA använder ett schemanivålås.
Försiktighet
Det går inte att överföra en tabell mellan scheman via T-SQL i sql-analysslutpunkten. Det kan påverka synkroniseringsåtgärden mellan OneLake- och SQL-analysslutpunkten negativt.
Behörigheter
Om du vill överföra en skyddsbar fil från ett annat schema måste den aktuella användaren ha KONTROLL-behörighet för det skyddbara (inte schemat) och ALTER-behörigheten för målschemat.
Om säkerhetsobjektet har en EXECUTE AS OWNER-specifikation på sig och ägaren är inställd på SCHEMAÄGARE, måste användaren också ha PERSONIFIERa behörighet för ägaren av målschemat.
Alla behörigheter som är associerade med den skyddbara som överförs tas bort när den flyttas.
Exempel
A. Överföra ägarskapet för en tabell
I följande exempel ändras schemat HumanResources
genom att tabellen Address
överförs från schemat Person
till HumanResources
schemat.
USE AdventureWorks2022;
GO
ALTER SCHEMA HumanResources TRANSFER Person.Address;
GO
B. Överföra ägarskap av en typ
I följande exempel skapas en typ i Production
schemat och sedan överförs typen till Person
schemat.
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
Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)
C. Överföra ägarskapet för en tabell
I följande exempel skapas en tabell Region
i dbo
schemat, ett Sales
schema skapas och tabellen flyttas Region
sedan från dbo
schemat till Sales
schemat.
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