我想在Ubuntu容器中運行的SQL Server 2019實體上創建外部表,查詢AS400上的DB2資料庫。我正在使用ibm iaccess 1.1.0.15 amd64 ODBC驅動程式。
Msg 105082, Level 16, State 1, Line 15
。
105082;通用的ODBC錯誤。NativeOdbcConnection.Open,在OdbconnectionCreate中出錯。SqlState: , NativeError: 111234, 'Error calling: SQLDriverConnect(this->_hdbc, NULL, (SQLWCHAR*)connectionString, SQL_NTS, NULL, 0, &cbConnStrOut, SQL_DRIVER_NOPROMPT), SQL return code: -1 | SQL錯誤資訊。**內部的DmsNative錯誤。SQLGetDiagRec回傳:-1 | ConnectionPooling。1 | 錯誤呼叫: pConn->Create(connectionString, databaseName, useConnectionPooling, packetSize, connectionLoginTimeout, environmentSettings, transactionToken, transactionTokenSize, resourceGroupName, driverCapabilities, spid) | 狀態。FFFF, number: 1, active connections: 1', 連接字串。Driver={IBM i Access ODBC Driver};system=MYAS400SYSTEM;uid=MYAS400UID;server=MYAS400.MYDOMAIN.com.
以下是我使用的Docker檔案
# SQL服務器命令列工具 -自定義影像
# 從Ubuntu 20.04 作為基礎影像
FROM ubuntu:20.04 as base
# 安裝系統實用程式
運行apt-get update &&/span>
apt-get install- y apt-transport-https curl gnupg & &
# 添加自定義的MS資源庫
curl https://packages.microsoft.com/keys/microsoft。 asc | apt-key add - &&/span>
curl https://packages.microsoft. com/config/ubuntu/20. 04/mssql-server2019. list > /etc/apt/sources。 list.d/mssql-server-2019.list &&
curl https://packages.microsoft。 com/config/ubuntu/20. 04/prod.list | tee /etc/apt/sources。 list.d/msprod.list
From 基礎影像
FROM base as release
# 添加 SQL的啟動腳本
COPY 。/usr/src/app
COPY entrypoint.sh /
RUN chmod x /entrypoint.sh
授予權限為setupsql腳本可執行的。
運行 chmod x /usrsrc/app/setupsql.sh
# 安裝SQL服務器驅動程式 和工具
RUN apt-get update
運行apt-get install - y mssql-server-polybase
運行ACCEPT_EULA=Y apt-get install -y msodbcsql17
運行ACCEPT_EULA=Y apt-get install -Y mssql-tools
# 安裝 IBM iAccess ODBC 驅動程式
運行 dpkg -i /usr/src/app/ibm-iaccess-1。 1.0.15-1.0.amd64.deb
運行apt-get install -f
# 清理Docker檔案
運行apt-get clean &&
rm -rf /var/lib/apt/lists
CMD exec /bin /bash entrypoint.sh
我可以使用SSMS通過localhost連接到容器中的SQL服務器實體。創建憑證和資料源都是成功的。創建外部表是我得到錯誤的地方。
以下是創建外部資料源和外部表的 SQL 腳本:
CREATE DATABASE SCOPED CREDENTIAL AS400Credential
WITH IDENTITY = 'AS400UID',
SECRET = 'AS400PWD'。
讀取
創建 外部資料源MYAS400 擁有 (LOCATION = 'odbc://MHAS400. MYDOMAIN.com'。
CONNECTION_OPTIONS = 'DRIVER={IBM i Access ODBC Driver}; SYSTEM=MYAS400;'。
PUSHDOWN = 關閉。
CREDENTIAL = AS400CREDENTIAL)。)
啟用
創建 EXTERNAL TABLE EXT.Test
(
hstr NCHAR(50) NOT NULL,
hreg NCHAR(50) Not NULL,
htr# NCHAR(50) NOT NULL,
httm NCHAR(50) NOT NULL.
)
WITH ( LOCATION='MYAS400DATABASE.SCHEMA.TABLE' , DATA_SOURCE= MYAS400)
關于如何使用PolyBase成功連接到AS400的問題,有什么想法嗎?
uj5u.com熱心網友回復:
PolyBase Generic ODBC 連接目前只在 Windows 上可用。
該功能需要在Windows上使用SQL Server。
配置 PolyBase 以使用 ODBC 通用型別訪問外部資料
目前鏈接服務器到非 SQL 服務器目標,以及外部訪問和不安全 CLR僅適用于 Windows。
您也許可以使用Python 可擴展性和pyodbc來查詢您的 iSeries。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/323100.html
標籤:
