【发布时间】:2017-07-27 16:31:31
【问题描述】:
我正在尝试在 MSSQL 数据库与 PostGIS 之间进行同步。 MSSQL 视图中有我需要的坐标、投影和其他数据。我正在尝试插入 PostGIS 视图并在视图规则中创建几何图形和转换数据。
我创建了所有需要的东西,但是当从 MSSQL(using insert into linked server 或 insert 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'collation 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
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 再次更新。两台服务器都在本地主机上。
-
你能发布你的表格定义吗 -
geochem和v_test_points?
标签: sql-server postgresql odbc postgis linked-server