我需要从 C# 应用程序连接到 SQL Server 2008 R2 数据库。我需要对连接使用 SQL Server 身份验证。
用户需要哪些角色和架构才能创建/执行存储过程?
注意:存储过程将在 dbo 架构中。
最佳答案
创建和执行过程的权限记录在 CREATE PROCEDURE
下和 EXECUTE
, 分别。
一个重要的考虑因素是用户 do not need对过程中引用的对象具有权限。您可以在文档中阅读此内容,但自己测试它会更快:
create table dbo.TestTable (col1 int)
go
create procedure dbo.TestProc
as select col1 from dbo.TestTable
go
grant execute on dbo.TestProc to UserWithNoPermissions
go
execute as user = 'UserWithNoPermissions';
-- this gives error 229 (SELECT permission denied)
select * from dbo.TestTable;
-- this works
execute dbo.TestProc;
revert;
请注意,有一些异常(exception):动态 SQL 在其自己的范围内执行,因此如果您的过程使用它,那么执行用户确实需要对底层对象的权限。
关于c# - 在 SQL Server 身份验证中执行存储过程所需的角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13142114/