cas*_*tic 6 sql-server permissions functions sql-server-2019
升级到 SQL Server 2019 后,我们在 beta 环境中遇到异常错误。从标量值函数中进行选择时会发生这种情况。在我们运行 SQL 2014 的生产环境中不会发生此错误。
声明是:
select function(1234567)
Run Code Online (Sandbox Code Playgroud)
错误信息是:
消息 229,级别 14,状态 5,第 1 行
对象“函数”、数据库“数据库”、架构“dbo”的 SELECT 权限被拒绝。
功能是:
CREATE FUNCTION [dbo].[function](@var1 INT)
RETURNS BIT
BEGIN
DECLARE @var2 BIT, @var3 BIGINT, var4 INT
SET @var2 = 0
SELECT @var3= ISNULL(tbl2.field1,tbl3.field1) FROM tbl1
LEFT OUTER JOIN tbl2 WITH (NOLOCK) ON tbl2.field2 = tbl1.field2
LEFT OUTER JOIN tbl3 WITH (NOLOCK) ON tbl3.field2 = tbl1.field2
WHERE tbl1.field2 = @var1
SELECT @var4 = ISNULL(field4,1) FROM linked_server.database.dbo.tbl4 WHERE field5=Convert(VARCHAR(20),@var3)
IF(@var4 <> 1)
BEGIN
SET @var1 = 1
END
RETURN @var1
END
GO
Run Code Online (Sandbox Code Playgroud)
成功的解决方法:
我不确定我们是否发现了错误,或者这只是缺少权限的情况(或完全其他原因)。如果可能,我们希望避免更改代码;将用户权限提升到sysadmin是不可能的。
我们正在运行 CU2。我们尚未在 CU3 上进行测试。
归档时间: |
|
查看次数: |
492 次 |
最近记录: |