'OLE DB或ODBC错误:[Expression.Error]此值不支持本机查询

问题描述

我正在尝试使用以下代码片段创建ssas模型。当源是sql server时,我可以创建模型,但是当源是apache phoenix时,我会提到标题错误。以下是有效的代码,而不是有效的代码,为什么对apache phoenix无效?

sql Server:

if (srcType.Equals("sql Server"))
        {
            dataSourceName = "sql Server";
            objDatabase.Model.DataSources.Add(new ProviderDataSource()
            {
                Name = dataSourceName,Description = "A data source deFinition that uses explicit Windows credentials for authentication against sql Server.",ConnectionString = "Provider=MSOLEDBsql;Data Source=" + strSourceServer + ";Initial Catalog=" + srcDB + ";Persist Security Info=True;User ID=" + srcDBUser + ";Password=" + srcDBPassword,ImpersonationMode = Microsoft.analysisservices.Tabular.ImpersonationMode.ImpersonateAnonymous,//  Account = srcSysUser,// Password = srcSysPassword,});
        }

///////形成sql之后

Console.WriteLine("sql--> " + sqlQuery);
                t.Name = strDesteTableName;
                t.Description = strDesteTableName;
                t.Partitions.Add(new Microsoft.analysisservices.Tabular.Partition()
                {
                    Name = srcTable,Source = new QueryPartitionSource()
                    {
                        DataSource = objDatabase.Model.DataSources[dataSourceName],Query = sqlQuery,}
                });
               

                objServer.Databases.Add(objDatabase);
                objDatabase.Model.RequestRefresh(Microsoft.analysisservices.Tabular.RefreshType.Full);
                objDatabase.Update(UpdateOptions.ExpandFull);

凤凰城(不工作):

else if (srcType.Equals("phoenix"))
                {
                    dataSourceName = "DSN=Hortonworks Phoenix ODBC DSN";
                    string json = @"{""protocol"": ""odbc"",""address"": { ""options"": {""dsn"": ""Hortonworks Phoenix ODBC DSN"" } }}";

                    string credJson = @"{""AuthenticationKind"": ""UsernamePassword"",""kind"": ""Odbc"",""path"": ""dsn=Hortonworks Phoenix ODBC DSN"",""Username"": ""root"",""Password"":""D@ntl3tg0"" }";

                    objDatabase.Model.DataSources.Add(new StructuredDataSource()
                    {
                        Name = dataSourceName,Description = "A data source deFinition that uses explicit Windows credentials for authentication against Phoenix.",// ConnectionString = "Provider=MSOLAP;DSN=Hortonworks Phoenix ODBC DSN;UID=root;Pwd=D@ntl3tg0;",//ImpersonationMode = Microsoft.analysisservices.Tabular.ImpersonationMode.ImpersonateAnonymous,//Account = srcSysUser,//Password = srcSysPassword,ConnectionDetails = new ConnectionDetails(json),Credential = new Credential(credJson)
                    });
                }



Console.WriteLine("sql--> " + sqlQuery);
                t.Name = strDesteTableName;
                t.Description = strDesteTableName;
                t.Partitions.Add(new Microsoft.analysisservices.Tabular.Partition()
                {
                    Name = srcTable,}
                });

得到错误

无法将修改保存到服务器。返回错误:'OLE DB或ODBC错误:[Expression.Error]此值不支持本机查询。 '。 在Microsoft.analysisservices.Tabular.Model.SaveChanges(SaveOptions saveOptions) 在Microsoft.analysisservices.Tabular.Model.SaveChanges(SaveFlags saveFlags) 在Microsoft.analysisservices.Tabular.Database.OnAfterUpdate(UpdateOptions选项) 在Microsoft.analysisservices.MajorObject.Update(UpdateOptions选项,UpdateMode模式,XmlaWarningCollection警告) 在Microsoft.analysisservices.MajorObject.Update(UpdateOptions选项) 在SsisExecute.Program.CreateDatabase处(服务器objServer,字符串strCubedbname,字符串strDesteTableName,字符串srcType,字符串strSourceServer,字符串srcDBUser,字符串srcDBPassword,字符串srcDB,字符串srcTable,字符串partitionColums,字符串groupByCols)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)