Dela via


Utöknings-API:er för Azure Data Studio

Viktig

Azure Data Studio går i pension den 28 februari 2026. Vi rekommenderar att du använder Visual Studio Code. Mer information om hur du migrerar till Visual Studio Code finns i Vad händer med Azure Data Studio?

Azure Data Studio tillhandahåller ett API som tillägg kan använda för att interagera med andra delar av Azure Data Studio, till exempel Object Explorer. Dessa API:er är tillgängliga från src/sql/azdata.d.ts filen och beskrivs nedan.

Anslutningshantering

azdata.connection

Toppnivåfunktioner för anslutningshantering

  • getCurrentConnection(): Thenable<azdata.connection.Connection> Hämtar den aktuella anslutningen baserat på det aktiva redigeringsprogrammet eller objektutforskarens val.

  • getActiveConnections(): Thenable<azdata.connection.Connection[]> Hämtar en lista över alla aktiva användaranslutningar. Returnerar en tom lista om det inte finns några sådana anslutningar.

  • getCredentials(connectionId: string): Thenable<{ [name: string]: string }> Hämtar en ordlista som innehåller de autentiseringsuppgifter som är associerade med en anslutning. Dessa skulle annars returneras som en del av alternativordlistan under ett data.connection.Connection objekt men tas bort från objektet.

Anslutning

  • options: { [name: string]: string } Ordlistan med anslutningsalternativ
  • providerName: string Namnet på anslutningsprovidern (till exempel "MSSQL")
  • connectionId: string Den unika identifieraren för anslutningen

Exempelkod

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

Object Explorer

azdata.objectexplorer

Funktioner på den översta nivån för Object Explorer

  • getNode(connectionId: string, nodePath?: string): Thenable<azdata.objectexplorer.ObjectExplorerNode> Hämta en Object Explorer-nod som motsvarar den angivna anslutningen och sökvägen. Om ingen sökväg anges returnerar den noden på den översta nivån för den angivna anslutningen. Om det inte finns någon nod vid den angivna sökvägen returneras undefined. nodePath Obs! För ett objekt genereras av SQL Tools Service-serverdelen och är svår att konstruera för hand. Med framtida API-förbättringar kan du hämta noder baserat på metadata som du anger om noden, till exempel namn, typ och schema.

  • getActiveConnectionNodes(): Thenable<azdata.objectexplorer.ObjectExplorerNode> Hämta alla aktiva Object Explorer-anslutningsnoder.

  • findNodes(connectionId: string, type: string, schema: string, name: string, database: string, parentObjectNames: string[]): Thenable<azdata.objectexplorer.ObjectExplorerNode[]> Hitta alla Object Explorer-noder som matchar angivna metadata. Argumenten schema, databaseoch parentObjectNames ska vara undefined när de inte är tillämpliga. parentObjectNames är en lista över överordnade objekt som inte är databasobjekt, från den högsta till den lägsta nivån i Object Explorer, som önskat objekt finns under. När du till exempel söker efter en kolumn "column1" som tillhör tabellen "schema1.table1" och databasen "database1" med anslutnings-ID connectionIdanropar du findNodes(connectionId, 'Column', undefined, 'column1', 'database1', ['schema1.table1']). Se även listan över typer som Azure Data Studio stöder som standard för det här API-anropet.

ObjectExplorerNode

  • connectionId: string ID för anslutningen som noden finns under

  • nodePath: string Sökvägen till noden, som används för ett anrop till getNode funktionen.

  • nodeType: string En sträng som representerar nodens typ

  • nodeSubType: string En sträng som representerar nodens undertyp

  • nodeStatus: string En sträng som representerar nodens status

  • label: string Etiketten för noden som den visas i Object Explorer

  • isLeaf: boolean Om noden är en lövnod och därför inte har några underordnade

  • metadata: azdata.ObjectMetadata Metadata som beskriver objektet som representeras av den här noden

  • errorMessage: string Meddelande som visas om noden är i ett feltillstånd

  • isExpanded(): Thenable<boolean> Om noden för närvarande är expanderad i Object Explorer

  • setExpandedState(expandedState: vscode.TreeItemCollapsibleState): Thenable<void> Ange om noden ska expanderas eller komprimeras. Noden ändras inte om tillståndet är inställt på Ingen.

  • setSelected(selected: boolean, clearOtherSelections?: boolean): Thenable<void> Ange om noden är markerad. Om clearOtherSelections är sant avmarkerar du alla andra val när du gör det nya valet. Lämna kvar alla befintliga val om det är falskt. clearOtherSelections standardvärdet är sant när selected är sant och falskt när selected är falskt.

  • getChildren(): Thenable<azdata.objectexplorer.ObjectExplorerNode[]> Hämta alla underordnade noder i den här noden. Returnerar en tom lista om det inte finns några underordnade objekt.

  • getParent(): Thenable<azdata.objectexplorer.ObjectExplorerNode> Hämta den överordnade noden för den här noden. Ger tillbaka odefinierat om det inte finns någon förälder.

Exempelkod

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

Föreslagna API:er

Vi har lagt till föreslagna API:er så att tillägg kan visa anpassat användargränssnitt i dialogrutor, guider och dokumentflikar, bland andra funktioner. Se filen för de föreslagna API-typerna och dokumentationen i för mer information, men observera att dessa API:er kan ändras när som helst. Exempel på hur du använder några av dessa API:er finns i exempeltillägget "undertjänster".