XML解析失败,位于第1行第9列:禁止使用DTD。

4
我已经按照以下文章中所述的配置方法为SQL Analysis服务器配置了HTTP访问:https://technet.microsoft.com/en-us/library/gg492140(v=sql.105).aspx
最终,我已经为我的SQL Analysis服务配置了msmdpump.dll,并尝试在Excel中加载连接字符串时,遇到了“XML解析失败,在第1行第9列禁止使用DTD”的异常。
'C:\inetpub\wwwroot\OLAP'下的web.config内容如下:
<?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”。如果有任何管理员权限限制连接或任何设置遗漏,会出现什么情况?


@levi,是的。我们通过为当前用户提供角色权限来解决了这个问题。 - Pranath
@Pranath,你可以请加上答案的描述吗? - karancan
3个回答

0

我曾经遇到过同样的问题,我做了两件事情来解决它:

首先,我从“Web.Config”文件中删除了“accessPolicy”,使得“handlers”为空。之前该文件包含以下代码:

<handlers accessPolicy="Read, Script">
    ...
</handlers>

在出现问题之前,我还更改了主网站OLAP运行的帐户为新的服务帐户。OLAP应用程序仍在单独的系统帐户下运行,位于单独的应用程序池中。我将OLAP应用程序池更改为新的服务帐户。

当访问DLL(not correct)时,仍然会出现500个内部错误:

https://.../olap/msmdpump.dll

但是现在 Excel 已经成功连接到我的立方体了,没有出现任何错误。


0

通过以下步骤解决了我的问题:

打开SQL Management Studio并连接到分析数据库。进入您的数据库,右键单击“角色”文件夹。选择新角色,为其命名并设置您想要通过XMLA HTTP访问提供的访问级别。


0
尽管上面的建议是出于善意,但错误的根本来源是来自IIS的“500 - 内部服务器错误”。这是你需要关注的重点。
Excel的解析器(MSOLAP)不希望看到包含XHTML 1.0 Strict文档类型的服务器错误第一行:
<!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>
    ...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接