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'。是否有任何管理员权限限制连接或任何设置遗漏?

XML解析在第1行第9列失败:禁止使用DTD

解决了我的问题,

为此,打开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>
    ...