【问题标题】:SQL Server 2008 - Delete data exclusively from stored procedureSQL Server 2008 - 从存储过程中以独占方式删除数据
【发布时间】:2011-07-22 19:25:17
【问题描述】:

我想阻止高级用户使用 SQL Server Management Studio 删除数据。当数据被删除时,我需要存档数据并在审计跟踪中添加一些信息。

  • 当他们试图从 SSMS 中删除数据时,有没有办法阻止他们?
  • 有没有办法知道是哪个进程导致了删除?例如来自 SSMS、应用程序、存储过程?
  • 有没有办法只允许从存储过程中删除?

谢谢

【问题讨论】:

    标签: sql-server sql-server-2008-r2


    【解决方案1】:

    为此登录创建一个新的登录名和数据库用户。然后授予该用户删除权限,并从所有其他用户撤消该权限。编写删除数据的过程[s],添加WITH EXECUTE AS [previously created user that can delete data]。授予其他用户对该过程的执行权限。

    【讨论】:

    • 我会试试这个。这似乎是一种方法......我确实需要给他们一种删除方法,因此存储过程就足够了。
    【解决方案2】:

    他们是高级用户,不是吗。您可以为他们设置拒绝删除权限。

    DENY DELETE TO [Your_User]
    GO
    

    【讨论】:

      【解决方案3】:

      从您的第二句话中,我得到的印象是删除不是真正的问题,而是您需要存档数据并在删除数据时创建审计跟踪。为什么不使用删除触发器?

      【讨论】:

      • 是的,最终目标是存档数据,但我需要插入一些附加信息,这些信息将从应用程序传递,并且无法用于删除触发器。如果我使用存储过程,我可以将其作为输入参数传递。
      猜你喜欢
      • 1970-01-01
      • 2015-01-26
      • 2015-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多