c# - 在 SQL Server 身份验证中执行存储过程所需的角色

标签 c# .net sql-server

我需要从 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/

相关文章:

c# - 处理并发

c# - 将 linq 查询结果连接到字符串?

mysql - 电话号码转换和比较

.net - 从 getter/setter 的 MethodInfo 中查找托管 PropertyInfo

SQL,如何使用动态条件逻辑?

c# - Azure 通知中心随机不传送到 IOS

c# - 如何从 UWP 中的字符串执行代码?

c# - 实现哈希的最佳实践?

sql server 具有不同时区的不同数据库。如何获取所有数据库的getdatetime

sql - 哪个 SSIS 可执行文件是用于删除命令的最佳实践