我有一个访问 SQLServer 数据库的 Windows 应用程序。在上周左右的某个时间,它停止在其他人的机器上工作,并抛出异常,表明他们没有对存储过程的执行权限。我想知道什么机制可能改变了我的数据库(当然我没有做任何事情......至少在知情的情况下)。
我设置了一个名为 db_execproc 的角色,添加了用户(应用程序使用 Windows 身份验证进行连接),并在 dbo 模式上授予角色 EXECUTE。一切正常,但由于某种原因它停止工作。再次向该角色授予 EXECUTE 解决了该问题。
所以我想知道这可能是如何被破坏的(SQLServer 更新?)。
此外,在 SQL Server Management Studio 中,我试图验证 db_execproc 是否具有正确的权限,但我看不到任何东西(在我授予它们之前或之后)。. . 如何查看已授予角色哪些权限?
作为更新(安装 CU 或 SP)的一部分,SQL Server 更新不会更改任何登录/用户或角色权限。
由于可能的数据库升级(您的应用程序版本升级),权限可能已更改。检查您的升级脚本。
要找出谁更改了权限,您需要运行服务器端跟踪并收集相关信息。
您可以使用此 TSQL 来检查授予角色的权限。