Sdílet prostřednictvím


Rozhraní API rozšiřitelnosti nástroje Azure Data Studio

Důležitý

Azure Data Studio se vyřazuje 28. února 2026. Doporučujeme používat editoru Visual Studio Code. Další informace o migraci do editoru Visual Studio Code najdete v tématu Co se děje se sadou Azure Data Studio?

Azure Data Studio poskytuje rozhraní API, které rozšíření můžou používat k interakci s dalšími částmi nástroje Azure Data Studio, jako je například Průzkumník objektů. Tato rozhraní API jsou k dispozici v src/sql/azdata.d.ts souboru a jsou popsána níže.

Správa připojení

azdata.connection

Funkce nejvyšší úrovně pro správu připojení

  • getCurrentConnection(): Thenable<azdata.connection.Connection>Získá aktuální připojení na základě aktivního editoru nebo Průzkumník objektů výběru.

  • getActiveConnections(): Thenable<azdata.connection.Connection[]> Získá seznam všech aktivních připojení uživatelů. Vrátí prázdný seznam, pokud taková připojení neexistují.

  • getCredentials(connectionId: string): Thenable<{ [name: string]: string }> Získá slovník obsahující přihlašovací údaje přidružené k připojení. Jinak by byly vráceny jako součást slovníku možností pod objektem data.connection.Connection, ale byly by z tohoto objektu odstraněny.

Připojení

  • options: { [name: string]: string } Slovník možností připojení
  • providerName: string Název poskytovatele připojení (například MSSQL)
  • connectionId: string Jedinečný identifikátor připojení

Příklad kódu

> 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'
}

Průzkumník objektů

azdata.objectexplorer

Funkce nejvyšší úrovně pro Průzkumníka objektů

  • getNode(connectionId: string, nodePath?: string): Thenable<azdata.objectexplorer.ObjectExplorerNode>Získejte Průzkumník objektů uzel odpovídající danému připojení a cestě. Pokud není k dispozici žádná cesta, vrátí uzel nejvyšší úrovně pro dané připojení. Pokud v dané cestě není žádný uzel, vrátí undefined. Poznámka: Objekt nodePath pro objekt je generován back-endem služby SQL Tools Service a je obtížné sestavit ručně. Budoucí vylepšení rozhraní API umožňují získat uzly na základě metadat, která získáte o uzlu, jako je název, typ a schéma.

  • getActiveConnectionNodes(): Thenable<azdata.objectexplorer.ObjectExplorerNode>Získejte všechny aktivní Průzkumník objektů uzly připojení.

  • findNodes(connectionId: string, type: string, schema: string, name: string, database: string, parentObjectNames: string[]): Thenable<azdata.objectexplorer.ObjectExplorerNode[]>Vyhledejte všechny uzly Průzkumník objektů, které odpovídají zadaným metadatům. Argumenty schema, databasea parentObjectNames by měly být undefined, pokud nejsou použitelné. parentObjectNames je seznam nedatabázových nadřazených objektů, od nejvyšší po nejnižší úroveň v Průzkumníku objektů, pod kterým je požadovaný objekt. Například při hledání sloupce "column1", který patří do tabulky "schema1.table1" a databáze "database1" s ID connectionIdpřipojení , volání findNodes(connectionId, 'Column', undefined, 'column1', 'database1', ['schema1.table1']). Podívejte se také na seznam typů, které Azure Data Studio ve výchozím nastavení podporuje pro toto volání rozhraní API.

ObjectExplorerNode

  • connectionId: string ID připojení, pod kterým uzel existuje

  • nodePath: string Cesta uzlu, jak se používá pro volání getNode funkce.

  • nodeType: string Řetězec představující typ uzlu

  • nodeSubType: string Řetězec představující podtyp uzlu

  • nodeStatus: string Řetězec představující stav uzlu

  • label: stringPopisek uzlu, který se zobrazí v Průzkumník objektů

  • isLeaf: boolean Určuje, jestli je uzel listovým uzlem, a proto nemá žádné podřízené položky.

  • metadata: azdata.ObjectMetadata Metadata popisující objekt reprezentovaný tímto uzlem

  • errorMessage: string Zpráva zobrazená v případě, že je uzel v chybovém stavu

  • isExpanded(): Thenable<boolean>Jestli je uzel aktuálně rozbalený v Průzkumník objektů

  • setExpandedState(expandedState: vscode.TreeItemCollapsibleState): Thenable<void> Nastavte, jestli je uzel rozbalený nebo sbalený. Uzel se nezmění, pokud je stav nastaven na Žádné.

  • setSelected(selected: boolean, clearOtherSelections?: boolean): Thenable<void> Nastavte, zda je uzel vybrán. Pokud clearOtherSelections je true, zrušte při vytváření nového výběru všechny ostatní výběry. Pokud je false, ponechte všechny existující výběry. clearOtherSelections výchozí hodnota true, pokud selected je true a false, pokud selected je false.

  • getChildren(): Thenable<azdata.objectexplorer.ObjectExplorerNode[]> Získejte všechny podřízené uzly tohoto uzlu. Vrátí prázdný seznam, pokud neexistují žádné podřízené položky.

  • getParent(): Thenable<azdata.objectexplorer.ObjectExplorerNode> Získejte nadřazený uzel tohoto uzlu. Vrátí nedefinovanou hodnotu, pokud neexistuje žádný nadřazený objekt.

Příklad kódu

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);
 });
 });
});

Navrhovaná rozhraní API

Přidali jsme navrhovaná rozhraní API, která mimo jiné umožňují rozšířením zobrazovat vlastní uživatelské rozhraní v dialogových oknech, průvodcích a kartách dokumentů. Další dokumentaci najdete v navrhovaných typech rozhraní API, ale mějte na paměti, že tato rozhraní API se můžou kdykoli změnit. Příklady použití některých z těchto rozhraní API najdete v ukázkovém rozšíření "subservices".