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ındadata.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, sistemundefined
dö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
,database
veparentObjectNames
bağımsız değişkenleri geçerli olmadığındaundefined
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ğineconnectionId
sahip "database1" veritabanına ait "column1" sütununu ararken çağrısı yapınfindNodes(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ğinodePath: string
İşlev çağrısı için kullanılan düğümüngetNode
yolu.nodeType: string
Düğümün türünü temsil eden bir dizenodeSubType: string
Düğümün alt türünü temsil eden bir dizenodeStatus: string
Düğümün durumunu temsil eden bir dizelabel: string
Düğümün etiketi Nesne GezginiisLeaf: 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 verilererrorMessage: string
Düğüm bir hata durumundaysa gösterilen iletiisExpanded(): Thenable<boolean>
Düğümün şu anda Nesne Gezgini'da genişletilip genişletilip genişletılmediğisetExpandedState(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 iseclearOtherSelections
, 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ğundaselected
true, false olduğundaselected
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.
İlgili içerik
- Azure Data Studio'ı indirme