Säkerhet för temporära tabeller
gäller för: SQL Server 2016 (13.x) och senare versioner
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Microsoft Fabric
För att förstå säkerheten som den gäller för tidstabeller måste du förstå de säkerhetsprinciper som gäller för temporala tabeller. När du har förstått dessa säkerhetsprinciper är du redo att undersöka säkerheten kring CREATE TABLE
-, ALTER TABLE
- och SELECT
-uttalanden.
Säkerhetsprinciper
I följande tabell beskrivs de säkerhetsprinciper som gäller för temporala tabeller:
Princip | Beskrivning |
---|---|
Aktivera/inaktivera systemversionshantering kräver högsta behörighet för berörda objekt | Aktivering och inaktivering av SYSTEM_VERSIONING kräver CONTROL behörighet för både den aktuella tabellen och historiktabellen. |
Historikdata kan inte ändras direkt | När SYSTEM_VERSIONING är ON kan användarna inte ändra historikdata, oavsett deras faktiska behörigheter i den aktuella tabellen eller historiktabellen. Den här begränsningen omfattar både data- och schemaändringar.
1 |
Att göra frågor i historikdata kräver SELECT behörighet på historiktabellen |
En användare med SELECT behörighet i den aktuella tabellen har inte automatiskt SELECT behörighet i historiktabellen. |
Granskning visar åtgärder som påverkar historiktabellen på specifika sätt | Granskningsinställningar från den aktuella tabellen tillämpas inte automatiskt på historiktabellen. Granskning måste aktiveras explicit för historiktabellen. En gång aktiverad registreras granskningar på historiktabellen regelbundet för alla direkta försök att komma åt data (oavsett om de lyckades eller inte).SELECT med temporalt frågetillägg visar att historiktabellen påverkades av denna åtgärd.CREATE/ALTER temporala tabellen visar också information om att behörighetskontrollen sker i historiktabellen. Granskningsfilen innehåller ytterligare poster för historiktabellen.DML-åtgärder i den aktuella tabellen visar att historiktabellen påverkades, men additional_information tillhandahåller nödvändig kontext (DML berodde på SYSTEM_VERSIONING ). |
1 Om du har ALTER-behörighet för den aktuella tabellen och historiktabellen, och du släpper en kolumn i den aktuella tabellen, tas även den associerade kolumnen i historiktabellen bort, även om SYSTEM_VERSIONING
är ON
.
Utföra schemaåtgärder
När SYSTEM_VERSIONING
är inställt på ON
begränsas schemaändringsåtgärderna.
Otillåtna ALTER-schemaåtgärder
Operation | Aktuell tabell | Historiktabell |
---|---|---|
DROP TABLE |
Otillåten | Otillåten |
ALTER TABLE...SWITCH PARTITION |
endast SWITCH IN (se Partition med temporära tabeller) |
endast SWITCH OUT (se partition med temporära tabeller) |
ALTER TABLE...DROP PERIOD |
Otillåten | Ej tillämpligt |
ALTER TABLE...ADD PERIOD |
Ej tillämpligt | Otillåten |
Tillåtna ALTER TABLE-åtgärder
Operation | Ström | Historia |
---|---|---|
ALTER TABLE...REBUILD |
Tillåts (oberoende) | Tillåten (oberoende) |
CREATE INDEX |
Tillåts (självständigt) | Tillåts (på egen hand) |
CREATE STATISTICS |
Tillåten (oberoende) | Tillåten (självständigt) |
Säkerhet för instruktionen CREATE temporal table
Funktion | Skapa ny historiktabell | Återanvänd befintlig historiktabell |
---|---|---|
Behörighet krävs |
CREATE TABLE behörighet i databasenALTER behörighet för de scheman som de aktuella tabellerna och historiktabellerna skapas i |
CREATE TABLE behörighet i databasenALTER behörighet för schemat där den aktuella tabellen ska skapas.CONTROL behörighet i historiktabellen som anges som en del av CREATE TABLE -instruktionen som skapar den temporala tabellen. |
Revision | Granskning visar att användare försökte skapa två objekt. Åtgärden kan misslyckas på grund av bristande behörigheter för att skapa en tabell i databasen, eller på grund av bristande behörighet att ändra scheman för någon av tabellerna. | Granskning visar att den tidsmässiga tabellen skapades. Åtgärden kan misslyckas på grund av bristande behörighet att skapa en tabell i databasen, brist på behörigheter för att ändra schemat för den tidsmässiga tabellen eller brist på behörigheter i historiktabellen. |
Säkerhet för kommandot "ALTER temporal table SET (SYSTEM_VERSIONING ON/OFF)"
Funktion | Skapa ny historiktabell | Återanvänd befintlig historiktabell |
---|---|---|
Behörighet krävs |
CONTROL behörighet i databasen.CREATE TABLE behörighet i databasen.ALTER behörighet för de scheman som historiktabellen skapas i. |
CONTROL behörighet på den ursprungliga tabellen som har ändrats.CONTROL behörighet i historiktabellen som anges som en del av ALTER TABLE -instruktionen. |
Revision | Granskning visar att den tidsmässiga tabellen ändrades och att historiktabellen skapades samtidigt. Den här åtgärden kan misslyckas på grund av bristande behörigheter för att skapa en tabell i databasen, brist på behörigheter för att ändra schemat för historiktabellen eller brist på behörighet att ändra den temporära tabellen. | Granskning visar att den tidsmässiga tabellen har ändrats, men åtgärden krävde åtkomst till historiktabellen. Åtgärden kan misslyckas på grund av bristande behörigheter i historiktabellen eller brist på behörigheter för den aktuella tabellen. |
Säkerhet för SELECT-instruktionen
SELECT
-behörigheten förblir oförändrad för SELECT
-uttalanden som inte påverkar historiktabellen. För SELECT
-instruktioner som påverkar historiktabellen krävs SELECT
-behörigheten för både den nuvarande tabellen och historiktabellen.
Relaterat innehåll
- tidsbaserade tabeller
- Kom igång med systemversionsbaserade tidstabeller
- Systemkonsekvenskontroller för tidstabeller
- Partitionering med temporära tabeller
- överväganden och begränsningar för tidstabeller
- Hantera kvarhållning av historiska data i systemversionsbaserade tidstabeller
- systemversionsbaserade tidstabeller med minnesoptimerade tabeller
- vyer och funktioner för temporala tabellmetadata