XML解析在第1行第9列失败:禁止使用DTD
本文关键字:禁止 DTD 失败 9列 1行第 XML | 更新日期: 2023-09-27 18:17:08
我已经为SQL分析服务器配置了HTTP访问,如下文中所述。https://technet.microsoft.com/en-us/library/gg492140 (v = sql.105) . aspx
最后,我为我的SQL分析服务配置了msmdpump.dll,我试图在Excel中加载连接字符串,我得到了"XML解析在第1行失败,第9列DTD被禁止"异常。
网络。从'C:'inetpub'wwwroot'OLAP'配置是,
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<identity impersonate="true" />
<authentication mode="Forms" />
</system.web>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, POST"/>
<add name="Allow" value="OPTIONS, TRACE, GET, HEAD, POST, PUT"/>
<add name="Access-Control-Allow-Headers" value="Origin, Content-Type, Accept"/>
</customHeaders>
</httpProtocol>
<handlers>
<add name="OLAP" path="*.dll" verb="*" modules="IsapiModule" scriptProcessor="C:'inetpub'wwwroot'OLAP'msmdpump.dll" resourceType="File" preCondition="bitness64" />
</handlers>
</system.webServer>
</configuration>
安全身份的应用池是'NetworkService'。是否有任何管理员权限限制连接或任何设置遗漏?
解决了我的问题,
为此,打开SQL Management Studio并连接到分析数据库。转到数据库并右键单击Roles文件夹。选择新角色,给它起一个名字,并设置您希望通过xmlla HTTP access提供的访问级别。我也有同样的问题,我做了两件事来解决它:
首先,我从"Web"中删除了"accessPolicy"。配置"文件,使"处理程序"为空,先前的文件文件包含以下代码:
<handlers accessPolicy="Read, Script">
...
</handlers>
我还(在这个问题之前)将OLAP运行的主要网站的帐户更改为一个新的服务帐户。OLAP应用程序仍然在单独的应用程序池上的单独系统帐户下运行。我将OLAP应用程序池更改为新的服务帐户。
访问DLL时,我仍然得到一个500内部错误(不正确):
https://.../olap/msmdpump.dll
但是excel现在连接到我的立方体没有错误。
尽管上面的建议是善意的,但错误的基本来源是来自IIS的"500 -内部服务器错误"。这才是你需要关注的。
Excel的解析器(MSOLAP)不期望第一行包含XHTML 1.0严格文档类型的服务器错误:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>500 - Internal server error.</title>
...