【问题标题】:insert into LINKED POSTGRES from MSSQL causes 'positioned_load in pos_newload failed'从 MSSQL 插入 LINKED POSTGRES 会导致“pos_newload 中的 positioned_load 失败”
【发布时间】:2017-07-27 16:31:31
【问题描述】:

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

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

链接服务器“PG_SYNC_TEST”的 OLE DB 提供程序“MSDASQL”返回消息“pos_newload 中的定位加载失败”。

消息 7343,第 16 级,状态 2,第 1 行 链接服务器“PG_SYNC_TEST”的 OLE DB 提供程序“MSDASQL”无法插入表“[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'False',@locallogin=NULL,@rmtuser=N'mssql_user',@rmtpassword='########'

EXEC master.dbo.sp_serveroption @server=N'PG_SYNC_TEST', @optname=N'collat​​ion compatible', @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' 去

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

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

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

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

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=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'remote proc transaction Promotion', @optvalue=N'true' GO

数据源 (ODBC x64)

UPDATE 2 - 返回错误的查询:

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

【问题讨论】:

  • 请证明链接服务器的完整查询和定义exec sys.sp_linkedservers
  • @MikhailLobanov 请查看更新。
  • 您也可以发布返回错误的查询吗?它在哪个服务器上执行?
  • @MikhailLobanov 再次更新。两台服务器都在本地主机上。
  • 你能发布你的表格定义吗 - geochemv_test_points

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 1970-01-01
    • 2020-02-17
    • 2013-02-07
    • 2015-03-24
    • 1970-01-01
    相关资源
    最近更新 更多