对象名称包含的前缀数量超过最大数量。最大值为2

时间:2014-12-16 10:24:05

标签: sql sql-server

我遇到类似的问题,其他许多错误消息“对象名称包含的内容超过了最大数量。最大值为2。”

我的情景是,

CREATE PROCEDURE DBO.[USP_PROCEDURE]
AS
BEGIN

DECLARE @LOADTIME DATETME2(7)
SET @LOADTIME = (SELECT LOADTIME FROM [LINKEDSERVERNAME].[DATABASENAME].[SCHEMANAME].[TABLENAME] WHERE TABLENAME = 'XXXXXX')

INSERT INTO [CURRENTSERVER].[SCHEMANAME].[TABLENAME]
SELECT COLUMN1, COLUMN2,  
.... FROM TABLENAME JOIN TABLENAME1 ON ....
...
...

END

包含加载时间的表存在于链接服务器/数据库中,它是重要的值,通过@LOADTIME在我的过程的where子句中进一步使用。当我单独尝试当前服务器时,查询SELECT LOADTIME ....工作正常。 但是当我作为程序的一部分运行它时,我的程序因上述错误而失败。 链接的服务器连接已设置并正常工作。我的程序需要在当前服务器上运行,这将删除在链接服务器上创建过程的范围。希望我的情景清晰明确。 欢迎所有回复。提前谢谢。

1 个答案:

答案 0 :(得分:0)

该行:

INSERT INTO [CURRENTSERVER].[SCHEMANAME].[TABLENAME]

包含服务器名称但不包含数据库名称。你应该使用

INSERT INTO [MYDATABASE].[SCHEMANAME].[TABLENAME]

INSERT INTO [CURRENTSERVER].[MYDATABASE].[SCHEMANAME].[TABLENAME]

甚至

INSERT INTO [SCHEMANAME].[TABLENAME]

如果要插入与存储过程相同的数据库