Mam problem z ustawieniem VIEW DEFINITION
uprawnień odpowiednio na poziomie schematu dla jednego z moich użytkowników. Stworzyłem schemat TestSchema
i dodałem kilka tabel. Użytkownik ma obecnie uprawnienia ustawione na dostęp i modyfikowanie tabeli ( SELECT
, UPDATE
, DELETE
, etc) przez dbo_datareader
i dbo_datawriter
ról. Jednak nie widzą żadnej z tabel w eksploratorze obiektów SSMS.
Próbowałem przyznać uprawnienia do wyświetlania definicji:
grant view definition on SCHEMA :: [TestSchema] to [User]
To nie zadziałało. Próbowałem ustawić uprawnienia na poziomie tabeli:
grant view definition on [TestSchema].[NewTable] to [User]
To też nie działało. Potem spróbowałem tylko ogólnej dotacji:
grant view definition to [User]
I że zrobił pracę; widzą teraz TestSchema
, podobnie jak inne schematy, do których nie powinni mieć dostępu.
Moim celem jest umożliwienie użytkownikowi przeglądania wszystkich tabel w ramach danego schematu. Jak to osiągnąć? Jeśli powinienem być w stanie to zrobić domyślnie, jakie uprawnienia powinienem szukać, aby dowiedzieć się, dlaczego nie mogę?
Odpowiedzi:
Krótka odpowiedź: Nie używaj
db_datareader
lubdb_datawriter
lub ich ekwiwalenty zaprzeczyć. Służą wyłącznie do kompatybilności wstecznej. Korzystanie z nich spowoduje problemy takie jak ten, przed którym stoisz.Jeśli chcesz nadać głównej Alice uprawnienia SELECT, INSERT, UPDATE i DELETE wszystkim obiektom wycenionym w tabeli w schemacie Sprzedaż, skorzystaj z następujących opcji.
Jeśli chcesz udzielić głównej Alicji uprawnień SELECT, INSERT, UPDATE i DELETE wszystkim obiektom o wartościach tabelowych we wszystkich schematach, skorzystaj z następujących poleceń.
Widoczność metadanych będzie wtedy działać poprawnie.
źródło
Spójrz na główne zasady, inne uprawnienia, w których może istnieć odmowa, która powoduje problem. Pamiętaj, że odmowa zawsze będzie obowiązywać ponad stypendium. A ponieważ to nie jest twój serwer, na koncie może znajdować się coś, co utworzył dział IT.
Użyj czegoś takiego na poziomie serwera:
I coś takiego na poziomie bazy danych
źródło
Zdarzyło mi się to, kiedy uaktualniłem nasz SQL Server z 2008R2 do 2014. db_datareader lub db_datawriter lub ich odmowy odpowiedniki działają doskonale w 2008R2, ale nie działają w 2014.
Przykład udzielenia zezwolenia w programie SQL Server 2014
Jeśli chcesz nadać użytkownikowi Alice uprawnienia SELECT, INSERT, UPDATE i DELETE do wszystkich obiektów wycenianych w tabeli w schemacie Sprzedaż, skorzystaj z następujących opcji.
WYBIERZ, WSTAW, AKTUALIZUJ, USUŃ NA SCHEMACIE :: Sprzedaż do Alice; Jeśli chcesz udzielić głównej Alicji uprawnień SELECT, INSERT, UPDATE i DELETE wszystkim obiektom o wartościach tabelowych we wszystkich schematach, skorzystaj z następujących poleceń.
WYBIERZ, WSTAW, AKTUALIZUJ, USUŃ DO Alice; Widoczność metadanych będzie wtedy działać poprawnie.
źródło