次の方法で共有


Azure Data Studio 拡張 API

重要

Azure Data Studio は、2026 年 2 月 28 日に廃止されます。 Visual Studio Codeを使用することをお勧めします。 Visual Studio Code への移行の詳細については、「Azure Data Studio の概要」を参照してください。

Azure Data Studio には、オブジェクト エクスプローラーなど、Azure Data Studio の他の部分とやりとりするために拡張機能で使用できる API が用意されています。 これらの API は、src/sql/azdata.d.ts ファイルから入手できます。以下で説明します。

接続管理

azdata.connection

接続管理の最上位レベルの関数

  • getCurrentConnection(): Thenable<azdata.connection.Connection> アクティブなエディターまたはオブジェクト エクスプローラーの選択に基づいて現在の接続を取得します。

  • getActiveConnections(): Thenable<azdata.connection.Connection[]> アクティブなすべてのユーザー接続の一覧を取得します。 そのような接続がない場合は、空のリストを返します。

  • getCredentials(connectionId: string): Thenable<{ [name: string]: string }> 接続に関連付けられている資格情報を含むディクショナリを取得します。 それ以外の場合は、data.connection.Connection オブジェクトのオプション ディクショナリの一部として返されますが、そのオブジェクトから削除されます。

接続

  • options: { [name: string]: string } 接続オプションのディクショナリ
  • providerName: string 接続プロバイダーの名前 (例: "MSSQL")
  • connectionId: string 接続の一意識別子

コード例

> let connection = azdata.connection.getCurrentConnection();
connection: {
    providerName: 'MSSQL',
    connectionId: 'd97bb63a-466e-4ef0-ab6f-00cd44721dcc',
    options: {
        server: 'mairvine-sql-server',
        user: 'sa',
        authenticationType: 'sqlLogin',
        ...
 },
    ...
}
> let credentials = azdata.connection.getCredentials(connection.connectionId);
credentials: {
    password: 'abc123'
}

オブジェクト エクスプローラー

azdata.objectexplorer

オブジェクト エクスプローラーの最上位の関数

  • getNode(connectionId: string, nodePath?: string): Thenable<azdata.objectexplorer.ObjectExplorerNode> 指定された接続とパスに対応するオブジェクト エクスプローラー ノードを取得します。 パスが指定されていない場合は、指定された接続の最上位のノードが返されます。 指定されたパスにノードがない場合は、undefinedを返します。 注:オブジェクトの nodePath は、SQL ツール サービスのバックエンドによって生成されるため、手動では構成しにくいです。 今後の API の機能強化により、名前、型、スキーマなど、ノードに関して指定したメタデータに基づいてノードを取得できます。

  • getActiveConnectionNodes(): Thenable<azdata.objectexplorer.ObjectExplorerNode> アクティブなオブジェクト エクスプローラーの接続ノードをすべて取得します。

  • findNodes(connectionId: string, type: string, schema: string, name: string, database: string, parentObjectNames: string[]): Thenable<azdata.objectexplorer.ObjectExplorerNode[]> 指定されたメタデータに一致するオブジェクト エクスプローラー ノードをすべて検索します。 schemadatabase、および parentObjectNames 引数は、該当しない場合は undefined する必要があります。 parentObjectNames は、オブジェクト エクスプローラーの最上位レベルから最下位レベルまで、目的のオブジェクトが存在する非データベース親オブジェクトの一覧です。 たとえば、接続 ID connectionId を使って、テーブル "schema1.table1" とデータベース "database1" に属している列 "column1" を検索している場合、findNodes(connectionId, 'Column', undefined, 'column1', 'database1', ['schema1.table1']) を呼び出します。 また、この API 呼び出しについては、既定で Azure Data Studio でサポートされている型のリストも参照してください。

