

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# ODBC
<a name="query-ODBC"></a>

的開放原始碼 [ODBC 驅動程式](https://github.com/awslabs/aws-iotsitewise-odbc-driver) AWS IoT SiteWise 為開發人員 AWS IoT SiteWise 提供 SQL 相關界面，並可從 Power BI Desktop 和 Microsoft Excel 等商業智慧 (BI) 工具進行連線。 AWS IoT SiteWise ODBC 驅動程式目前可在 [Windows](https://github.com/awslabs/aws-iotsitewise-odbc-driver/releases) 上使用，並支援 SSO with Okta and Microsoft Azure Active Directory (AD)。

如需詳細資訊，請參閱 [AWS IoT SiteWise GitHub 上的 ODBC 驅動程式文件](https://github.com/awslabs/aws-iotsitewise-odbc-driver/blob/main/docs/markdown/index.md)。

**Topics**
+ [

# ODBC 驅動程式的連線字串語法和選項
](query-ODBC-connecting.md)
+ [

# AWS IoT SiteWise ODBC 驅動程式的連線字串範例
](query-ODBC-connecting-examples.md)
+ [

# 對與 ODBC 驅動程式的連線進行故障診斷
](query-ODBC-connecting-troubleshooting.md)

# ODBC 驅動程式的連線字串語法和選項
<a name="query-ODBC-connecting"></a>

指定 ODBC 驅動程式連線字串選項的語法如下：

```
Driver={AWS IoT SiteWise ODBC Driver};(option)=(value);
```

可用選項如下：

**驅動程式連線選項**
+ **`Driver`**   *（必要）*   –   與 ODBC 搭配使用的驅動程式。

  預設為 AWS IoT SiteWise。
+ **`DSN`**   –   用於設定連線的資料來源名稱 (DSN)。

  預設值為 `NONE`。
+ **`Auth`**   –   身分驗證模式。這必須是下列其中一項：
  + `AWS_PROFILE` – 使用預設登入資料鏈。
  + `IAM` – 使用 AWS IAM 登入資料。
  + `AAD` – 使用 Azure Active Directory (AD) 身分提供者。
  + `OKTA` – 使用 Okta 身分提供者。

  預設值為 `AWS_PROFILE`。

**端點組態選項**
+ **`EndpointOverride`**   –   AWS IoT SiteWise 服務的端點覆寫。這是覆寫區域的進階選項。例如：

  ```
  iotsitewise.us-east-1.amazonaws.com
  ```
+ **`Region`**   –   AWS IoT SiteWise 服務端點的簽署區域。

  預設值為 `us-east-1`。

**登入資料提供者選項**
+ **`ProfileName`**   –   AWS 組態檔案中的設定檔名稱。

  預設值為 `NONE`。

**AWS IAM 身分驗證選項**
+ **`UID`** 或 **`AccessKeyId`**   –   AWS 使用者存取金鑰 ID。如果連線字串中同時提供 `AccessKeyId` `UID`和 ，除非值為空白，否則將使用 `UID`值。

  預設值為 `NONE`。
+ **`PWD`** 或 **`SecretKey`**   – AWS   使用者私密存取金鑰。如果連線字串中同時提供 `SecretKey` `PWD`和 ，除非值為空白，否則將使用 搭配 `PWD`的值。

  預設值為 `NONE`。
+ **`SessionToken`**   –   存取已啟用多重要素驗證 (MFA) 的資料庫所需的臨時工作階段字符。請勿在輸入` = `中包含結尾。

  預設值為 `NONE`。

**Okta 的 SAML 型身分驗證選項**
+ **`IdPHost`**   –   指定 IdP 的主機名稱。

  預設值為 `NONE`。
+ **`UID`** 或 **`IdPUserName`**   –   指定 IdP 帳戶的使用者名稱。如果連線字串中同時提供 `IdPUserName` `UID`和 ，除非值為空白，否則將使用 `UID`值。

  預設值為 `NONE`。
+ **`PWD`** 或 **`IdPPassword`**   –   指定 IdP 帳戶的密碼。如果連線字串中同時提供 `IdPPassword` `PWD`和 ，除非值為空白，否則將使用 `PWD`值。

  預設值為 `NONE`。
+ **`OktaApplicationID`**   –   與 AWS IoT SiteWise 應用程式相關聯的唯一 Okta 提供的 ID。尋找應用程式 ID (AppId) 的位置位於應用程式中繼資料中提供的`entityID`欄位中。例如：

  ```
  entityID="http://www.okta.com//(IdPAppID)
  ```

  預設值為 `NONE`。
+ **`RoleARN`**   –   發起人所擔任角色的 Amazon Resource Name (ARN)。

  預設值為 `NONE`。
+ **`IdPARN`**   –   IAM 中描述 IdP 之 SAML 提供者的 Amazon Resource Name (ARN)。

  預設值為 `NONE`。

**Azure Active Directory 的 SAML 型身分驗證選項**
+ **`UID`** 或 **`IdPUserName`**   –   指定 IdP 帳戶的使用者名稱。

  預設值為 `NONE`。
+ **`PWD`** 或 **`IdPPassword`**   –   指定 IdP 帳戶的密碼。

  預設值為 `NONE`。
+ **`AADApplicationID`**   – Azure AD   上已註冊應用程式的唯一 ID。

  預設值為 `NONE`。
+ **`AADClientSecret`**   –   與 Azure AD 上已註冊應用程式相關聯的用戶端秘密，用於授權擷取字符。

  預設值為 `NONE`。
+ **`AADTenant`**   –   Azure AD 租用戶 ID。

  預設值為 `NONE`。
+ **`RoleARN`**   –   發起人所擔任角色的 Amazon Resource Name (ARN)。

  預設值為 `NONE`。
+ **`IdPARN`**   –   IAM 中描述 IdP 之 SAML 提供者的 Amazon Resource Name (ARN)。

  預設值為 `NONE`。

**AWS SDK （進階） 選項**
+ **`RequestTimeout`**   –   SDK 在逾時之前 AWS 等待查詢請求的時間，以毫秒為單位。任何非正值都會停用請求逾時。

  預設值為 `3000`。
+ **`ConnectionTimeout`**   –   SDK 在逾時之前 AWS 等待透過開放連線傳輸資料的時間，以毫秒為單位。值為 0 會停用連線逾時。此值不得為負數。

  預設值為 `1000`。
+ **`MaxRetryCountClient`**   –   SDK 中具有 5xx 錯誤代碼的可重試錯誤重試嘗試次數上限。值不得為負。

  預設值為 `0`。
+ **`MaxConnections`**   –   允許同時開啟 AWS IoT SiteWise 服務 HTTP 連線的數量上限。值必須為正值。

  預設值為 `25`。

**ODBC 驅動程式記錄選項**
+ **`LogLevel`**   –   驅動程式記錄的日誌層級。必須是下列其中一個：
  + **0**  (OFF)。
  + **1**  (ERROR)。
  + **2**  （警告）。
  + **3**  (INFO)。
  + **4**  (DEBUG)。

  預設值為 `1`(ERROR)。

  **警告：**使用 DEBUG 記錄模式時，驅動程式可以記錄個人資訊。
+ **`LogOutput`**   – 要存放日誌檔案的 資料夾。

  預設值為：
  + **Windows：**`%USERPROFILE%`，如果無法使用，則為 `%HOMEDRIVE%%HOMEPATH%`。
  + **macOS 和 Linux：**`$HOME`，如果無法使用，則為函數`getpwuid(getuid())`傳回值`pw_dir`中的 欄位。

**SDK 記錄選項**

 AWS SDK 日誌層級與 AWS IoT SiteWise ODBC 驅動程式日誌層級不同。設定一個不會影響另一個。

使用環境變數 設定 SDK 日誌層級`SW_AWS_LOG_LEVEL`。有效的值如下：
+ `OFF`
+ `ERROR`
+ `WARN`
+ `INFO`
+ `DEBUG`
+ `TRACE`
+ `FATAL`

如果`SW_AWS_LOG_LEVEL`未設定 ，軟體開發套件日誌層級會設定為預設值，即 `WARN`。

## 透過代理連線
<a name="query-ODBC-connecting-proxy"></a>

ODBC 驅動程式支援 AWS IoT SiteWise 透過代理連線至 。若要使用此功能，請根據您的代理設定設定下列環境變數：
+ **`SW_PROXY_HOST`**   –   代理主機。
+ **`SW_PROXY_PORT`**   –   代理連接埠號碼。
+ **`SW_PROXY_SCHEME`**   –   代理結構描述， `http`或 `https`。
+ **`SW_PROXY_USER`**   –   代理身分驗證的使用者名稱。
+ **`SW_PROXY_PASSWORD`**   –   代理身分驗證的使用者密碼。
+ **`SW_PROXY_SSL_CERT_PATH`**   –   用於連線至 HTTPS 代理的 SSL 憑證檔案。
+ **`SW_PROXY_SSL_CERT_TYPE`**   –   代理用戶端 SSL 憑證的類型。
+ **`SW_PROXY_SSL_KEY_PATH`**   –   用於連線至 HTTPS 代理的私有金鑰檔案。
+ **`SW_PROXY_SSL_KEY_TYPE`**   –   用來連線至 HTTPS 代理的私有金鑰檔案類型。
+ **`SW_PROXY_SSL_KEY_PASSWORD`**   –   用於連線至 HTTPS 代理的私有金鑰檔案的密碼短語。

# AWS IoT SiteWise ODBC 驅動程式的連線字串範例
<a name="query-ODBC-connecting-examples"></a>

## 使用 IAM 憑證連線至 ODBC 驅動程式的範例
<a name="query-ODBC-connecting-examples-iam"></a>

```
Driver={AWS IoT SiteWise ODBC Driver};Auth=IAM;AccessKeyId=(your access key ID);SecretKey=(your secret key);SessionToken=(your session token);Region=us-east-1;
```

## 使用設定檔連線至 ODBC 驅動程式的範例
<a name="query-ODBC-connecting-examples-profile"></a>

```
Driver={AWS IoT SiteWise ODBC Driver};ProfileName=(the profile name);region=us-east-1;
```

驅動程式會嘗試使用 中提供的登入資料進行連線`~/.aws/credentials`，或者如果在環境變數 中指定檔案`AWS_SHARED_CREDENTIALS_FILE`，則會使用該檔案中的登入資料進行連線。

## 使用 Okta 連線至 ODBC 驅動程式的範例
<a name="query-ODBC-connecting-examples-okta"></a>

```
Driver={AWS IoT SiteWise ODBC Driver};Auth=OKTA;region=us-east-1;idPHost=(your host at Okta);idPUsername=(your user name);idPPassword=(your password);OktaApplicationID=(your Okta AppId);roleARN=(your role ARN);idPARN=(your Idp ARN);
```

## 使用 Azure Active Directory (AAD) 連線至 ODBC 驅動程式的範例
<a name="query-ODBC-connecting-examples-aad"></a>

```
Driver={AWS IoT SiteWise ODBC Driver};Auth=AAD;region=us-east-1;idPUsername=(your user name);idPPassword=(your password);aadApplicationID=(your AAD AppId);aadClientSecret=(your AAD client secret);aadTenant=(your AAD tenant);roleARN=(your role ARN);idPARN=(your idP ARN);
```

## 連接至具有指定端點且日誌層級為 2 的 ODBC 驅動程式的範例 （警告）
<a name="query-ODBC-connecting-examples-okta"></a>

```
Driver={AWS IoT SiteWise ODBC Driver};Auth=IAM;AccessKeyId=(your access key ID);SecretKey=(your secret key);EndpointOverride=iotsitewise.us-east-1.amazonaws.com;Region=us-east-1;LogLevel=2;
```

# 對與 ODBC 驅動程式的連線進行故障診斷
<a name="query-ODBC-connecting-troubleshooting"></a>

**注意**  
如果 DSN 中已指定使用者名稱和密碼，請勿在 ODBC 驅動程式管理員要求時再次指定使用者名稱和密碼。

當連線字串選項在連線字串中傳遞超過一次時，`Re-writing (connection string option) (have you specified it several times?)`會發生`01S02`具有訊息的錯誤代碼 。多次指定選項會導致錯誤。與 DSN 和連線字串建立連線時，如果已在 DSN 中指定連線選項，請勿在連線字串中再次指定。