Bru*_*tig 5 sql-server ssms view sql-server-2016
我对我们的数据库拥有完全的管理员权限,因此可以查询和查看视图定义。但是,我想在 JDBC Jenkins 作业魔术中使用只读用户查询视图。问题:与我的管理员用户不同,只读用户看不到视图的代码/定义。
当我担任管理员时,此查询为我提供了所有视图所需的所有视图定义和元数据:
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_id
Run Code Online (Sandbox Code Playgroud)
结果,当以管理员身份执行查询时,我得到如下条目:
name | definition | create_date | modify_date
sample_view | SELECT * FROM bla | 01.01.2017 | 02.01.2017
Run Code Online (Sandbox Code Playgroud)
然而,当我用我的只读用户做这件事时,我得到了
name | definition | create_date | modify_date
sample_view | null | 01.01.2017 | 02.01.2017
Run Code Online (Sandbox Code Playgroud)
在这里你可以看到我对只读用户的权限配置。尽管我已授予他必要的权限,但用户在结果集中看不到视图定义。
更奇怪的是,在允许用户执行 SELECT 和 VIEW 定义语句并保存配置之后,SELECT 和 VIEW DEFINITION 的第二个条目被添加到配置表中。
小智 3
简单地授予对架构的 VIEW DEFINITION 和 SELECT 权限INFORMATION_SCHEMA
不会sys
赋予您查看视图定义的权限。
您添加的权限将为您提供有关 sys schema 和 information_schema 中所有对象的信息。
我想您想查看在其他模式中创建的视图定义,在这种情况下,您必须向用户提供VIEW DEFINITION
该特定模式。
例如 :GRANT VIEW DEFINITION ON SCHEMA::SchemaWhereViewsAreCreated TO [YourUser]
归档时间: |
|
查看次数: |
14682 次 |
最近记录: |