Delen via


无法绑定由多个部分组成的标识符

近来,我们碰到了一个关于Dynamics AX 2009与Microsoft SQL SERVER 2008分析服务的问题,这个问题发生于把数据源提供者从SQLNCLI.1(Microsoft SQL SERVER 2005本机客户端)切换到SQLNCLI10.1 (Microsoft SQL Server 2008 本机客户端)之后。

上述的切换是必须的,因为数据源提供者SQLNCLI.1(Microsoft SQL SERVER 2005本机客户端)没有在本地安装。详情请见: Microsoft Dynamics™ AX 2009 安装向导中“将Analysis Services配置为连接到SQL SERVER数据库”部分(72页)。

我们继续参照指南操作,若您没有获得完全许可或者已经关闭了配置键,您可以参考白皮书Microsoft Dynamics AX 2009 White Paper: Configure the Default OLAP Cubes 中“设置默认数据立方体”的部分。这本白皮书建议您编辑命名查询,此时问题产生了。

当您想要编辑一个命名查询(比如: CustTable或者VendTable)您可能会得到以下错误:

SQL Execution Error.

Executed SQL statement: SELECT ...
Error Source: Microsoft SQL Server Native Client 10.0
Error Message: The multi-part identifier "dbo.CUSTTABLE.CUSTGROUP.PAYMIDTYPE" could not be bound. ...

最后一部分以“无法绑定由多个部分组成的标识符”开头,该错误消息会针对不同的域出现多次。

如果您将SQLNCLI.1创建的查询与SQLNCLI10.1创建的查询做比对,您可以发现一些不同,正是这些不同造成了以上的错误。

SQLNCLI.1提供者

SELECT CUSTTABLE.ACCOUNTNUM, ..., ADDRESSCOUNTRYREGION.GIROACCOUNTVALIDATIONMETHOD AS ADDRESSCOUNTRYREGION_GIROACCOUNTVALIDATIONMETHOD, CUSTGROUP.CUSTGROUP AS CUSTGROUP_CUSTGROUP, CUSTGROUP.NAME AS CUSTGROUP_NAME ...

SQLNCLI10.1提供者

SELECT CUSTTABLE.ACCOUNTNUM, ...,                   ADDRESSCOUNTRYREGION.GIROACCOUNTVALIDATIONMETHOD AS ADDRESSCOUNTRYREGION_GIROACCOUNTVALIDATIONMETHOD,     dbo.CUSTTABLE.CUSTGROUP.CUSTGROUP AS CUSTGROUP_CUSTGROUP,   dbo.CUSTTABLE.CUSTGROUP.NAME AS CUSTGROUP_NAME ...

有一点需要强调:这个问题只在Visual Studio BIDS 2008的“编辑命名查询”窗体中出现,而并不影响数据立方体的处理。

您当然可以手工重新创建导致上述错误消息的命名查询。然而请注意所有涉及到至少两个数据表合并关系的命名查询都会受到影响。

一个更简单的解决方案如下:

1.  安装Microsoft SQL Server 2005本机客户端,比如通过下载Feature Pack for Microsoft SQL Server 2005 - December 2008

2.  切换回原来的数据提供者SQLNCLI.1。

3.  参照白皮书修正您的数据立方体(错误将不再发生)。

4.  当您完成编辑后,切换到数据提供者SQLNCLI10.1。 

 

原文地址:

https://blogs.msdn.com/b/emeadaxsupport/archive/2009/07/08/sql-execution-error-the-multi-part-identifier-could-not-be-bound.aspx