2016-07-20 81 views
1

SSRS数据集使用带有udf“fc_FileExists”的查询来检查用户的照片存在。如果照片不存在,将使用匿名照片。 (匿名照片与其他照片位于同一个文件夹中)。此ssrs报告正在Intranet域环境中运行。当我运行这个报告时,我可以看到照片。但一些其他用户不能。他们只看到匿名照片。代码如下所示。ssrs master.dbo.xp_fileexist根据用户帐户获得不同的结果

CASE WHEN dbo.fc_FileExists('\\domain\folder\'+ID+'.jpg') = 1 
    THEN 'file:\\domain\folder\'+ID+'.jpg' 
    WHEN dbo.fc_FileExists('\\domain\folder\'+ID+'.jpg') = 0 
    THEN 'file:\\domain\folder\anonymous .jpg' 

问题是为某些用户,他们总是得到匿名照片。这意味着照片可以在那里存在,但dbo.fc_FileExists总是返回0.但为什么我可以看到照片。

任何帮助,请

和fc_FileExists的源代码如下:

CREATE FUNCTION [dbo].[fc_FileExists](@path varchar(8000)) 
RETURNS BIT 
AS 
BEGIN 
    DECLARE @result INT 
    EXEC master.dbo.xp_fileexist @path, @result OUTPUT 
    RETURN cast(@result as bit) 
END; 

回答

0

这是两件事情之一:

  1. 权限:有的用户没有权限查看文件夹。
  2. 表中不存在该ID。

如果可能,请以显示匿名照片的用户身份连接到SQL查询分析器,然后运行该函数 - 任何错误?如果没有,作为同一用户尝试使用Windows资源管理器来查找用户图片。

+0

谢谢BIDeveloper。我做了测试,用户可以访问该文件夹,并在该文件夹中存在ID和文件。但我在他的机器上运行fc_FileExists('\\ domain \ folder \'+ ID +'。jpg')总是得到0,无论如何。但在我的机器上,我可以得到正确的结果。我检查Current_User,我是dbo,他是'域\用户',有什么建议吗? –

+0

我会躺下这是一个Windows权限问题。你可以发布fc_FileExists源代码吗? – BIDeveloper

+1

我只是发布了fc_FileExists源代码。 –

0

我觉得这不是好的方法。实际上ssrs可以直接使用System.IO.File.Exists。所以我们不必在sql server端做这个工作。我认为表现应该更好。