T-SQL C# CLR 执行权限在重新部署时在程序集上丢失
T-SQL C# CLR Execute permissions being lost on assemblies when are redeployed
我继承了一个 VS2015 .NET C# 项目,该项目将 C# 程序集作为 CLR 存储过程部署到 SQL Server 2016。它已经无缝运行了很多年。
但是最近我注意到,当我重新部署(a.k.a“发布数据库”)时,其中一个程序集似乎失去了其中一位用户的 EXECUTE
权限。
有没有办法让项目在重新部署后重新应用 EXECUTE
权限?该脚本必须知道我正在将更新的 CLR 部署到哪个 SQL 服务器实例和数据库。谢谢
永远不会向用户授予对程序集的执行权限。我怀疑您的意思是对引用此程序集中代码的一个(或多个)SQLCLR 存储过程执行权限。您可以相当轻松地将 post-release T-SQL 脚本添加到您的 Visual Studio 项目中,该项目将包含在发布脚本中(由 SSDT 通过 VS)。在此 T-SQL 脚本中,您只需添加 GRANT
语句。而且,如果它只在一个特定的数据库/实例中有意义,那么您可以将该 GRANT
语句包装在一个 IF
块中,该块检查当前实例 and/or 数据库名称。
在 VS 2015 中添加 post-release 脚本的步骤:
- Select 解决方案资源管理器中的项目
- 转到“项目”菜单
- Select“添加新项目...”
- Select “SQL 服务器” -> “用户脚本”
- Select "Post-Deployment 脚本"
- 在“名称:”字段中键入脚本的名称
- 点击“添加”按钮
- 编辑新的 SQL 脚本以添加
GRANT
语句
该脚本的内容将被添加到任何由 VS / SSDT 生成的 deployment / publish 脚本的末尾,因此将在您执行这些脚本的每个数据库中执行。
我继承了一个 VS2015 .NET C# 项目,该项目将 C# 程序集作为 CLR 存储过程部署到 SQL Server 2016。它已经无缝运行了很多年。
但是最近我注意到,当我重新部署(a.k.a“发布数据库”)时,其中一个程序集似乎失去了其中一位用户的 EXECUTE
权限。
有没有办法让项目在重新部署后重新应用 EXECUTE
权限?该脚本必须知道我正在将更新的 CLR 部署到哪个 SQL 服务器实例和数据库。谢谢
永远不会向用户授予对程序集的执行权限。我怀疑您的意思是对引用此程序集中代码的一个(或多个)SQLCLR 存储过程执行权限。您可以相当轻松地将 post-release T-SQL 脚本添加到您的 Visual Studio 项目中,该项目将包含在发布脚本中(由 SSDT 通过 VS)。在此 T-SQL 脚本中,您只需添加 GRANT
语句。而且,如果它只在一个特定的数据库/实例中有意义,那么您可以将该 GRANT
语句包装在一个 IF
块中,该块检查当前实例 and/or 数据库名称。
在 VS 2015 中添加 post-release 脚本的步骤:
- Select 解决方案资源管理器中的项目
- 转到“项目”菜单
- Select“添加新项目...”
- Select “SQL 服务器” -> “用户脚本”
- Select "Post-Deployment 脚本"
- 在“名称:”字段中键入脚本的名称
- 点击“添加”按钮
- 编辑新的 SQL 脚本以添加
GRANT
语句
该脚本的内容将被添加到任何由 VS / SSDT 生成的 deployment / publish 脚本的末尾,因此将在您执行这些脚本的每个数据库中执行。