將數據匯出至 SQL
適用於: ✅Microsoft網狀架構✅Azure 數據總管
將數據匯出至 SQL 可讓您執行查詢,並將其結果傳送至 SQL 資料庫中的數據表,例如 Azure SQL 資料庫 服務所裝載的 SQL 資料庫。
權限
您必須至少有 資料表管理員 許可權才能執行此命令。
語法
.export
[async
] to
sql
sqlTableName sqlConnectionString [ propertyName =
propertyValue [,
(
with
...]] <|
)
查詢
深入瞭解 語法慣例。
參數
姓名 | 類型 | 必要 | 描述 |
---|---|---|---|
async |
string |
如果指定,命令會以異步方式執行。 | |
SqlTableName | string |
✔️ | 要在其中插入數據的 SQL 資料庫資料表名稱。 為了防止插入式攻擊,此名稱會受到限制。 |
SqlConnectionString | string |
✔️ | SQL 端點和資料庫的 連接字串。 字串必須遵循 ADO.NET 連接字串 格式。 基於安全性考慮,連接字串 會受到限制。 |
PropertyName、 PropertyValue | string |
選擇性 屬性的清單。 |
支援的屬性
名稱 | 值 | 描述 |
---|---|---|
firetriggers |
true 或 false |
如果 true 為 ,則會指示目標系統引發 SQL 資料表上定義的 INSERT 觸發程式。 預設值為 false 。 如需詳細資訊,請參閱 BULK INSERT 和 System.Data.SqlClient.SqlBulkCopy。 |
createifnotexists |
true 或 false |
如果 true 為 ,則會在目標 SQL 資料表不存在時建立; primarykey 在此情況下,必須提供 屬性,以指出主鍵的結果數據行。 預設值為 false 。 |
primarykey |
如果 createifnotexists 為 true ,則這個屬性會指出結果中數據行的名稱,如果此命令所建立,則會當做 SQL 資料表的主鍵使用。 |
|
persistDetails |
bool |
表示命令應該保存其結果(請參閱 async 旗標)。 默認為 true 在異步執行中,但如果呼叫端不需要結果,則可以關閉。 在同步執行中預設為 false ,但可以開啟。 |
token |
string |
Microsoft Kusto 將轉送至 SQL 端點以進行驗證的 Entra 存取令牌。 設定時,SQL 連接字串 不應該包含 、User ID 或 Password 等Authentication 驗證資訊。 |
驗證與授權
驗證方法是以所提供的 連接字串 為基礎,而且存取 SQL 資料庫所需的許可權會根據驗證方法而有所不同。
將數據匯出至 SQL 的支援驗證方法Microsoft Entra 整合式(模擬)驗證 和 使用者名稱/密碼驗證。 若要進行模擬驗證,請確定主體對資料庫具有下列許可權:
- 現有數據表:數據表UPDATE和INSERT
- 新數據表:CREATE、UPDATE 和 INSERT
注意
可能的話,慣用的驗證方法是Microsoft Entra 整合式(模擬)驗證。
限制事項
將數據匯出至 SQL 資料庫時,有一些限制:
Kusto 是雲端服務,因此 連接字串 必須指向可從雲端存取的資料庫。 (特別是,由於無法從公用雲端存取,因此無法匯出至內部部署資料庫。
當呼叫主體是 Microsoft entra 主體 (
aaduser=
或aadapp=
) 時,Kusto 支援 Active Directory 整合式驗證。 或者,Kusto 也支援在 連接字串 中提供 SQL 資料庫的認證。 不支援其他驗證方法。 向 SQL 資料庫呈現的身分識別一律會從命令呼叫端產生,而不是 Kusto 服務識別本身。如果 SQL 資料庫中的目標數據表存在,它必須符合查詢結果架構。 請注意,在某些情況下(例如 Azure SQL 資料庫),這表示數據表有一個標示為識別數據行的數據行。
匯出大量數據可能需要很長的時間。 建議在大容量導入期間,將目標 SQL 資料表設定為最低限度記錄。 請參閱 SQL Server 資料庫引擎 > ... >資料庫功能>大容量導入和匯出數據。
數據匯出是使用 SQL 大量複製執行,而且不會在目標 SQL 資料庫上提供交易性保證。 請參閱 交易和大量複製作業。
SQL 資料表名稱僅限於由字母、數位、空格、底線()、點(
_
.
) 和連字元 (-
) 組成的名稱。SQL 連接字串 限制如下:
Persist Security Info
明確設定為false
、Encrypt
設定為true
,且Trust Server Certificate
設定為false
。建立新的 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