我遇到类似的问题,其他许多错误消息“对象名称包含的内容超过了最大数量。最大值为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 ....
工作正常。
但是当我作为程序的一部分运行它时,我的程序因上述错误而失败。
链接的服务器连接已设置并正常工作。我的程序需要在当前服务器上运行,这将删除在链接服务器上创建过程的范围。希望我的情景清晰明确。
欢迎所有回复。提前谢谢。
答案 0 :(得分:0)
该行:
INSERT INTO [CURRENTSERVER].[SCHEMANAME].[TABLENAME]
包含服务器名称但不包含数据库名称。你应该使用
INSERT INTO [MYDATABASE].[SCHEMANAME].[TABLENAME]
或
INSERT INTO [CURRENTSERVER].[MYDATABASE].[SCHEMANAME].[TABLENAME]
甚至
INSERT INTO [SCHEMANAME].[TABLENAME]
如果要插入与存储过程相同的数据库