Erweiterbarkeits-APIs für Azure Data Studio
Wichtig
Azure Data Studio wird am 28. Februar 2026 eingestellt. Es wird empfohlen, Visual Studio Codezu verwenden. Weitere Informationen zum Migrieren zu Visual Studio Code finden Sie unter Was geschieht mit Azure Data Studio?
Azure Data Studio bietet eine API, mit der Erweiterungen mit anderen Teilen von Azure Data Studio interagieren können, z. B. dem Objekt-Explorer. Diese APIs sind in der src/sql/azdata.d.ts
-Datei verfügbar und werden nachfolgend beschrieben.
Verbindungsverwaltung
azdata.connection
Funktionen der obersten Ebene für die Verbindungsverwaltung
getCurrentConnection(): Thenable<azdata.connection.Connection>
Ruft die aktuelle Verbindung auf Grundlage des aktiven Editors oder der Objekt-Explorer-Auswahl ab.getActiveConnections(): Thenable<azdata.connection.Connection[]>
Ruft eine Liste aller aktiven Benutzerverbindungen ab. Gibt eine leere Liste zurück, wenn keine solchen Verbindungen vorhanden sind.getCredentials(connectionId: string): Thenable<{ [name: string]: string }>
Ruft ein Wörterbuch ab, das die einer Verbindung zugeordneten Anmeldeinformationen enthält. Diese würden andernfalls als Teil des Optionswörterbuchs unter einemdata.connection.Connection
-Objekt zurückgegeben werden, aber gleichzeitig aus diesem Objekt entfernt.
Verbindung
options: { [name: string]: string }
Das Wörterbuch der VerbindungsoptionenproviderName: string
Der Name des Verbindungsanbieters (z. B. "MSSQL")connectionId: string
Der eindeutige Bezeichner für die Verbindung
Beispielcode
> 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'
}
Objekt-Explorer
azdata.objectexplorer
Funktionen der obersten Ebene für den Objekt-Explorer
getNode(connectionId: string, nodePath?: string): Thenable<azdata.objectexplorer.ObjectExplorerNode>
Abrufen eines Objekt-Explorer-Knotens, der der angegebenen Verbindung und dem angegebenen Pfad entspricht. Wenn kein Pfad angegeben wird, wird der Knoten der obersten Ebene für die angegebene Verbindung zurückgegeben. Wenn kein Knoten im angegebenen Pfad vorhanden ist, wirdundefined
zurückgegeben. Hinweis: DernodePath
für ein Objekt wird vom SQL Tools Service-Back-End generiert und ist schwer manuell zu konstruieren. Zukünftige API-Verbesserungen ermöglichen es Ihnen, Knoten basierend auf Metadaten abzurufen, die Sie über den Knoten angeben, z. B. Name, Typ und Schema.getActiveConnectionNodes(): Thenable<azdata.objectexplorer.ObjectExplorerNode>
Abrufen aller aktiven Objekt-Explorer-Verbindungsknoten.findNodes(connectionId: string, type: string, schema: string, name: string, database: string, parentObjectNames: string[]): Thenable<azdata.objectexplorer.ObjectExplorerNode[]>
Suchen aller Objekt-Explorer-Knoten, die den angegebenen Metadaten entsprechen. Die Argumenteschema
,database
undparentObjectNames
solltenundefined
sein, wenn sie nicht anwendbar sind.parentObjectNames
ist eine Liste von übergeordneten Nichtdatenbankobjekten, von der höchsten bis zur niedrigsten Ebene im Objekt-Explorer, unter der das gewünschte Objekt steht. Wenn Sie z.B. nach der Spalte „column1“ suchen, die zur Tabelle „schema1.table1“ und der Datenbank „database1“ mit Verbindungs-IDconnectionId
gehört, rufen SiefindNodes(connectionId, 'Column', undefined, 'column1', 'database1', ['schema1.table1'])
auf. Beachten Sie auch die Liste der Typen, die Azure Data Studio standardmäßig für diesen API-Aufruf unterstützt.
ObjectExplorerNode
connectionId: string
Die ID der Verbindung, unter der der Knoten vorhanden istnodePath: string
Der Pfad des Knotens, der für einen Aufruf dergetNode
-Funktion verwendet wird.nodeType: string
Eine Zeichenfolge, die den Typ des Knotens darstellt.nodeSubType: string
Eine Zeichenfolge, die den Untertyp des Knotens darstellt.nodeStatus: string
Eine Zeichenfolge, die den Status des Knotens darstellt.label: string
Die Bezeichnung für den Knoten, die im Objekt-Explorer angezeigt wird.isLeaf: boolean
Gibt an, ob der Knoten ein Blattknoten ist und daher keine untergeordneten Elemente aufweist.metadata: azdata.ObjectMetadata
Metadaten, die das von diesem Knoten dargestellte Objekt beschreiben.errorMessage: string
Meldung, die angezeigt wird, wenn sich der Knoten in einem Fehlerzustand befindet.isExpanded(): Thenable<boolean>
Gibt an, ob der Knoten derzeit im Objekt-Explorer erweitert ist.setExpandedState(expandedState: vscode.TreeItemCollapsibleState): Thenable<void>
Festlegen, ob der Knoten erweitert oder reduziert wird. Der Knoten wird nicht geändert, wenn der Zustand auf "None" festgelegt ist.setSelected(selected: boolean, clearOtherSelections?: boolean): Thenable<void>
Festlegen, ob der Knoten ausgewählt ist. WennclearOtherSelections
„true“ ist, löschen Sie jede andere Auswahl, wenn Sie die neue Auswahl treffen. Falls falsch, belassen Sie alle vorhandenen Auswahlen.clearOtherSelections
hat den Standardwert „true“, wennselected
„true“ ist, und „false“, wennselected
„false“ ist.getChildren(): Thenable<azdata.objectexplorer.ObjectExplorerNode[]>
Abrufen aller untergeordneten Knoten dieses Knotens. Gibt eine leere Liste zurück, wenn keine untergeordneten Knoten vorhanden sind.getParent(): Thenable<azdata.objectexplorer.ObjectExplorerNode>
Abrufen des übergeordneten Knotens dieses Knotens. Gibt „undefined“ (undefiniert) zurück, wenn kein übergeordneter Knoten vorhanden ist.
Beispielcode
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);
});
});
});
Vorgeschlagene APIs
Wir haben vorgeschlagene APIs hinzugefügt, um Erweiterungen neben anderen Funktionen die Anzeige benutzerdefinierter Benutzeroberflächen in Dialogfeldern, Assistenten und Dokumentregisterkarten zu ermöglichen. Weitere Dokumentationen finden Sie in der vorgeschlagenen API-Typendatei. Beachten Sie jedoch, dass diese APIs jederzeit geändert werden können. Beispiele für die Verwendung einiger dieser APIs finden Sie in der Beispielerweiterung "Subservices".
Verwandte Inhalte
- Azure Data Studio- herunterladen