在SQL Server 2008中使用带有函数的导出数据选项时出错

在SQL Server 2008中使用带有函数的导出数据选项时出错,sql,sql-server-2008,export-to-excel,Sql,Sql Server 2008,Export To Excel,这可能是一个很容易回答的问题,但我想不出来 我有一个要导出到Excel的查询。我遵循了详细的说明,但sql查询不正确,因为使用了我前面定义的函数 这是我定义的函数: CREATE FUNCTION FullMonthsSeparation ( @DateA DATETIME, @DateB DATETIME ) RETURNS INT AS BEGIN DECLARE @Result INT DECLARE @DateX DATETIME DECLARE @DateY DA

这可能是一个很容易回答的问题,但我想不出来

我有一个要导出到Excel的查询。我遵循了详细的说明,但sql查询不正确,因为使用了我前面定义的函数

这是我定义的函数:

CREATE FUNCTION FullMonthsSeparation 
(
    @DateA DATETIME,
    @DateB DATETIME
)

RETURNS INT
AS
BEGIN
DECLARE @Result INT

DECLARE @DateX DATETIME
DECLARE @DateY DATETIME

IF(@DateA < @DateB)
BEGIN
    SET @DateX = @DateA
    SET @DateY = @DateB
END
ELSE
BEGIN
    SET @DateX = @DateB
    SET @DateY = @DateA
END

SET @Result = (
    SELECT 
    CASE 
        WHEN DATEPART(DAY, @DateX) > DATEPART(DAY, @DateY)
            THEN DATEDIFF(MONTH, @DateX, @DateY) - 1
        ELSE DATEDIFF(MONTH, @DateX, @DateY)
    END
)
RETURN @Result
END
GO
这是我收到的错误信息:

无法分析该语句。补充资料:推迟 无法完成准备。无法准备对账单。 找不到列“dbo”或用户定义的函数或 聚合“dbo.fullmonthseparation”,或名称不明确

但是,当我执行查询时,它会毫无问题地运行

如果我将sql查询更改为
[BaseSR].dbo.fullmonthseparation(…
),则错误为:

无法分析该语句。其他信息:已延迟 无法完成准备。无法准备对账单。 找不到列“BaseSR”或用户定义的函数或 聚合“BaseSR.dbo.fullmonthseparation”,或名称不明确


有什么想法吗?

您已经证明了数据库名称的正确性,这表明执行上下文不是
[BaseSR]
,这可以解释为什么找不到该函数

尝试对函数执行相同的操作:

[BaseSR].dbo.FullMonthsSeparation(...

我建议采取简单的方法-从那里创建视图并导出数据!:)

我试过。。。它不起作用。我编辑了我的问题,添加了错误消息“我得到了什么是SanRoque”?-您问题中的数据库名称是
BaseSR
您的意思是手动将结果复制到Excel?我一直在这样做,但我想学会这样做,这样看起来更整洁
[BaseSR].dbo.FullMonthsSeparation(...