问题描述
尝试使用 MSsql polybase 建立与 Postgressql 服务器的连接。今天我们使用 Linked Server 将 Postgres 数据库中的数据提取到 MSsql 中,并且工作正常。但是 polybase 有一些功能可以解决一些关于加入等的程序问题,因此 polybase 是解决方案。只要它有效! ;-)
但我没有让它工作。而且我在 Google 上找不到任何真正的帮助。
这是代码;
> CREATE DATABASE ScopED CREDENTIAL PG_EXAMPLE WITH IDENTITY = 'pgUSER',Secret = 'verylongpassword';
> CREATE EXTERNAL DATA SOURCE PG_EXAMPLE_DATA
>WITH ( LOCATION = 'odbc://PG_SERVERNAME:5432',>CONNECTION_OPTIONS = 'Driver={Postgresql Unicode(x64)}',>PUSHDOWN = ON,>CREDENTIAL = PG_EXAMPLE);
尝试创建外部表:
> CREATE EXTERNAL TABLE databas(
> namn [nvarchar](255) NULL,> datorid [nvarchar](255) NULL
> ) WITH (
> LOCATION='exampel_databas_on_PGserver',> DATA_SOURCE=PG_EXAMPLE_DATA
> );
ERROR MESSAGE
> Msg 105082,Level 16,State 1,Line 10
> 105082;Generic ODBC error: Error while executing the query .
任何人都可以在这里散播一些光,我做错了什么。也许有人尝试过并让它工作??
非常感谢任何帮助和建议。
谢谢!!!
解决方法
检查 LOCATION 是表的名称,它可能区分大小写,并且您不能指定数据库和架构。如果可以,请尝试与“postgres”用户连接。还可以尝试指定 IP 而不是主机名。 我使用过 ANSI 驱动程序,也尝试使用它:{PostgreSQL ANSI(x64)}。 作为最后一个资源,检查驱动程序版本,我使用 psqlodbc_12_02_0000-x64.zip 进行了测试。