Przeniosłem bazę danych z SQL Server 2012 na Azure. Nie chcę używać użytkownika master
, więc utworzyłem użytkownika test
. Oto, co zrobiłem dla bazy danych XXX na platformie Azure:
create user test from login test with default_schema=[dbo]
exec sp_addrolemember 'db_owner','test'
Sprawdziłem, a interesujące mnie obiekty bazy danych znajdują się w schemacie dbo
. Tabela Users
znajduje się w schemacie dbo
.
Parametry połączenia w moim projekcie sieci Web mają test
jako login. Generuje komunikat o błędzie:
The SELECT permission was denied on the object 'Users', database 'XXX', schema 'dbo'
Co oznacza komunikat o błędzie i co mogę zrobić, aby umożliwić użytkownikowi test
dostęp do bazy danych XXX?
sql-server
azure-sql-database
Stary dziwak
źródło
źródło
Odpowiedzi:
Myślę, że problem polega na tym, że użytkownik ma uprawnienia odmowy . Ten błąd pojawia się, gdy utworzony przez Ciebie użytkownik nie ma wystarczających uprawnień dostępu do tabel w bazie danych. Przyznaj uprawnienia użytkownikowi, aby uzyskać to, czego chcesz.
PRZYZNAJ uprawnienia specyficzne dla użytkownika, takie jak SELECT, INSERT, UPDATE i DELETE do tabel w tej bazie danych.
źródło
Properties
.Membership
.Upewnij się, że odznaczyłeś
db_denydatareader
db_denydatawriter
To powinno być oczywiste, ale przyznaj uprawnienia tylko do tego, czego potrzebuje użytkownik. Łatwym leniwym rozwiązaniem jest sprawdzenie,
db_owner
jak to zrobiłem, ale nie jest to najlepsza praktyka w zakresie bezpieczeństwa.źródło
deny
teżSkładnia umożliwiająca przyznanie uprawnienia do wyboru w określonej tabeli:
USE YourDB; GRANT SELECT ON dbo.functionName TO UserName;
Aby nadać uprawnienie select do wszystkich tabel w bazie danych:
USE YourDB; GRANT SELECT TO UserName;
źródło
W ten sposób mogłem rozwiązać problem, gdy się z nim zmierzyłem
źródło
db_denydatareade
lubdb_denydatawriter
Konieczne jest udzielenie uprawnień temu użytkownikowi
źródło
Sprawdź miejsce w bazie danych. Ten błąd pojawia się, gdy miejsce jest większe w porównaniu do miejsca przydzielonego do bazy danych.
źródło
Korzystając z SSMS, upewniłem się, że użytkownik ma uprawnienia do łączenia się zarówno z bazą danych, jak i serwerem raportów.
Na konkretnej bazie danych, której dotyczyło zapytanie, we właściwościach zamapowałem ich poświadczenia i włączyłem moduł danych i uprawnienia publiczne. Ponadto, jak powiedzieli inni - upewniłem się, że nie wybrano żadnych pól zaprzeczenia odczytu / denywrite.
Nie chciałem włączać własności bazy danych w przypadku ich raportów, ponieważ musieli mieć tylko wybrane uprawnienia.
źródło
W ten sposób rozwiązuję swój problem. [WAŻNA UWAGA: umożliwia eskalację (rozszerzanie) uprawnień do określonego konta, prawdopodobnie więcej niż jest to potrzebne w przypadku indywidualnego scenariusza].
źródło
Być może wygasła twoja subskrypcja panelu Plesk lub innej subskrypcji ... sprawdź subskrypcję Koniec.
źródło