我试图使MSSQL数据库与PostGIS之间同步。在MSSQL视图中有我需要的坐标,投影和其他数据。我试图插入到PostGIS视图中,并在视图的规则中创建几何和变换数据。从MSSQL插入到LINKED POSTGRES导致'pos_loadload_loadload失败'
我创建了所有需要的东西,但是从MSSQL(同为using insert into linked server
或insert into openquery
)插入时,它抛出我下面的错误:
OLE DB provider "MSDASQL" for linked server "PG_SYNC_TEST" returned message "positioned_load in pos_newload failed".
Msg 7343, Level 16, State 2, Line 1 The OLE DB provider "MSDASQL" for linked server "PG_SYNC_TEST" could not INSERT INTO table "[MSDASQL]".
有谁知道发生了什么,什么是设置错了?
另外,MSSQL是2016和PostgreSQL 9.6。
UPDATE - 链接服务器定义
/****** Object: LinkedServer [PG_SYNC_TEST] Script Date: 4/28/2017 8:06:39 AM ******/ EXEC master.dbo.sp_addlinkedserver @server = N'PG_SYNC_TEST', @srvproduct=N'PostgreSQL', @provider=N'MSDASQL', @datasrc=N'pg_sync_test' /* For security reasons the linked server remote logins password is changed with ######## */ EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'PG_SYNC_TEST',@useself=N'False',@locallogin=NULL,@rmtuser=N'mssql_user',@rmtpassword='########'
GO
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'data access', @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'collation name', @optvalue=null GO
EXEC master.dbo.sp_serveroption @server=N'PG_SYNC_TEST', @optname=N'lazy schema validation', @optvalue=N'false' GO
EXEC master.dbo.sp_serveroption @server=N'PG_SYNC_TEST', @optname=N'query timeout', @optvalue=N'0' GO
EXEC master.dbo.sp_serveroption @server=N'PG_SYNC_TEST', @optname=N'use remote collation', @optvalue=N'true' GO
EXEC master.dbo.sp_serveroption @server=N'PG_SYNC_TEST', @optname=N'remote proc transaction promotion', @optvalue=N'true' GO
更新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请看看更新。 – Aleksandar
你还可以发布返回错误的查询吗?它在哪个服务器上执行? –