【发布时间】:2020-09-12 03:07:50
【问题描述】:
我面临与许多其他人类似的问题,错误消息“对象名称包含的前缀数量超过了最大数量。最大值为 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 .... 工作正常。
但是当我将它作为程序的一部分运行时,我的程序因上述错误而失败。
链接服务器连接已设置并且工作正常。而且我的程序需要在当前服务器上运行,这消除了在链接服务器上创建程序的范围。希望我的场景是清晰的。
欢迎所有回复。提前致谢。
【问题讨论】:
-
这不是一般的 ANSI/ISO SQL 问题。请指定您使用的 DMBS。
-
您确定给您错误的行是这些行之一吗?此外,您的插入看起来有点可疑。
[CURRENTSERVER].[SCHEMANAME].[TABLENAME]应该是[DATABASENAME].[SCHEMANAME].[TABLENAME]对吧? -
数据库名称在哪里?
标签: sql sql-server