ObjectExplorerNode

  • connectionId: string ノードが存在する接続の ID

  • nodePath: stringgetNode 関数への呼び出しに使用されるノードのパス

  • nodeType: string ノードの型を表す文字列

  • nodeSubType: string ノードのサブタイプを表す文字列

  • nodeStatus: string ノードの状態を表す文字列

  • label: string オブジェクト エクスプローラーに表示されるノードのラベル

  • isLeaf: boolean ノードがリーフ ノードのため、子がないかどうか

  • metadata: azdata.ObjectMetadata このノードによって表されるオブジェクトを記述するメタデータ

  • errorMessage: string ノードがエラー状態の場合に表示されるメッセージ

  • isExpanded(): Thenable<boolean> 現在、ノードがオブジェクト エクスプローラーで展開されているかどうか

  • setExpandedState(expandedState: vscode.TreeItemCollapsibleState): Thenable<void> ノードを展開するか、折りたたむかを設定します。 状態が None に設定されている場合、ノードは変更されません。

  • setSelected(selected: boolean, clearOtherSelections?: boolean): Thenable<void> ノードが選択されているかどうかを設定します。 clearOtherSelections が True の場合は、新しい選択を行うときに他の選択をすべてクリアします。 false の場合は、既存の選択範囲をそのまま使用します。 clearOtherSelections は、selected が True の場合、既定で True に設定されます。selected が False の場合は、既定で False に設定されます。

  • getChildren(): Thenable<azdata.objectexplorer.ObjectExplorerNode[]> このノードの子ノードをすべて取得します。 子が存在しない場合は、空のリストを返します。

  • getParent(): Thenable<azdata.objectexplorer.ObjectExplorerNode> このノードの親ノードを取得します。 親がない場合は未定義を返します。

コード例

private async interactWithOENode(selectedNode: azdata.objectexplorer.ObjectExplorerNode): Promise<void> {
    let choices = ['Expand', 'Collapse', 'Select', 'Select (multi)', 'Deselect', 'Deselect (multi)'];
    if (selectedNode.isLeaf) {
 choices[0] += ' (is leaf)';
 choices[1] += ' (is leaf)';
 } else {
        let expanded = await selectedNode.isExpanded();
        if (expanded) {
 choices[0] += ' (is expanded)';
 } else {
 choices[1] += ' (is collapsed)';
 }
 }
    let parent = await selectedNode.getParent();
    if (parent) {
 choices.push('Get Parent');
 }
    let children = await selectedNode.getChildren();
 children.forEach(child => choices.push(child.label));
    let choice = await vscode.window.showQuickPick(choices);
 let nextNode: azdata.objectexplorer.ObjectExplorerNode = undefined;
    if (choice === choices[0]) {
 selectedNode.setExpandedState(vscode.TreeItemCollapsibleState.Expanded);
 } else if (choice === choices[1]) {
 selectedNode.setExpandedState(vscode.TreeItemCollapsibleState.Collapsed);
 } else if (choice === choices[2]) {
 selectedNode.setSelected(true);
 } else if (choice === choices[3]) {
 selectedNode.setSelected(true, false);
 } else if (choice === choices[4]) {
 selectedNode.setSelected(false);
 } else if (choice === choices[5]) {
 selectedNode.setSelected(false, true);
 } else if (choice === 'Get Parent') {
 nextNode = parent;
 } else {
        let childNode = children.find(child => child.label === choice);
 nextNode = childNode;
 }
    if (nextNode) {
        let updatedNode = await azdata.objectexplorer.getNode(nextNode.connectionId, nextNode.nodePath);
        this.interactWithOENode(updatedNode);
 }
}

vscode.commands.registerCommand('mssql.objectexplorer.interact', () => {
 azdata.objectexplorer.getActiveConnectionNodes().then(activeConnections => {
 vscode.window.showQuickPick(activeConnections.map(connection => connection.label + ' ' + connection.connectionId)).then(selection => {
            let selectedNode = activeConnections.find(connection => connection.label + ' ' + connection.connectionId === selection);
            this.interactWithOENode(selectedNode);
 });
 });
});

提案された API

ダイアログ、ウィザード、ドキュメント タブなどの機能の中で、拡張機能でダイアログにカスタム UI を表示できるように、提案された API を追加しました。 その他のドキュメントについては、提案されている API の種類のファイル を参照してください。ただし、これらの API はいつでも変更される可能性があることに注意してください。 これらの API の一部の使用方法の例は、の "サブサービス" サンプル拡張機能にあります。