如何将不安全的程序集授予动态找到的用户名?

时间:2017-10-19 22:25:07

标签: sql-server

我必须在遗留项目的SQL Server中注册DLL,不好的是我没有DLL也没有源代码,只是我拥有的是从Create Scripts选项中获取的二进制字符串我的数据库。我正在尝试使用以下代码:

USE [master]
DECLARE @CurrentUserName varchar(MAX)
SET @CurrentUserName = SUSER_SNAME()
SELECT @CurrentUserName
GRANT UNSAFE ASSEMBLY TO @CurrentUserName

最后一行给我一个错误:

  

@CurrentUserName附近的语法不正确。期待ID,NULL,PUBLIC或   QUOTED_ID

我正在创建这个脚本,为我的新团队成员提供一个脚本,以便在第一天设置他们的DEV环境,而不会给他们一个带有说明的大型手册,因为我们了解到,因为我们的设置过程很多,所以会发生很多错误。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

--You Have to use Dynamic SQL 

USE [master]
DECLARE @CurrentUserName VARCHAR(MAX),@String_SQL NVARCHAR(MAX)
SET @CurrentUserName = SUSER_SNAME()
SELECT @CurrentUserName
--GRANT UNSAFE ASSEMBLY TO @CurrentUserName

SET @String_SQL=''
SET @String_SQL =N'GRANT UNSAFE ASSEMBLY TO '+@CurrentUserName+''

PRINT @String_SQL
EXEC (@String_SQL)