De SELECT-machtiging is geweigerd voor het object ‘Gebruikers’, database ‘XXX’, schema ‘dbo’

Ik heb een database verplaatst van SQL Server 2012 naar Azure. Ik wil de gebruiker masterniet gebruiken, dus heb ik een gebruikers-testgemaakt. Dit is wat ik deed voor database XXX op Azure:

create user test from login test with default_schema=[dbo]
exec sp_addrolemember 'db_owner','test'

Ik heb het gecontroleerd en de database-objecten waarin ik geïnteresseerd ben, staan ​​allemaal in het schema dbo. De tabel Usersstaat in het schema dbo.

De verbindingsreeks in mijn webproject heeft testals login. Het produceert de foutmelding:

The SELECT permission was denied on the object 'Users', database 'XXX', schema 'dbo'

Wat betekent de foutmelding en wat kan ik doen om de gebruiker testtoegang te geven tot de database XXX?


Antwoord 1, autoriteit 100%

  1. SQL Management Studio openen
  2. Breid je database uit
  3. Breid de map “Beveiliging” uit
  4. ‘Gebruikers’ uitvouwen
  5. Klik met de rechtermuisknop op de gebruiker (degene die de zoekopdracht probeert uit te voeren) en selecteer Properties.
  6. Selecteer pagina Membership.
  7. Zorg ervoor dat u het vinkje uitschakelt

    db_denydatareader

    db_denydatawriter

voer hier de afbeeldingsbeschrijving in

Dit zou vanzelfsprekend moeten zijn, maar verleen alleen de machtigingen voor wat de gebruiker nodig heeft. Een gemakkelijke luie oplossing is om db_ownerte controleren zoals ik heb gedaan, maar dit is niet de beste beveiligingspraktijk.


Antwoord 2, autoriteit 81%

Ik denk dat het probleem zit in het feit dat de gebruiker rechten weigerenheeft. Deze fout treedt op wanneer de gebruiker die u hebt gemaakt niet over voldoende rechten beschikt om toegang te krijgen tot uw tabellen in de database. Verleen het privilege aan de gebruiker om te krijgen wat je wilt.

GRANT de gebruikersspecifieke machtigingen zoals SELECT, INSERT, UPDATE en DELETE voor tabellen in die database.


Antwoord 3, autoriteit 39%

De syntaxis om selectietoestemming te verlenen voor een specifieke tabel:

USE YourDB;
GRANT SELECT ON dbo.functionName TO UserName;

Om de selectietoestemming te verlenen voor alle tabellen in de database:

USE YourDB;
GRANT SELECT TO UserName;

Antwoord 4, autoriteit 18%

Zo kon ik het probleem oplossen toen ik ermee geconfronteerd werd

  1. Start SQL Management Studio.
  2. Breid het serverknooppunt uit (in de ‘Objectverkenner’).
  3. Breid het databaseknooppunt uit en vouw vervolgens de specifieke database uit waartoe u toegang probeert te krijgen met de specifieke gebruiker.
  4. Breid het knooppunt Gebruikers uit onder het knooppunt Beveiliging voor de database.
  5. Klik met de rechtermuisknop op de specifieke gebruiker en klik op ‘eigenschappen’. U krijgt een dialoogvenster.
  6. Zorg ervoor dat de gebruiker lid is van de groep db_owner (lees de opmerkingen hieronder voordat u dit pad gebruikt) en andere vereiste wijzigingen met behulp van de weergave. (Ik heb dit voor 2016 gebruikt. Ik weet niet zeker hoe het specifieke dialoogvenster eruitziet in een andere versie en is daarom niet specifiek)

Antwoord 5

Met SSMS zorgde ik ervoor dat de gebruiker verbindingsrechten had voor zowel de database als ReportServer.

Op de specifieke database die werd opgevraagd, onder eigenschappen, heb ik hun inloggegevens in kaart gebracht en datareader en openbare machtigingen ingeschakeld. Ook, zoals anderen al hebben gezegd, zorgde ik ervoor dat er geen denyread/denywrite-boxen waren geselecteerd.

Ik wilde db-eigendom niet inschakelen voor hun rapporten, omdat ze alleen selectierechten nodig hadden.


Antwoord 6

Ik los mijn probleem hiermee op. [BELANGRIJKE OPMERKING: het staat verhoogde (uitgebreide) privileges toe voor het specifieke account, mogelijk meer dan nodig is voor het individuele scenario].

  1. Ga naar ‘Objectverkenner‘ van SQL Management Studio.
  2. Breid Beveiliginguit en vervolgens Aanmelden.
  3. Selecteer de gebruiker waarmee u werkt, klik met de rechtermuisknop en selecteer Eigenschappen Windows.
  4. Ga in Selecteer een paginanaar Serverrollen
  5. Klik op sysadminen sla op.

Antwoord 7

Toestemmingen verlenen aan die gebruiker is vereist


Antwoord 8

Controleer de ruimte van uw database. Deze fout treedt op wanneer de ruimte is toegenomen in vergelijking met de ruimte die aan de database is gegeven.


Antwoord 9

Misschien is uw Plesk-paneel of een ander paneelabonnement verlopen….Controleer a.u.b. abonnement Einde.

Other episodes