Reporting Service 和 SQL Server Integration Services 服务不能启动

时间:2022-03-15 16:43:26



Reporting Service 和 SQL Server Integration Services 服务不能启动

解决问题,之前提是找对问题。最近,有一台 FCS 机器上的 RS 和 IS 不能启动了。
由于,一开始未找对问题之所在,把小问题搞成大问题。
开始时,只是 RS 和 IS 不能启动,在维护的过程中,一度出现 MOM、SQL 都不能启动了,甚至连地址也分不到了。
最后发现,RS 和 IS 的不能启动是由于不能连到外网,验证证书。
以下,是微软的解释。但是,好像也未给出真正的原因,因为,我们平时安装的 RS 和 IS 服务都是不能上外网的,好像也未出现过,不启动的情况。而且只给出了变通的办法。

============

因为受影响的计算机不能到达 http://crl.microsoft.com 网站,将发生此问题。
发生此问题,因为出现以下行为:
.NET 框架 Microsoft.net 框架启动 SSIS 服务时, 调用了 CryptoAPI 若要验证该证书分配给 SQL Server 程序集文件的函数。
在 CryptoAPI 函数检查一个证书吊销列表 (CRL) http://crl.microsoft.com 网站上可用的。 此操作要求连接到 Internet。
如果 Internet 连接被阻止,传出 HTTP 请求可能会被丢弃。 因此,不会返回一条错误消息。
此外,长时间的延迟会导致超时 CRL 检查。
服务控制管理器 (SCM) 确定 SSIS 服务正在启动的时间太长。
因此,SCM 报告了的错误消息和 SSIS 服务未启动。

要变通解决此问题,请使用下列方法之一。

方法 1: 添加新的 XML 标记

