共用方式為


將數據匯出至 SQL

將數據匯出至 SQL 可讓您執行查詢,並將其結果傳送至 SQL 資料庫中的數據表,例如 Azure SQL 資料庫 服務所裝載的 SQL 資料庫。

權限

您必須至少有 資料表管理員 許可權才能執行此命令。

語法

.export[async] to sql sqlTableName sqlConnectionString [ propertyName = propertyValue [, (with ...]] <| )查詢

深入瞭解 語法慣例

參數

姓名 類型​​ 必要 描述
async string 如果指定,命令會以異步方式執行。
SqlTableName string ✔️ 要在其中插入數據的 SQL 資料庫資料表名稱。 為了防止插入式攻擊,此名稱會受到限制。
SqlConnectionString string ✔️ SQL 端點和資料庫的 連接字串。 字串必須遵循 ADO.NET 連接字串 格式。 基於安全性考慮,連接字串 會受到限制。
PropertyNamePropertyValue string 選擇性 屬性的清單。

支援的屬性

名稱 描述
firetriggers truefalse 如果 true為 ,則會指示目標系統引發 SQL 資料表上定義的 INSERT 觸發程式。 預設值為 false。 如需詳細資訊,請參閱 BULK INSERTSystem.Data.SqlClient.SqlBulkCopy
createifnotexists truefalse 如果 true為 ,則會在目標 SQL 資料表不存在時建立; primarykey 在此情況下,必須提供 屬性,以指出主鍵的結果數據行。 預設值為 false
primarykey 如果 createifnotexiststrue,則這個屬性會指出結果中數據行的名稱,如果此命令所建立,則會當做 SQL 資料表的主鍵使用。
persistDetails bool 表示命令應該保存其結果(請參閱 async 旗標)。 默認為 true 在異步執行中,但如果呼叫端不需要結果,則可以關閉。 在同步執行中預設為 false ,但可以開啟。
token string Microsoft Kusto 將轉送至 SQL 端點以進行驗證的 Entra 存取令牌。 設定時,SQL 連接字串 不應該包含 、 User IDPasswordAuthentication驗證資訊。

驗證和授權

驗證方法是以所提供的 連接字串 為基礎,存取 SQL 資料庫所需的許可權會因驗證方法而異。

將數據匯出至 SQL 的支援驗證方法Microsoft Entra 整合式(模擬)驗證使用者名稱/密碼驗證。 若要進行模擬驗證,請確定主體對資料庫具有下列許可權:

  • 現有數據表:數據表UPDATE和INSERT
  • 新數據表:CREATE、UPDATE 和 INSERT

注意

可能的話,慣用的驗證方法是Microsoft Entra 整合式(模擬)驗證。

限制事項

將數據匯出至 SQL 資料庫時,有一些限制:

  1. Kusto 是雲端服務,因此 連接字串 必須指向可從雲端存取的資料庫。 (特別是,由於無法從公用雲端存取,因此無法匯出至內部部署資料庫。

  2. 當呼叫主體是 Microsoft entra 主體 (aaduser=aadapp=) 時,Kusto 支援 Active Directory 整合式驗證。 或者,Kusto 也支援在 連接字串 中提供 SQL 資料庫的認證。 不支援其他驗證方法。 向 SQL 資料庫呈現的身分識別一律會從命令呼叫端產生,而不是 Kusto 服務識別本身。

  3. 如果 SQL 資料庫中的目標數據表存在,它必須符合查詢結果架構。 請注意,在某些情況下(例如 Azure SQL 資料庫),這表示數據表有一個標示為識別數據行的數據行。

  4. 匯出大量數據可能需要很長的時間。 建議在大容量導入期間,將目標 SQL 資料表設定為最低限度記錄。 請參閱 SQL Server 資料庫引擎 > ... >資料庫功能>大容量導入和匯出數據

  5. 數據匯出是使用 SQL 大量複製執行,而且不會在目標 SQL 資料庫上提供交易性保證。 請參閱 交易和大量複製作業

  6. SQL 資料表名稱僅限於由字母、數位、空格、底線()、點(_.) 和連字元 (-) 組成的名稱。

  7. SQL 連接字串 限制如下:Persist Security Info明確設定為 falseEncrypt設定為 true,且 Trust Server Certificate 設定為 false

  8. 建立新的 SQL 資料表時,可以指定資料行的主鍵屬性。 如果數據行的類型 string為 ,SQL 可能會因為主鍵數據行的其他限制而拒絕建立數據表。 因應措施是在導出數據之前,在 SQL 中手動建立數據表。 這項限制的原因是 SQL 中主鍵數據行的大小不能無限制,但 Kusto 數據表數據行沒有宣告的大小限制。

Azure DB Microsoft Entra 整合式驗證檔

範例

在此範例中,Kusto 會執行查詢,然後將查詢所產生的第一個記錄集匯出至MySqlTable伺服器 myserver中資料庫中的MyDatabase數據表。

.export async to sql MySqlTable
    h@"Server=tcp:myserver.database.windows.net,1433;Authentication=Active Directory Integrated;Initial Catalog=MyDatabase;Connection Timeout=30;"
    <| print Id="d3b68d12-cbd3-428b-807f-2c740f561989", Name="YSO4", DateOfBirth=datetime(2017-10-15)

在此範例中,Kusto 會執行查詢,然後將查詢所產生的第一個記錄集匯出至MySqlTable伺服器 myserver中資料庫中的MyDatabase數據表。 如果目標數據表不存在於目標資料庫中,則會建立它。

.export async to sql ['dbo.MySqlTable']
    h@"Server=tcp:myserver.database.windows.net,1433;Authentication=Active Directory Integrated;Initial Catalog=MyDatabase;Connection Timeout=30;"
    with (createifnotexists="true", primarykey="Id")
    <| print Message = "Hello World!", Timestamp = now(), Id=12345678