用户无法在SSMS中以非默认模式查看表


10

我在VIEW DEFINITION为一个用户的架构级别适当设置权限时遇到问题。我已经创建了架构TestSchema并添加了一些表。用户目前有权限设置为访问和修改表(SELECTUPDATEDELETE通过等)dbo_datareaderdbo_datawriter角色。但是,他们看不到SSMS对象资源管理器中的任何表。

我尝试授予查看定义的权限:

grant view definition on SCHEMA :: [TestSchema] to [User]

那没用。我尝试设置表级权限:

grant view definition on [TestSchema].[NewTable] to [User]

那也没有用。然后,我尝试了一项总括性赠款:

grant view definition to [User]

确实奏效了;他们现在可以看到TestSchema以及他们不应该访问的其他模式。

我的目标是允许用户查看给定架构中的所有表。我该怎么做?如果默认情况下我应该能够执行此操作,那么我应该查看哪些权限以查找为什么不能这样做?


在我授予db_datareader或db_datawriter的2008R2实例上,它们可以看到所有架构。我确实意识到这不是您想要的,但这意味着您的设置与我的设置之间存在很大差异,因此我无法真正对其进行测试。版本是全部不同还是已修改了其他一些安全性?
cfradenburg 2012年

@cfradenburg-很难说;这是一台由IT管理的服务器,所以我不确定他们做了什么,而且我是SQL Server的新手,所以我不知道要寻找什么。我想我的问题的一部分是,还有哪些其他权限/角色/?我应该寻找以确定是否可以通过权限简单地解决此问题吗?
eykanal 2012年

用户可以查询表格吗?如果他们可以查询,那么这可能只是SSMS中的问题。
user9164 2012年

@ user9164是的,用户可以查询表;在SSMS中查看它们只是一个问题。
eykanal 2012年

Answers:


11

简短答案:请勿使用db_datareaderdb_datawriter拒绝它们的等效项。它们仅用于向后兼容。使用它们会引起类似您所面临的问题。

如果要向主体Alice授予对模式Sales中所有表值对象的SELECT,INSERT,UPDATE和DELETE权限,请使用以下内容。

GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA::Sales TO Alice ;

如果要向主体Alice授予所有架构中所有表值对象的SELECT,INSERT,UPDATE和DELETE权限,请使用以下内容。

GRANT SELECT, INSERT, UPDATE, DELETE TO Alice ;

元数据可见性将正常工作。


您是否有“向后兼容性”位的来源?我了解架构已弃用,但找不到有关角色的任何信息。
Stijn

0

看一下主体的其他权限,可能是某个导致问题的地方被拒绝。请记住,拒绝将始终适用于赠款的顶部。而且由于它不是您的服务商,因此IT部门已经建立了帐户。

在服务器级别使用类似这样的东西:

    use master
    go
    SELECT a.*,b.name as 'Login ID' FROM sys.server_permissions as A inner join 
    sys.server_principals as B on a.grantee_principal_id = b.principal_id
    where b.name = 'login ID of the account'
    GO

在数据库级别这样的事情

SELECT a.*,b.name as 'Login ID' FROM sys.database_permissions as A 
inner join sys.server_principals as B on a.grantee_principal_id = b.principal_id
where b.name = 'test'
GO

感谢您的评论,我周一恢复工作时会尝试一下。
eykanal 2012年

0

当我将SQL Server从2008R2升级到2014时,这发生在我身上。db_datareader或db_datawriter或它们的拒绝等效项在2008R2中可以正常工作,但在2014年不起作用。

在SQL Server 2014中授予权限的示例

如果要向用户Alice授予对模式Sales中所有表值对象的SELECT,INSERT,UPDATE和DELETE权限,请使用以下权限。

在SCHEMA :: Sales上进行GRANT SELECT,INSERT,UPDATE,DELETE删除操作;如果要向主体Alice授予所有架构中所有表值对象的SELECT,INSERT,UPDATE和DELETE权限,请使用以下内容。

授予选择,插入,更新,删除给爱丽丝的权限;元数据可见性将正常工作。

参考[Greenstone Walker]。


1
Sundeep,请尝试解释一个答案,而不只是提供一个链接。如果您需要任何帮助,请查看现场参观
LowlyDBA
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.