管理命令概觀
本文說明用來管理 Kusto 的管理命令,也稱為控制命令。 管理命令是要求服務擷取不一定是資料庫資料表中的資料,或是修改服務狀態等資訊。
區分管理命令與查詢
Kusto 使用三種機制來區分查詢和管理命令:在語言層級、通訊協定層級,以及 API 層級。 這是為了安全起見而這麼做。
在語言層級,要求文字的第一個字元會決定要求是否為管理命令或查詢。 管理命令的開頭必須是點 (.
) 字元,而且沒有查詢可以從該字元開始。
在通訊協定層級,不同的 HTTP/HTTPS 端點用於控制命令,而不是查詢。
在 API 層級,會使用不同的函式來傳送管理命令,而不是查詢。
合併查詢和管理命令
管理命令可以參考查詢 (,但反之亦然,) 或其他管理命令。 有數個支援的案例:
- AdminThenQuery:會執行管理命令,而其結果 (表示為暫存資料表,) 做為查詢的輸入。
- AdminFromQuery:執行查詢或
.show
系統管理員命令,而其結果 (表示為暫存資料表,) 做為管理命令的輸入。
請注意,在所有情況下,整個組合都是管理命令,而不是查詢,因此要求文字必須以點 (.
) 字元開始,而且要求必須傳送至服務的管理端點。
另請注意,查詢陳述式會出現在文字的查詢組件內 (不能在命令本身前面)。
注意
建議您限制 AdminThenQuery 作業的使用方式。
AdminThenQuery 會以下列兩種方式的其中一種來表示:
- 藉由使用管道 ()
|
字元,查詢就會將管理命令的結果視為任何其他資料產生的查詢運算子。 - 藉由使用分號 (
;
) 字元,然後將管理命令的結果導入名為$command_results
的特殊符號中,然後,在查詢中可能會使用任何次數。
例如:
// 1. Using pipe: Count how many tables are in the database-in-scope:
.show tables
| count
// 2. Using semicolon: Count how many tables are in the database-in-scope:
.show tables;
$command_results
| count
// 3. Using semicolon, and including a let statement:
.show tables;
let useless=(n:string){strcat(n,'-','useless')};
$command_results | extend LastColumn=useless(TableName)
AdminFromQuery 是以 <|
字元組合表示。 例如,我們會在下面先執行一個查詢,它會產生具有單一資料行 (名為 str
且為 string
類型) 和單一資料列的資料表,並將它撰寫為資料庫內容中的資料表名稱 MyTable
:
.set MyTable <|
let text="Hello, World!";
print str=text
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應