Aracılığıyla paylaş


Azure Data Studio genişletilebilirlik API'leri

Önemli

Azure Data Studio 28 Şubat 2026 tarihindekullanımdan kaldırılıyor. Visual Studio Codekullanmanızı öneririz. Visual Studio Code'a geçiş hakkında daha fazla bilgi için Azure Data Studio'ya neler oluyor? adresini ziyaret edin.

Azure Data Studio, uzantıların Azure Data Studio'nun Nesne Gezgini gibi diğer bölümleriyle etkileşime geçmek için kullanabileceği bir API sağlar. Bu API'ler dosyadan src/sql/azdata.d.ts edinilebilir ve aşağıda açıklanmıştır.

Bağlantı yönetimi

azdata.connection

Bağlantı yönetimi için üst düzey işlevler

  • getCurrentConnection(): Thenable<azdata.connection.Connection>Etkin düzenleyiciye veya Nesne Gezgini seçimine göre geçerli bağlantıyı alır.

  • getActiveConnections(): Thenable<azdata.connection.Connection[]> Tüm etkin kullanıcı bağlantılarının listesini alır. Böyle bir bağlantı yoksa boş bir liste döndürür.

  • getCredentials(connectionId: string): Thenable<{ [name: string]: string }> Bir bağlantıyla ilişkili kimlik bilgilerini içeren bir sözlük alır. Aksi takdirde, bunlar seçenekler sözlüğü kapsamında data.connection.Connection nesnesi altında döndürülür, ancak o nesneden çıkarılır.

Bağlantı

  • options: { [name: string]: string } Bağlantı seçeneklerinin sözlüğü
  • providerName: string Bağlantı sağlayıcısının adı (örneğin, "MSSQL")
  • connectionId: string Bağlantının benzersiz tanımlayıcısı

Örnek Kod

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

Nesne Gezgini

azdata.objectexplorer

Nesne Gezgini için Üst Düzey İşlevler

  • getNode(connectionId: string, nodePath?: string): Thenable<azdata.objectexplorer.ObjectExplorerNode>Verilen bağlantı ve yola karşılık gelen bir Nesne Gezgini düğümü alın. Yol verilmezse, verilen bağlantı için en üst düzey düğümü döndürür. Verilen yolda bir düğüm yoksa, sistem undefineddöndürür. Not: nodePath Bir nesne için, SQL Araçları Hizmeti arka ucu tarafından oluşturulur ve el ile oluşturulması zordur. Gelecekteki API geliştirmeleri, düğüm hakkında sağladığınız ad, tür ve şema gibi meta verileri temel alan düğümler almanıza olanak tanır.

  • getActiveConnectionNodes(): Thenable<azdata.objectexplorer.ObjectExplorerNode>Tüm etkin Nesne Gezgini bağlantı düğümlerini alın.

  • findNodes(connectionId: string, type: string, schema: string, name: string, database: string, parentObjectNames: string[]): Thenable<azdata.objectexplorer.ObjectExplorerNode[]>Verilen meta veriyle eşleşen tüm Nesne Gezgini düğümlerini bulun. schema, databaseve parentObjectNames bağımsız değişkenleri geçerli olmadığında undefined olmalıdır. parentObjectNames, nesne gezgininde istenen nesnenin altında olduğu en yüksek düzeyden en düşük düzeye kadar veri tabanı olmayan üst nesnelerin listesidir. Örneğin, "schema1.table1" tablosuna ve bağlantı kimliğine connectionIdsahip "database1" veritabanına ait "column1" sütununu ararken çağrısı yapın findNodes(connectionId, 'Column', undefined, 'column1', 'database1', ['schema1.table1']). Ayrıca bu API çağrısı için Azure Data Studio'nun varsayılan olarak desteklediği türlerin listesine bakın.

ObjectExplorerNode

  • connectionId: string Düğümün bulunduğu bağlantının kimliği

  • nodePath: string İşlev çağrısı için kullanılan düğümün getNode yolu.

  • nodeType: string Düğümün türünü temsil eden bir dize

  • nodeSubType: string Düğümün alt türünü temsil eden bir dize

  • nodeStatus: string Düğümün durumunu temsil eden bir dize

  • label: stringDüğümün etiketi Nesne Gezgini

  • isLeaf: boolean Düğümün yaprak düğüm olup olmadığı ve bu nedenle alt öğeye sahip olup olmadığı

  • metadata: azdata.ObjectMetadata Bu düğüm tarafından temsil edilen nesneyi açıklayan meta veriler

  • errorMessage: string Düğüm bir hata durumundaysa gösterilen ileti

  • isExpanded(): Thenable<boolean>Düğümün şu anda Nesne Gezgini'da genişletilip genişletilip genişletılmediği

  • setExpandedState(expandedState: vscode.TreeItemCollapsibleState): Thenable<void> Düğümün genişletilmiş mi yoksa daraltılmış mı olduğunu ayarlayın. Durum Yok olarak ayarlanırsa düğüm değiştirilmez.

  • setSelected(selected: boolean, clearOtherSelections?: boolean): Thenable<void> Düğümün seçili olup olmadığını ayarlayın. True ise clearOtherSelections , yeni seçimi yaparken diğer seçimleri temizleyin. False ise, var olan seçimleri bırakın. clearOtherSelections varsayılan değeri true olduğunda selected true, false olduğunda selected ise false olarak ayarlanır.

  • getChildren(): Thenable<azdata.objectexplorer.ObjectExplorerNode[]> Bu düğümün tüm alt düğümlerini alın. Alt öğe yoksa boş bir liste döndürür.

  • getParent(): Thenable<azdata.objectexplorer.ObjectExplorerNode> Bu düğümün üst düğümünü alın. Ebeveyn yoksa tanımsız döndürür.

Örnek Kod

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

Önerilen API'ler

Uzantıların iletişim kutularında, sihirbazlarda ve belge sekmelerinde ve diğer özelliklerde özel kullanıcı arabirimi görüntülemesine izin vermek için önerilen API'leri ekledik. Daha fazla belge için önerilen API türleri dosyasına bakın, ancak bu API'lerin herhangi bir zamanda değiştirilebilir olduğunu unutmayın. Bu API'lerden bazılarının nasıl kullanılacağına ilişkin örnekler "alt hizmetler" örnek uzantısında bulunabilir.