Sql server 如何临时将sysadmin授予用户?
下面的代码位于存储过程中,在用户下运行时出现以下错误:premfguser。 对远程服务器的访问被拒绝,因为当前安全上下文不受信任Sql server 如何临时将sysadmin授予用户?,sql-server,stored-procedures,Sql Server,Stored Procedures,下面的代码位于存储过程中,在用户下运行时出现以下错误:premfguser。 对远程服务器的访问被拒绝,因为当前安全上下文不受信任 SET @provider = 'Microsoft.Jet.OLEDB.4.0' SET @ExcelString = 'Excel 8.0;Database=' + @fn EXEC('INSERT INTO OPENROWSET(''' + @provider + ''',''' + @ExcelString + ''',''SELECT * FROM [S
SET @provider = 'Microsoft.Jet.OLEDB.4.0'
SET @ExcelString = 'Excel 8.0;Database=' + @fn
EXEC('INSERT INTO OPENROWSET(''' + @provider + ''',''' + @ExcelString + ''',''SELECT * FROM [Sheet1$A2:L2]'')
SELECT [ITEMNUMBER],'''',[ITEM_DESCRIPTION],[CASEPACK],[UNIT PRICE],[CASE PRICE],[WEIGHT],[CUBE],[CASE DIMS],[UPC],[CASE UPC],[Q Comments] FROM [ORDER SUMMERY] WHERE [Order #] = ''' + @OrderNumber + '''')
当我将premfguser添加到sysadmin时,它可以工作。如何在不将sysadmin永久授予用户的情况下运行此代码 定义存储过程时,添加
executeas
子句:
CREATE PROCEDURE SomeProcedure
WITH EXECUTE AS 'UserName'
AS BEGIN
-- procedure code as usual...
END;
使用EXECUTE AS并使用证书对过程进行签名。有关如何签署程序的信息,请参见本文和本文
请注意,将数据库标记为可信的替代方法意味着数据库的
dbo
实际上是一个sysadmin
,因为如果设置了可信位,他可以随时将自己升级到sysadmin。代码签名是一种更好的选择,尽管要复杂得多。我试过了。用户名具有sysadmin角色。我收到以下错误:对远程服务器的访问被拒绝,因为当前安全上下文不受信任