如果您的系统已更新的版本的 Microsoft.net 框架是等于或超过该版本的 Microsoft 知识库文章中讨论了更高版本 936707(http://support.microsoft.com/kb/936707)
添加新的 XML 标记,以禁用可以解决此问题 generatePublisherEvidence. 要这样做,您必须编辑该 * exe.config 文件的 SSIS 服务 (MsDtsSrvr.exe.config) 和 * exe.config 文件的任何 SSIS 运行库。 此功能禁用 CRL 检查,并开始修复在 Microsoft 知识库文章 936707 中所述的 Microsoft.net 框架的包含所有修补程序中。 若要检查该更新是否已安装的系统运行.net Framework 2.0 版,您可以检查以下文件,以确保它是 876 版或更高版本的属性。 (版本号应为 2.0.50727.876 或更高版本。

C:\Windows\Microsoft.NET\Framework\v2.0.50727\MsCorWks.dll

SSIS 2005 的服务配置文件
是 Files\Microsoft SQL Server\90\DTS\Binn\msdtssrvr.exe.config


在 32 位或 64 位 SSIS 2005 运行库配置文件:
是 Files\Microsoft SQL Server\90\DTS\Binn\
DTExec.exe.config (用于从 SQL Server 代理作业运行 SSIS 包和 SSIS 包的命令行工具)
Dtshost.exe.config (用于通过执行包任务的子包)
DtsDebugHost.exe.config (对于 BIDS 在调试器中运行的包)
DTUtil.exe.config

等效 WOW64 SSIS 2005 运行库的配置文件在 64 位计算机上运行 32 位 SSIS 包:
是文件 (x86) \Microsoft SQL Server\90\DTS\Binn\DTExec.exe.config
DTExec.exe.config (用于从 SQL Server 代理作业运行 SSIS 包和 SSIS 包的命令行工具)
Dtshost.exe.config (对于从执行包任务的子 SSIS 包)
DtsDebugHost.exe.config (对于 BIDS 在调试器中运行 SSIS 包)
DTUtil.exe.config
DTSWizard.exe.config (用于导入导出向导在内部使用 SSIS 包)


为 SSIS 2005 如果您有一个自定义的可执行文件加载 SSIS 运行时以编程方式,您可以编辑自定义应用程序的配置文件。

请注意您的程序文件文件夹的位置可能会有所不同,基于 SQL Server 2005 安装过程中所做的自定义设置。 如果不确定在安装 SSIS,请检查注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\DTS\Setup\ SQLPath 的字符串值。

如果您有了 SSIS 2008 或更高版本,generatePublisherEvidence 标记为已包含的所有 SSIS 可执行文件的配置文件中。 您没有采取进一步的操作的 SQL Server 2008 集成服务运行时,若要避免该证书检查。

在 SQL Server 2005 集成服务以避免 CRL 证书检查,此新选项可以添加应用程序配置文件中:
<generatepublisherevidence enabled="false"></generatepublisherevidence>


此标记会之间在 <runtime> </runtime> 配置文件中的标记。 您可能需要手动添加运行时标签和 generatePublisherEvidence 标记,如果它们已经不存在 *.config 文件中。

下面是 SSIS 2005 DTExec.exe.config 文件的示例:


<configuration>
    <startup>
        <requiredRuntime version="v2.0.50727"/>
    </startup>
    <runtime>
        <generatePublisherEvidence enabled="false"/>
    </runtime>
</configuration>

下面是从 SSIS 2008,DTExec.exe.config 的示例:


<configuration>
    <startup>
        <requiredRuntime version="v2.0.50727"/>
    </startup>
    <runtime>
        <gcServer enabled="true"/>
        <disableCommitThreadStack enabled="true"/>
        <generatePublisherEvidence enabled="false"/>
    </runtime>
</configuration>

方法 2: 配置代理设置
请确保服务帐户来访问 Internet 的正确配置代理设置。
有关如何使用 Proxycfg.exe 工具来修改 WinHTTP 代理设置的详细信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:841641 (http://support.microsoft.com/kb/841641/ )
由于 Wininet 代理设置的安装 MS04-011 后,IIS 会返回一条"403.13 客户端证书吊销"错误消息
Microsoft 知识库文章 841641 还可帮助您配置一个特定的代理设置如果您正在为非交互式帐户运行服务。

方法 3: 配置防火墙
配置防火墙以返回一个失败状态应用程序快速如果防火墙阻止访问 http://crl.microsoft.com 网站。

============

实际上,修改一下 hosts 文件,添加下面一句,也就好了:

127.0.0.1       crl.microsoft.com


到此,RS 和 IS 终于可以启动了。

无法解密 RSReportServer.config 文件中 LogonCred 的加密值。

这个错误,是由于对 Rsconfig 工具的理解不深,多输入一个参数所致。

我们知道,sql server 的认证方式分为 windows 和 sql。其命令不同:

对于使用 SQL 方式:
rsconfig -c -s (local) -d reportserver -a SQL -u sa -p 密码
对于使用 WINDOWS 方式:
rsconfig -c -s (local) -d ReportServer -a WINDOWS -U 域用户 -P 密码
实际上,还有一种认证方法,即服务帐号。这时,就不要指定用户了。
rsconfig -c -s (local) -d ReportServer -a WINDOWS
但是,我想当然的输入了服务帐号,但是,又未提供密码,致使错误发生。
rsconfig -c -s (local) -d ReportServer -a WINDOWS -U "NT Authority\NetworkService"

rsconfig 命令参数解释:

-s 后的参数表示sqlserver实例名称;

-d 表示报表服务所连的数据库,通常都是reportserver;

-a 表示认证方式, windows 或 sql。



管理组 ForefrontClientSecurity 的 MOM 引擎无法初始化。9000

Microsoft Operations Manager Service (MOMService.exe)无法以提供的凭据运行,或者密码已过期。如果此计算机为域控制器,验证是否已授予操作帐户本地登录的能力。
请使用 SetActionAccount 实用程序设置符合 Microsoft Operations Manager 文档中所述准则的操作帐户。
 
"C:\Program Files\Microsoft Forefront\Client Security\Server\Microsoft Operations Manager 2005"

SetActionAccount.exe  ForefrontClientSecurity -set 域名 用户名

这个命令的格式,也比较怪异,一般情况下,开关在前,参数在后,而它把开关放在参数的后面;其次,域名与用户名一般也是连在一起,以 域名\用户名 的形式出现,而它却把域名与用户名分开,作为两个参数。

Integration Services展开时出现错误:无法为此请求检索数据。(Microsoft.SqlServer.SmoEnum)

无法解决 UNION 操作中 “SQL_Latin1_General_CP1_CI_AS” 和 “Chinese_PRC_CI_AS” 之间的排序规则冲突。
(Microsoft SQL Server,错误:468)

把 ReportServer 和 ReportServerTemp 的排序方式进行变更。

ALTER DATABASE [DBName] COLLATE Chinese_PRC_CI_AS


但是,OnePoint 却改不起来,下面是错误信息。只好作罢。

消息 5075,级别 16,状态 1,第 1 行
列 'RelationshipDefinition.IsContainmentRelation' 依赖于 数据库排序规则。
如果绑定到架构的对象依赖于数据库排序规则,则无法更改数据库排序规则。
请删除数据库排序规则的依赖项,然后重试操作。


还有一个拒绝访问的问题,我也未能搞清楚,因为,原来肯定是能够访问的,怎么突然会有那么多的目录和注册表不能访问。


以下是微软对服务帐号的说明。

============

作为 ReportServer 服务实例的 Microsoft SQL Server 2000 报表服务服务帐户
设置 NT Authority\Local Service 内置用户帐户后,您可能无法启动 ReportServer 服务。
此外,试图启动 ReportServer 服务时您可能会收到以下错误消息:
无法在本地计算机上启动 ReportServer 服务。



原因出现此问题的原因是 NT Authority\Local Service 内置用户帐户没有足够的权限访问报表服务安装文件夹。

解决方案
若要通过使用 NT Authority\Local Service 服务帐户运行报表服务,
必须提供报表服务文件夹 NT Authority\Local Service 服务帐户的足够权限。

如果您使用报表服务器的 Windows 服务,请按照在通过使用 NT Authority\Local Service 服务帐户运行报表服务之前的下列步骤操作:

1.将 NT Authority\Local Service 内置用户帐户添加到调试器用户 Windows 用户组。
2.将以下权限添加到报告服务文件夹和文件到 NT Authority\Local Service 用户帐户:

默认文件夹位置是 C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\
LogFiles 文件夹的添加完全控制权限。子文件夹继承权限。

ReportServer 文件夹中添加读取权限。子文件夹继承权限。

对于 RSReportServer.config 文件添加写入权限。子文件夹不继承权限。
3.NT Authority\Local Service 内置用户帐户设置为 ReportServer 服务的服务帐户。
4.重新启动 ReportServer 服务。
如果您使用的报表服务器 Web 服务,请按照在通过使用 NT Authority\Local Service 服务帐户运行报表服务之前的下列步骤操作:
1.将 NT Authority\Local Service 用户帐户添加到调试器用户 Windows 用户组。
2.将以下权限添加到报告服务文件夹和文件到 NT Authority\Local Service 用户帐户:
LogFiles 文件夹的添加完全控制权限。
默认文件夹位置是 C:\Program Files\Microsoft SQL Server\MSSQL\Reporting 服务。
此外,子文件夹继承权限。
对于 ReportServer 文件夹中添加读取权限。
默认文件夹位置是 C:\Program Files\Microsoft SQL Server\MSSQL\Reporting 服务。
此外,子文件夹继承权限。
对于 RSReportServer.config 文件添加读取权限、 读取和执行权限和写入权限。
默认文件位置是 C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer。
子文件夹不继承权限。
为 Global.asax 文件添加读取权限。
默认文件位置是 C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer。
此外,子文件夹不继承权限。
3.在命令提示符运行 iisreset 命令重新启动 Microsoft Internet Information Services (IIS)。
4.将以下权限添加到文件夹和文件到 NT Authority\Local Service 用户帐户:
对于 ReportManager 文件夹中添加读取权限。
默认文件夹位置是 C:\Program Files\Microsoft SQL Server\MSSQL\Reporting 服务。
此外,子文件夹继承权限。
为 Temp 文件夹添加完全控制权限。
默认文件夹位置是 C:\Documents and Settings\User Name\Local Settings。
此外,子文件夹继承权限。
为 Temp 文件夹添加完全控制权限。
默认文件夹位置是 C:\WINDOWS。此外,子文件夹继承权限。
5.重新启动 IIS。

============

实际上,不光是文件夹有这个问题,注册表也有这个问题。

另外,在事件日志中有关性能计数器的错误或警告,多数也是不能访问注册表有关键值的原因。

处理报表时出错。 (rsProcessingAborted)
无法模拟数据源“Onepoint”的用户。 (rsErrorImpersonatingUser)
登录失败。 (rsLogonFailed)
登录失败: 未知的用户名或错误密码。 (异常来自 HRESULT:0x8007052E)

用 SSMS 打开 RS,找到出错的数据源定义,双击,编辑属性,找到连接:
勾选 与数据源建立连接之后模拟经过身份验证的用户。
会要求重新输入密码。