限制最终用户使用存储过程插入数据
Posted
技术标签:
【中文标题】限制最终用户使用存储过程插入数据【英文标题】:restricting end users to insert data using a stored procedure 【发布时间】:2011-03-14 05:44:59 【问题描述】:使用存储过程,我如何限制用户使用插入查询插入的内容,这可以使用视图的 WITH CHECK OPTION 进行限制?
就像我只希望 steve 和 peter 将数据插入到 ITEM 表中。我在包含所有用户名的 ITEM 表中添加了一个“用户”列。 为此,如果我使用视图,那么在我给出的检查选项中:
WHERE username='steve' OR username='peter' WITH CHECK OPTION
但是我如何使用存储过程来做到这一点?
【问题讨论】:
【参考方案1】:类似的东西。您必须先测试用户并决定是否允许。可以将测试包装到另一个存储过程或 UDF 中以供重复使用。
问题:您的视图如何知道 Steve 或 Peter 是执行视图的人?
CREATE PROC myProc
@p1 int
AS
SET NOCOUNT ON
BEGIN TRY
IF SUSER_SNAME() NOT IN ('steve', 'peter')
RAISERROR ('Oi: Steve and Peter only', 16, 1)
END TRY
BEGIN CATCH
...
END CATCH
GO
在这里查看我的答案stored proc template
【讨论】:
史蒂夫将登录到应用程序。所以当他执行视图时,视图会检查他的用户名。因为我的表之前已经插入了用户名以上是关于限制最终用户使用存储过程插入数据的主要内容,如果未能解决你的问题,请参考以下文章