【发布时间】:2015-02-24 14:58:50
【问题描述】:
我正在为一些新用户配置数据库帐户。我提出了以下解决方案,它是让帐户正常工作的 99%,但我遇到了一个我无法解决的问题。
首先,我创建了一个使用 SQL Server 身份验证的新登录名,然后授予他们对所有存储过程的 EXECUTE 权限。这允许他们全部运行,但他们无法查看代码,也无法查看数据库表。
在存储过程中我添加了以下内容:
WITH EXEC AS OWNER
这允许存储过程作为我们通常使用的默认帐户运行,并且具有db_owner 的角色。这允许新用户运行所有存储过程,并且在我遇到以下问题之前效果很好:
一些存储过程(所有这些都使用动态 SQL)调用一些同义词,这些同义词链接到其他两个数据库(历史和数据集市数据库)中的表。这给了我以下错误:
服务器主体“{username}”无法在当前安全上下文下访问数据库“{database name}”。
我在WITH EXEC AS 中使用的帐户是我正在使用的所有三个数据库中的db_owner。
我可以做些什么来解决这个问题?非常感谢
【问题讨论】:
标签: sql sql-server database stored-procedures permissions