Sql server 使用自定义SQL查询时出现PowerPivot错误

Sql server 使用自定义SQL查询时出现PowerPivot错误,sql-server,powerpivot,Sql Server,Powerpivot,我在SQLServerManagementStudio 2012中构建了一个查询,经测试运行良好。但是,尝试在Power Pivot中使用此代码时,我收到以下错误: OLE DB或ODBC错误 An error occurred while processing table 'Query'. The current operation was cancelled because another operation in the transaction failed. 有没有想过是什么导致了这个

我在SQLServerManagementStudio 2012中构建了一个查询,经测试运行良好。但是,尝试在Power Pivot中使用此代码时,我收到以下错误:

OLE DB或ODBC错误

An error occurred while processing table 'Query'.
The current operation was cancelled because another operation in the transaction failed.
有没有想过是什么导致了这个错误

我的问题是:

DECLARE @beginDate as DATE;
DECLARE @endDate as DATE;
DECLARE @tempTable AS TABLE(BusinessUnitID INTEGER, BusinessUnitName VARCHAR(255), SkillCode VARCHAR(255), 
                    Actuals INTEGER, DateCounted DATE)

DECLARE @count as INTEGER;

SET @beginDate = (SELECT MAX(DateCounted) FROM mmapps.dbo.t_EMS_BM_ActualsHistory);
SET @endDate = DATEADD(week,1,@beginDate);
SET @count = 0;

WHILE DATEADD(week,@count,@beginDate) < DATEADD(year,1,@beginDate)
BEGIN
    IF (@count = 0)
    BEGIN
        INSERT INTO @tempTable (BusinessUnitID,BusinessUnitName,SkillCode, Actuals, DateCounted)
        SELECT a.BusinessUnitID, a.BusinessUnitName, a.SkillCode, a.TotalHeads + 
            (
            SELECT COUNT(*) 
            FROM mmapps.dbo.t_EMS_BM_ChartData AS b 
            WHERE a.BusinessUnitID = b.BusinessUnitID AND a.SkillCode = b.SkillCode 
                AND b.ActivityTypeID BETWEEN 6 AND 10 AND b.SkillCode IS NOT NULL
                AND b.Date < @endDate) -
            (
            SELECT COUNT(*) 
            FROM mmapps.dbo.t_EMS_BM_ChartData AS b 
            WHERE a.BusinessUnitID = b.BusinessUnitID AND a.SkillCode = b.SkillCode 
                AND b.ActivityTypeID BETWEEN 6 AND 10 AND b.SkillCode IS NOT NULL
                AND b.Date < @endDate
            )
            AS Actuals

        ,DATEADD(week,@count,@beginDate) AS DateCounted
        FROM mmapps.dbo.t_EMS_BM_ActualsHistory AS a
        WHERE a.DateCounted = @beginDate
    END

    IF (@count > 0)
    BEGIN
        INSERT INTO @tempTable (BusinessUnitID,BusinessUnitName,SkillCode, Actuals, DateCounted)
        SELECT a.BusinessUnitID, a.BusinessUnitName, a.SkillCode, a.Actuals + 
            (
            SELECT COUNT(*) 
            FROM mmapps.dbo.t_EMS_BM_ChartData AS b 
            WHERE a.BusinessUnitID = b.BusinessUnitID AND a.SkillCode = b.SkillCode 
                AND b.ActivityTypeID BETWEEN 6 AND 10 AND b.SkillCode IS NOT NULL
                AND b.Date >=@beginDate AND b.Date < @endDate) -
            (
            SELECT COUNT(*) 
            FROM mmapps.dbo.t_EMS_BM_ChartData AS b 
            WHERE a.BusinessUnitID = b.BusinessUnitID AND a.SkillCode = b.SkillCode 
                AND b.ActivityTypeID BETWEEN 6 AND 10 AND b.SkillCode IS NOT NULL
                AND b.Date >=@beginDate AND b.Date < @endDate
            )
            AS Actuals

        ,DATEADD(week,@count,@beginDate) AS DateCounted
        FROM @tempTable AS a
        WHERE a.DateCounted = (SELECT MAX(DateCounted) FROM @tempTable)
    END
    SET @count = @count + 1
END

SELECT * FROM @tempTable
ORDER BY DateCounted DESC

经过更多的研究和尝试和错误,一个简单的增加设置NOCOUNT;似乎治愈了我所有的烦恼。

您使用的是哪种数据源?所有数据都是从SQL Server 2012中提取的