首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对象名称包含的前缀超过了最大数量。最大值为3

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

Stack Overflow用户
提问于 2014-09-30 19:09:46
回答 10查看 96.8K关注 0票数 14

我的存储过程正在尝试将一条记录写入另一台服务器上的数据库。声明如下:

代码语言:javascript
复制
IF @Builds > 0
   BEGIN
        SET @DPU = @Failures / @Builds
        INSERT INTO SQL05.ManufacturingPortal.dbo.OPC.WriteRequests (ID, RegisterID, Value, RequestedDate, IsCompleted)
        VALUES(@PLCID, 'F8:10' , CAST(@DPU AS NUMERIC(10,2)), GETDATE(), 0)    
    END 

但是,当我尝试创建存储过程时-我得到以下错误:

对象名称'SQL05.ManufacturingPortal.dbo.OPC.WriteRequests‘包含的前缀超过了最大数量。最大值为3。

我曾尝试创建一个别名为Server.DB.DBO来缩短前缀的数量,但似乎实现了这个错误。

我无法在目标数据库上更改我的数据库架构。对于如何解决这个问题,有什么建议吗?

谢谢

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2014-09-30 19:14:42

正确的由四部分组成的表名是server.database.schema.tablename -你有一些多余的部分。

看起来表名是OPC.WriteRequests?如果是,则必须使用方括号:SQL05.ManufacturingPortal.dbo.[OPC.WriteRequests]

但也许你只是名字的某一部分是错误的?

票数 11
EN

Stack Overflow用户

发布于 2019-06-05 03:10:21

在我的例子中,它实际上希望在INTO表所在的服务器上运行:

代码语言:javascript
复制
SELECT * 
INTO [database].[schema].[table] 
FROM [server].[database].[schema].[table]
票数 7
EN

Stack Overflow用户

发布于 2014-09-30 19:26:18

您收到该错误的原因是因为您使用的名称无效。您似乎引用了两个架构:dboOPC

有效语法为server_name.database_name.schema_name.object_name,与INSERTMSDN article上引用的语法相同。

删除不正确的架构,然后重试。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26119343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档