2

我希望使用 Java 连接到 SSAS 2012 并尝试过 olap4j 驱动程序。我在 Linux (Ubuntu 14.04) 平台上工作。

我读过 Olap4j 适用于 Windows,但它适用于 Linux 吗?

我写了一些 Java 代码,它给出了运行时错误。此错误是因为 Linux 机器无法连接到 SSAS。

我已经设置了http访问和 IIS 服务器并使用 msmdpump.dll 进行连接。

以下是Java代码和错误:

代码

package ssas;
import java.sql.Connection;
//import java.lang.*;
import java.sql.DriverManager;
import java.sql.SQLException;    

import org.olap4j.Cell;
import org.olap4j.CellSet;
import org.olap4j.OlapConnection;
import org.olap4j.OlapException;
import org.olap4j.OlapStatement;
import org.olap4j.OlapWrapper;
import org.olap4j.Position;
import org.olap4j.metadata.Member;

public class connexionSSAS
{
    public static void main(String[] args) throws ClassNotFoundException,
                                                  OlapException {

    Class.forName("org.olap4j.driver.xmla.XmlaOlap4jDriver");

    Connection connection = null;
    try {
        connection = DriverManager.getConnection(
            "jdbc:xmla:Server=http://01XXXXXXXX/olap/msmdpump.dll;" +
            "Catalog=sample_Cube");
    } catch (SQLException e) {
        e.printStackTrace();
    }

    if (null == connection) {
        System.out.println("Cnul");
    }

    OlapWrapper wrapper = (OlapWrapper) connection;
    OlapConnection olapConnection = null;
    try {
        olapConnection = wrapper.unwrap(OlapConnection.class);
    } catch (SQLException e) {
        e.printStackTrace();
    }

    olapConnection.setCatalog("sample_Cube");
    OlapStatement statement = null;
    CellSet cellSet = null;        

    System.out.println(olapConnection.getCatalog());

    try {
        statement = (OlapStatement) olapConnection.createStatement();

        CellSet=statement.executeOlapQuery(
            "Summarize(FactDiagnosis,FactDiagnosis[ImportDateKey])");
        args}    
    catch(SQLException e) {
        e.printStackTrace();
    }
    }
}

错误

Exception in thread "main" java.lang.RuntimeException: org.olap4j.OlapException: This connection encountered an exception while executing a query.
at org.olap4j.driver.xmla.DeferredNamedListImpl.getList(DeferredNamedListImpl.java:96)
at org.olap4j.driver.xmla.DeferredNamedListImpl.size(DeferredNamedListImpl.java:116)
at org.olap4j.driver.xmla.XmlaOlap4jConnection.getOlapDatabase(XmlaOlap4jConnection.java:451)
at org.olap4j.driver.xmla.XmlaOlap4jConnection.getOlapCatalogs(XmlaOlap4jConnection.java:527)
at org.olap4j.driver.xmla.XmlaOlap4jConnection.setCatalog(XmlaOlap4jConnection.java:483)
at ssas.connexionSSAS.main(connexionSSAS.java:49)
Caused by: org.olap4j.OlapException: This connection encountered an exception while executing a query.
at org.olap4j.driver.xmla.XmlaHelper.createException(XmlaHelper.java:43)
at org.olap4j.driver.xmla.XmlaOlap4jConnection.executeMetadataRequest(XmlaOlap4jConnection.java:878)
at org.olap4j.driver.xmla.XmlaOlap4jDatabaseMetaData.getMetadata(XmlaOlap4jDatabaseMetaData.java:137)
at org.olap4j.driver.xmla.XmlaOlap4jDatabaseMetaData.getMetadata(XmlaOlap4jDatabaseMetaData.java:67)
at org.olap4j.driver.xmla.XmlaOlap4jDatabaseMetaData.getDatabaseProperties(XmlaOlap4jDatabaseMetaData.java:1044)
at org.olap4j.driver.xmla.XmlaOlap4jConnection.makeConnectionPropertyList(XmlaOlap4jConnection.java:324)
at org.olap4j.driver.xmla.XmlaOlap4jConnection.generateRequest(XmlaOlap4jConnection.java:1037)
at org.olap4j.driver.xmla.XmlaOlap4jConnection.populateList(XmlaOlap4jConnection.java:849)
at org.olap4j.driver.xmla.DeferredNamedListImpl.populateList(DeferredNamedListImpl.java:136)
at org.olap4j.driver.xmla.DeferredNamedListImpl.getList(DeferredNamedListImpl.java:90)
... 5 more

如果我评论包含'OlapConnection'的语句,此代码将运行。任何帮助,将不胜感激。

4

0 回答 0