0

我最近将一个 SSRS 实例从 SQL 2008 R2 复制到了一个新的 SQL 2012 实例。我在报表服务器数据库和加密密钥上执行了备份/恢复,并配置了服务/执行帐户等。我可以通过报表管理器运行报表而不会发生意外,并且我可以创建新的订阅,并且运行良好。

但是,只要之前存在的订阅之一(在 R2 下设置)即将运行,它就会失败并出现以下错误:

Microsoft.ReportingServices.Diagnostics.Utilities.AuthorizationExtensionException: An error occurred when invoking the authorization extension. ---> System.ArgumentNullException: SafeHandle cannot be null.

建议似乎是这与自定义安全组件有关,但我们没有。我们确实有一个用于其他目的的自定义 DLL,但是当有问题的订阅运行时它甚至没有被调用,所以不太可能是这样。为此 DLL 配置了 CAS。

我真的在寻找有关从哪里开始解决此错误的建议,因为我不知道该尝试什么!

4

1 回答 1

1

我在MSDN上发布了相同的问题,得到的答案表明,从旧服务器复制的订阅可能是由新服务器上不存在的本地用户创建的。

经过一番调查,事实证明是这样的。SSRS 似乎需要订阅创建者(报表服务器数据库中订阅表中的 OwnerID 字段)是一个有效帐户,因为它在尝试运行订阅时必须执行某种验证。

一旦我将其更改为有效的域帐户(本地帐户也可以),订阅一切正常。

于 2012-07-03T08:18:17.703 回答