授予非系统管理员更改最大内存设置 SQL Server 的能力

San*_*nta 2 sql-server stored-procedures permissions sql-server-2012 sql-server-2014

我收到了创建存储过程的请求,该存储过程将允许用户(有权访问数据库服务器)更改 SQL Server 的max server memory (MB). 这不是困难的部分。

另一个要求是该用户应该能够更改这个唯一的参数,max server memory (MB)而不能更改其他任何参数。我想知道的是,如果可能的话。

我确实意识到,为了能够执行sp_configure和运行RECONFIGURE,所需的最低权限是ALTER SETTINGS. 并且提供ALTER SETTINGS会破坏存储过程的目的(它被设计为只运行exec sys.sp_configure 'max server memory (MB)', @TheReqMemVal)以及 的最小和最大允许值max server memory (MB)

在阅读了一些评论后,我想补充一点,如果响应中包含可能存在的安全隐患,我们将不胜感激。

sep*_*pic 6

在这种情况下,您应该使用签名程序。

Erland Sommarskog 的文章Signing Procedures with Certificates 很好地解释了这一点,以下是执行步骤:

  • 在 master 数据库中创建证书。
  • 为该证书创建一个登录名。
  • 授予该登录更改设置。
  • 将证书导出到文件。
  • 切换到应用程序数据库。
  • 从文件导入证书。
  • 从磁盘中删除文件。
  • 为证书创建一个用户。
  • 每次更改存储过程时,都会使用证书对存储过程进行签名。