patternsqlMinor
What permissions are needed to see view definitions via a query?
Viewed 0 times
permissionsneededwhatarequeryviewseeviadefinitions
Problem
I have full admin rights on our database and hence can query and see view definitions. I want however query the views with a read-only user in a JDBC Jenkins job magic. The problem: Unlike my admin-user, the read-only user does not see the code/definitions of a view.
This query give me all the view definitions and the meta data I need for all views when I act as Admin:
As a result when executing the query as admin I get entries like:
However, not so much when I do it with my read-only user, I get
Here you can see my permission configuration for the read only user. Although I have granted him the necessary permission, the view definitions are not visible to the user in a result set.
It is furthermore really strange that after allowing the user to do SELECT and VIEW definition statements and saving the config, a second entry for SELECT and VIEW DEFINITION was added to the config table.
This query give me all the view definitions and the meta data I need for all views when I act as Admin:
SELECT name AS VIEW_NAME,
definition,
create_date,
modify_date
FROM [my_database].[sys].[all_views]
JOIN [my_database].[sys].[sql_modules]
ON [my_database].[sys].[all_views].object_id = [my_database].[sys].[sql_modules].object_idAs a result when executing the query as admin I get entries like:
name | definition | create_date | modify_date
sample_view | SELECT * FROM bla | 01.01.2017 | 02.01.2017However, not so much when I do it with my read-only user, I get
name | definition | create_date | modify_date
sample_view | null | 01.01.2017 | 02.01.2017Here you can see my permission configuration for the read only user. Although I have granted him the necessary permission, the view definitions are not visible to the user in a result set.
It is furthermore really strange that after allowing the user to do SELECT and VIEW definition statements and saving the config, a second entry for SELECT and VIEW DEFINITION was added to the config table.
Solution
Simply granting VIEW DEFINITION and SELECT permissions on
Permissions that you added will provide you information about all objects in sys schema and information_schema.
I suppose you want to see the view definition which are created in some other schema, in which case you would have to provide the user with
Such as :
INFORMATION_SCHEMA and sys schema wont give you rights to see the definition of the view.Permissions that you added will provide you information about all objects in sys schema and information_schema.
I suppose you want to see the view definition which are created in some other schema, in which case you would have to provide the user with
VIEW DEFINITION to that particular schema. Such as :
GRANT VIEW DEFINITION ON SCHEMA::SchemaWhereViewsAreCreated TO [YourUser]Context
StackExchange Database Administrators Q#179755, answer score: 3
Revisions (0)
No revisions yet.