Delen via


Api's voor uitbreidbaarheid van Azure Data Studio

Belangrijk

Azure Data Studio wordt op 28 februari 2026buiten gebruik gesteld. U wordt aangeraden Visual Studio Codete gebruiken. Ga naar Wat gebeurt er met Azure Data Studio voor meer informatie over migreren naar Visual Studio Code?

Azure Data Studio biedt een API die extensies kunnen gebruiken om te communiceren met andere onderdelen van Azure Data Studio, zoals Objectverkenner. Deze API's zijn beschikbaar in het src/sql/azdata.d.ts bestand en worden hieronder beschreven.

Verbindingsbeheer

azdata.connection

Functies op het hoogste niveau voor verbindingsbeheer

  • getCurrentConnection(): Thenable<azdata.connection.Connection>Hiermee haalt u de huidige verbinding op op basis van de actieve editor of Objectverkenner selectie.

  • getActiveConnections(): Thenable<azdata.connection.Connection[]> haalt een lijst op met alle actieve gebruikersverbindingen. Retourneert een lege lijst als er geen dergelijke verbindingen zijn.

  • getCredentials(connectionId: string): Thenable<{ [name: string]: string }> Hiermee haalt u een woordenlijst op met de referenties die zijn gekoppeld aan een verbinding. Deze worden anders geretourneerd als onderdeel van de woordenlijst met opties onder een data.connection.Connection object, maar verwijderd van dat object.

Verbinding

  • options: { [name: string]: string } De woordenlijst met verbindingsopties
  • providerName: string De naam van de verbindingsprovider (bijvoorbeeld 'MSSQL')
  • connectionId: string De unieke id voor de verbinding

Voorbeeldcode

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

Objectverkenner

azdata.objectexplorer

Functies op het hoogste niveau voor Objectverkenner

  • getNode(connectionId: string, nodePath?: string): Thenable<azdata.objectexplorer.ObjectExplorerNode>Haal een Objectverkenner knooppunt op dat overeenkomt met de opgegeven verbinding en het opgegeven pad. Als er geen pad wordt opgegeven, wordt het knooppunt op het hoogste niveau voor de opgegeven verbinding geretourneerd. Als er geen knooppunt op het opgegeven pad is, wordt undefinedgeretourneerd. Opmerking: het nodePath voor een object wordt gegenereerd door de back-end van de SQL Tools-service en is moeilijk met de hand te maken. Met toekomstige API-verbeteringen kunt u knooppunten ophalen op basis van metagegevens die u opgeeft over het knooppunt, zoals naam, type en schema.

  • getActiveConnectionNodes(): Thenable<azdata.objectexplorer.ObjectExplorerNode>Alle actieve Objectverkenner verbindingsknooppunten ophalen.

  • findNodes(connectionId: string, type: string, schema: string, name: string, database: string, parentObjectNames: string[]): Thenable<azdata.objectexplorer.ObjectExplorerNode[]>Zoek alle Objectverkenner knooppunten die overeenkomen met de opgegeven metagegevens. De argumenten schema, databaseen parentObjectNames moeten worden undefined wanneer ze niet van toepassing zijn. parentObjectNames is een lijst met niet-database-bovenliggende objecten, van hoogste naar laagste niveau in Objectverkenner, waaronder het gewenste object valt. Als u bijvoorbeeld zoekt naar een kolom 'kolom1' die deel uitmaakt van een tabel 'schema1.table1' en database 'database1' met verbindings-id connectionId, roept u findNodes(connectionId, 'Column', undefined, 'column1', 'database1', ['schema1.table1'])aan. Zie ook de lijst met typen die Standaard door Azure Data Studio worden ondersteund voor deze API-aanroep.

ObjectExplorerNode

  • connectionId: string De id van de verbinding waaronder het knooppunt bestaat

  • nodePath: string Het pad van het knooppunt, zoals wordt gebruikt voor een aanroep naar de getNode functie.

  • nodeType: string Een tekenreeks die het type van het knooppunt aangeeft

  • nodeSubType: string Een tekenreeks die het subtype van het knooppunt vertegenwoordigt

  • nodeStatus: string Een tekenreeks die de status van het knooppunt aangeeft

  • label: stringHet label voor het knooppunt zoals dit wordt weergegeven in Objectverkenner

  • isLeaf: boolean Of het knooppunt een leaf-knooppunt is en dus geen onderliggende items heeft

  • metadata: azdata.ObjectMetadata Metagegevens die het object beschrijven dat wordt vertegenwoordigd door dit knooppunt

  • errorMessage: string Bericht dat wordt weergegeven als het knooppunt de foutstatus heeft

  • isExpanded(): Thenable<boolean>Of het knooppunt momenteel is uitgevouwen in Objectverkenner

  • setExpandedState(expandedState: vscode.TreeItemCollapsibleState): Thenable<void> Instellen of het knooppunt is uitgevouwen of samengevouwen. Het knooppunt wordt niet gewijzigd als de status is ingesteld op Geen.

  • setSelected(selected: boolean, clearOtherSelections?: boolean): Thenable<void> Instellen of het knooppunt is geselecteerd. Als clearOtherSelections dit waar is, wist u alle andere selecties bij het maken van de nieuwe selectie. Als dit onwaar is, laat u bestaande selecties staan. clearOtherSelections is standaard ingesteld op waar wanneer selected waar en onwaar wanneer selected onwaar is.

  • getChildren(): Thenable<azdata.objectexplorer.ObjectExplorerNode[]> Haal alle onderliggende knooppunten van dit knooppunt op. Retourneert een lege lijst als er geen onderliggende items zijn.

  • getParent(): Thenable<azdata.objectexplorer.ObjectExplorerNode> Haal het bovenliggende knooppunt van dit knooppunt op. Retourneert niet-gedefinieerd als er geen bovenliggend item is.

Voorbeeldcode

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

Voorgestelde API's

We hebben voorgestelde API's toegevoegd om uitbreidingen toe te staan om aangepaste gebruikersinterface weer te geven in dialoogvensters, wizards en documenttabbladen, en andere mogelijkheden. Zie het voorgestelde API-typenbestand voor meer documentatie, maar houd er rekening mee dat deze API's op elk gewenst moment kunnen worden gewijzigd. Voorbeelden van het gebruik van sommige van deze API's vindt u in de voorbeeldextensie subservices.