Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
Geeft een waarde terug met een bitmap die de instructie-, object- of kolomrechten van de huidige gebruiker aangeeft.
Belangrijk
Deze functie wordt verwijderd in een toekomstige versie van SQL Server. Vermijd het gebruik van deze functie in nieuwe ontwikkelwerkzaamheden en plan om toepassingen te wijzigen die momenteel gebruikmaken van deze functie. Gebruik fn_my_permissions en Has_Perms_By_Name in plaats daarvan. Voortgezet gebruik van de PERMISSIONS-functie kan resulteren in lagere prestaties.
Transact-SQL syntaxis-conventies
Syntaxis
PERMISSIONS ( [ objectid [ , 'column' ] ] )
Arguments
Object
Is de ID van een verzekerde handelbare. Als objectid niet is gespecificeerd, bevat de bitmapwaarde statementrechten voor de huidige gebruiker; anders bevat de bitmap rechten op de securable voor de huidige gebruiker. De gespecificeerde securable moet in de huidige database staan. Gebruik de functie OBJECT_ID om de objectidwaarde te bepalen.
'kolom'
Is de optionele naam van een kolom waarvoor toestemmingsinformatie wordt teruggegeven. De kolom moet een geldige kolomnaam zijn in de tabel die objectid specificeert.
Retourtypen
int
Opmerkingen
PERMISSIONS kunnen worden gebruikt om te bepalen of de huidige gebruiker de benodigde rechten heeft om een instructie uit te voeren of om een machtiging aan een andere gebruiker te VERLENEN.
De teruggegeven permissie-informatie is een 32-bits bitmap.
De onderste 16 bits weerspiegelen de rechten die aan de gebruiker zijn verleend, evenals de rechten die worden toegepast op Windows-groepen of vaste serverrollen waarvan de huidige gebruiker lid is. Bijvoorbeeld, een teruggegeven waarde van 66 (hex-waarde 0x42), wanneer geen objectid is opgegeven, geeft aan dat de gebruiker toestemming heeft om de CREATE TABLE (decimale waarde 2) en BACKUP DATABASE (decimale waarde 64) uit te voeren.
De bovenste 16 bits geven de rechten weer die de gebruiker aan andere gebruikers kan GEVEN. De bovenste 16 bits worden precies geïnterpreteerd als die voor de onderste 16 bits beschreven in de volgende tabellen, behalve dat ze naar links zijn verschoven met 16 bits (vermenigvuldigd met 65536). Bijvoorbeeld, 0x8 (decimale waarde 8) is de bit die INSERT-toestemming aangeeft wanneer een objectid wordt gespecificeerd. Terwijl 0x80000 (decimale waarde 524288) de mogelijkheid aangeeft om INVOEG-toestemming te VERLENEN, omdat 524288 = 8 x 65536.
Vanwege lidmaatschap van rollen kan een gebruiker die geen toestemming heeft om een instructie uit te voeren die toestemming toch aan een andere gebruiker geven.
De volgende tabel toont de bits die worden gebruikt voor statement-rechten (objectid is niet gespecificeerd).
| Bit (dec) | Bit (hex) | Toestemming voor de verklaring |
|---|---|---|
| 1 | 0x1 | CREATE DATABASE (alleen hoofddatabase) |
| 2 | 0x2 | CREATE TABLE |
| 4 | 0x4 | Aanmaken van procedure |
| 8 | 0x8 | VIEW AANMAKEN |
| 16 | 0x10 | REGEL MAKEN |
| 32 | 0x20 | STANDAARD MAKEN |
| 64 | 0x40 | BACK-UP DATABASE |
| 128 | 0x80 | BACKUPLOG |
| 256 | 0x100 | Gereserveerd |
De volgende tabel toont de bits die worden gebruikt voor objectrechten die worden teruggegeven wanneer alleen objectid is opgegeven.
| Bit (dec) | Bit (hex) | Toestemming voor de verklaring |
|---|---|---|
| 1 | 0x1 | SELECTEER ALLES |
| 2 | 0x2 | UPDATE ALLES |
| 4 | 0x4 | REFERENTIES ALLEMAAL |
| 8 | 0x8 | INSERT |
| 16 | 0x10 | Verwijderen |
| 32 | 0x20 | EXECUTE (alleen procedures) |
| 4096 | 0x1000 | SELECTEER ELKE (ten minste één kolom) |
| 8192 | 0x2000 | UPDATE ANY |
| 16384 | 0x4000 | REFERENTIES ELKE |
De volgende tabel toont de bits die worden gebruikt voor kolomniveau-objectmachtigingen die worden teruggegeven wanneer zowel objectid als kolom worden opgegeven.
| Bit (dec) | Bit (hex) | Toestemming voor de verklaring |
|---|---|---|
| 1 | 0x1 | SELECT |
| 2 | 0x2 | UPDATE |
| 4 | 0x4 | REFERENCES |
Een NULL wordt teruggegeven wanneer een gespecificeerde parameter NULL of niet geldig is (bijvoorbeeld een objectid of kolom die niet bestaat). De bitwaarden voor permissies die niet van toepassing zijn (bijvoorbeeld EXECUTE-toestemming, bit 0x20, voor een tabel) zijn niet gedefinieerd.
Gebruik de bitgewijze operator AND (&) om elke bit in de bitmap te bepalen die door de PERMISSIONS-functie wordt teruggegeven.
De sp_helprotect systeemopslagprocedure kan ook worden gebruikt om een lijst met rechten voor een gebruiker in de huidige database terug te geven.
Voorbeelden
Eén. Gebruik van de PERMISSIONS-functie met statement-permissies
Het volgende voorbeeld bepaalt of de huidige gebruiker de CREATE TABLE instructie kan uitvoeren.
IF PERMISSIONS()&2=2
CREATE TABLE test_table (col1 INT)
ELSE
PRINT 'ERROR: The current user cannot create a table.';
B. Gebruik van de PERMISSIONS-functie met objectrechten
Het volgende voorbeeld bepaalt of de huidige gebruiker een rij gegevens in de Address tabel in de AdventureWorks2025 database kan invoegen.
IF PERMISSIONS(OBJECT_ID('AdventureWorks2022.Person.Address','U'))&8=8
PRINT 'The current user can insert data into Person.Address.'
ELSE
PRINT 'ERROR: The current user cannot insert data into Person.Address.';
C. Gebruik van de PERMISSIONS-functie met toekenbare rechten
Het volgende voorbeeld bepaalt of de huidige gebruiker de INSERT-toestemming op de Address tabel in de AdventureWorks2025 database aan een andere gebruiker kan geven.
IF PERMISSIONS(OBJECT_ID('AdventureWorks2022.Person.Address','U'))&0x80000=0x80000
PRINT 'INSERT on Person.Address is grantable.'
ELSE
PRINT 'You may not GRANT INSERT permissions on Person.Address.';
Zie ook
ONTKENNEN (Transact-SQL)
SUBSIDIE (Transact-SQL)
OBJECT_ID (Transact-SQL)
INTREKKEN (Transact-SQL)
sp_helprotect (Transact-SQL)
Systeemfuncties (Transact-SQL)