我在SQL Azure数据库中有一个名为“cust_view”的视图。
我的目标是为我的应用程序的最终用户提供对应用程序数据库中某些数据的只读访问权限,这样他们就可以通过直接连接到SQL Server Management Studio中的应用程序数据库或某些数据来从他们的侧面运行他们的即席查询其他商业智能工具。
问题在下面给出的T-SQL脚本中,是否有一些声明无法满足此目标?
.tiny img {
height: 20px;
}
答案 0 :(得分:5)
考虑为您的应用使用contained database user,而不是登录和用户。通常,这是Azure SQL数据库的推荐方法:您可以获得更好的性能,因为应用程序可以直接对用户数据库进行身份验证,而无需额外往返主数据库。
此外,如果您只希望应用程序能够从cust_view中进行选择,请不要将用户添加到' db_datareader'角色。此角色允许用户针对数据库中的任何表或视图运行SELECT语句,而不仅仅是视图。相反,只需在您的视图上授予SELECT,而不是其他任何内容。
网:
CREATE USER [readonly] WITH PASSWORD = 'strong_password'
go
-- create your view
GRANT SELECT ON cust_view TO [readonly]
go
答案 1 :(得分:2)
Sunil,包含数据库用户身份验证始终在Azure SQL数据库V12中启用。 V11没有它。
回到原来的问题,
EXEC sp_addrolemember 'db_datareader', 'readonly'
GO
基本上等同于向数据库中的每个对象授予SELECT。对于最小特权,只需要您的GRANT语句:
GRANT SELECT ON cust_view TO [readonly]
GO