我正在创建工具,以计划的方式对数据库运行SQL查询,以用于某些监视目的。如何使用此工具限制用户更新数据库?
目前,我通过在服务用户下运行仅具有只读访问权限的服务来阻止更新数据。有没有其他方法可以做到这一点? (我想要其他选项,因为此服务用户是共享用户。将来,其他一些开发人员可能希望为此用户提供其他要求的更新权限。)
我看到ApplicationIntent read only选项,但这并不限制用户更新数据库,我不确定生产SQL Server中是否启用了复制。
我正在使用SQL Server 2012(工具后端和要监控的数据库)和Windows服务来运行针对数据库的查询。
提前感谢您的建议。
答案 0 :(得分:1)
我通常为每个工具/应用程序创建一个单独的数据库用户。这使您可以准确指定每个工具所需的权限,而不会影响其他应用程序。
您可以在交易开始时使用EXECUTE AS语句,在仍然使用Windows服务帐户进行连接时使用受限权限集。
答案 1 :(得分:0)
查看db_datareader
的用户映射https://msdn.microsoft.com/en-us/library/ms189121.aspx
您可以为该工具连接到用户映射角色的DB的用户。使它只能进行SELECT查询