从MSSQL插入LINKED POSTGRES会导致pos_newload中的locate_load失败'

时间:2017-04-27 10:23:24

标签: sql-server postgresql odbc postgis linked-server

我试图在MSSQL数据库与PostGIS之间进行同步。在MSSQL视图中有我需要的坐标,投影和其他数据。我试图插入PostGIS视图并根据视图规则创建几何和转换数据。

我创建了所有需要的东西,但是当从MSSQL插入时(同样适用于using insert into linked serverinsert into openquery),它会抛出以下错误:

  

OLE DB提供程序" MSDASQL"对于链接服务器" PG_SYNC_TEST"已返回的消息" pos_newload中的44,4. ["。

     

Msg 7343,Level 16,State 2,Line 1   OLE DB提供程序" MSDASQL"对于链接服务器" PG_SYNC_TEST"无法插入表格#34; [MSDASQL]"。

有谁知道发生了什么以及设置错误了什么?

此外,MSSQL是2016年和PostgreSQL 9.6。

更新 - 链接服务器定义

  

/ ******对象:LinkedServer [PG_SYNC_TEST]脚本日期:4/28/2017   上午8:06:39 ****** / EXEC master.dbo.sp_addlinkedserver @server =   N' PG_SYNC_TEST',@ srvproduct = N' PostgreSQL',@ provider = N' MSDASQL',   @ DATASRC = N' pg_sync_test' / *出于安全原因,链接服务器   使用######## * / EXEC更改远程登录密码   master.dbo.sp_addlinkedsrvlogin   @ rmtsrvname的数据类型= N' PG_SYNC_TEST',@ useself = N'假',@ locallogin的= NULL,@归为rmtuser = N' mssql_user',@ rmtpassword =' ## ######'

     

GO

     

EXEC master.dbo.sp_serveroption @ server = N' PG_SYNC_TEST',   @ optname = N'整理兼容',@ optvalue = N' false' GO

     

EXEC master.dbo.sp_serveroption @ server = N' PG_SYNC_TEST',   @ optname = N'数据访问',@ optvalue = N' true' GO

     

EXEC master.dbo.sp_serveroption @ server = N' PG_SYNC_TEST',   @ optname = N' dist',@ optvalue = N' true' GO

     

EXEC master.dbo.sp_serveroption @ server = N' PG_SYNC_TEST',   @ optname = N' pub',@ optvalue = N' true' GO

     

EXEC master.dbo.sp_serveroption @ server = N' PG_SYNC_TEST',   @ optname = N' rpc',@ optvalue = N' true' GO

     

EXEC master.dbo.sp_serveroption @ server = N' PG_SYNC_TEST',   @ optname = N' rpc out',@ optvalue = N' true' GO

     

EXEC master.dbo.sp_serveroption @ server = N' PG_SYNC_TEST',   @ optname = N' sub',@ optvalue = N' true' GO

     

EXEC master.dbo.sp_serveroption @ server = N' PG_SYNC_TEST',   @ optname = N' connect timeout',@ optvalue = N' 0' GO

     

EXEC master.dbo.sp_serveroption @ server = N' PG_SYNC_TEST',   @ optname = N'归类名称',@ optvalue = null GO

     

EXEC master.dbo.sp_serveroption @ server = N' PG_SYNC_TEST',   @ optname = N'懒惰架构验证',@ optvalue = N' false' GO

     

EXEC master.dbo.sp_serveroption @ server = N' PG_SYNC_TEST',   @ optname = N'查询超时',@ optvalue = N' 0' GO

     

EXEC master.dbo.sp_serveroption @ server = N' PG_SYNC_TEST',   @ optname = N'使用远程整理',@ optvalue = N' true' GO

     

EXEC master.dbo.sp_serveroption @ server = N' PG_SYNC_TEST',   @ optname = N'远程proc交易促销',@ optvalue = N' true' GO

数据源(ODBC x64) datasource (ODBC x64)

更新2 - 返回错误的查询:

INSERT INTO PG_SYNC_TEST.sync.[public].v_test_points
(lat, lng, projection, elevation, geochem)
SELECT lat, lng, projection, elevation, geochem
FROM geochem

1 个答案:

答案 0 :(得分:1)

检查PG_SYNC_TEST.sync&是否启用了任何触发器[public].v_test_points - 如果是,请禁用并重试。