我的存储过程正在尝试将一条记录写入另一台服务器上的数据库。声明如下:
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来缩短前缀的数量,但似乎实现了这个错误。
我无法在目标数据库上更改我的数据库架构。对于如何解决这个问题,有什么建议吗?
谢谢
发布于 2014-09-30 19:14:42
正确的由四部分组成的表名是server.database.schema.tablename -你有一些多余的部分。
看起来表名是OPC.WriteRequests?如果是,则必须使用方括号:SQL05.ManufacturingPortal.dbo.[OPC.WriteRequests]
但也许你只是名字的某一部分是错误的?
发布于 2019-06-05 03:10:21
在我的例子中,它实际上希望在INTO表所在的服务器上运行:
SELECT *
INTO [database].[schema].[table]
FROM [server].[database].[schema].[table]
发布于 2014-09-30 19:26:18
您收到该错误的原因是因为您使用的名称无效。您似乎引用了两个架构:dbo
和OPC
。
有效语法为server_name.database_name.schema_name.object_name
,与INSERT
的MSDN article上引用的语法相同。
删除不正确的架构,然后重试。
https://stackoverflow.com/questions/26119343
复制相似问题