Extensibilité d’Azure Data Studio

Important

Azure Data Studio sera mis hors service le 28 février 2026. Nous vous recommandons d’utiliser Visual Studio Code. Pour plus d’informations sur la migration vers Visual Studio Code, visitez Qu’est-ce qui se passe dans Azure Data Studio ?

Azure Data Studio dispose de plusieurs mécanismes d’extensibilité qui permettent de personnaliser l’expérience utilisateur et de rendre ces personnalisations accessibles à l’ensemble de la communauté d’utilisateurs. La plateforme Azure Data Studio principale repose sur Visual Studio Code, ainsi la plupart des API d’extensibilité de Visual Studio Code sont disponibles. En outre, nous avons fourni d’autres points d’extensibilité pour les activités spécifiques à la gestion des données.

Voici quelques-uns des principaux points d’extensibilité :

  • API d’extensibilité de Visual Studio Code
  • Outils de création d’extensions Azure Data Studio
  • Gestion des contributions du panneau des onglets du tableau de bord
  • Insights avec expérience d’action
  • API d’extensibilité d’Azure Data Studio
  • API Fournisseur de données personnalisées

API d’extensibilité de Visual Studio Code

Étant donné que la plateforme principale Azure Data Studio repose sur Visual Studio Code, vous trouverez des détails sur les API d’extensibilité de Visual Studio Code dans les documentations Création d’extensions et API d’extension sur le site web Visual Studio Code.

Notes

Les versions d’Azure Data Studio s’alignent sur une version récente de VS Code. Toutefois, le moteur VS Code inclus n’est peut-être pas la version actuelle de VS Code. Par exemple, en novembre 2020, le moteur VS Code dans Azure Data Studio était 1.48 et la version actuelle de VS Code est 1.51. Le message d’erreur « Impossible d’installer l’extension<nom>' car il n’est pas compatible avec VS Code <version>» lors de l’installation d’une extension est dû à une extension qui a une version ultérieure du moteur VS Code définie dans le manifeste du package (package.json). Vous pouvez vérifier la version du moteur VS Code dans Azure Data Studio par le biais du menu Aide sous À propos de.

Gestion des contributions du panneau des onglets du tableau de bord

Pour plus d’informations, consultez Points de contribution et Variables de contexte.

API d’extensibilité d’Azure Data Studio

Pour plus d’informations, consultez API d’extensibilité.

Points de contribution

Cette section décrit les différents points de contribution définis dans le manifeste d’extension package.json.

IntelliSense est pris en charge dans Azure Data Studio.

Points de contribution du tableau de bord

Contribuez à un onglet, un conteneur et/ou un widget insight dans le tableau de bord.

Capture d’écran du tableau de bord.

dashboard.tabs

Dashboard.tabs crée les sections d’onglets sur la page de tableau de bord. Il attend un objet ou un tableau d’objets,

"dashboard.tabs": [
    {
        "id": "test-tab1",
        "title": "Test 1",
        "description": "The test 1 displays a list of widgets.",
        "when": "connectionProvider == 'MSSQL' && !mssql:iscloud",
        "alwaysShow": true,
        "container": {
            ...
        }
    }
]

dashboard.containers

Au lieu de spécifier le conteneur de tableau de bord inline (à l’intérieur de l’onglet tableau de bord), vous pouvez inscrire des conteneurs à l’aide de dashboard.containers. Il accepte un objet ou un tableau d’objets.

"dashboard.containers": [
    {
        "id": "innerTab1",
        "widgets-container": [
            {
                "widget": {
                    "query-data-store-db-insight": {}
                }
            },
            {
                "widget": {
                    "explorer-widget": {}
                }
            }
        ]
    },
    {
        "id": "innerTab2",
        "webview-container": {}
    },
    {
        "id": "innerTab3",
        "grid-container": [
            {
                "name": "widget 1",
                "widget": {
                    "explorer-widget": {}
                },
                "row": 0,
                "col": 0
            },
            {
                "name": "widget 2",
                "widget": {
                    "tasks-widget": {
                        "backup",
                        "restore",
                        "configureDashboard",
                        "newQuery"
                    }
                },
                "row": 0,
                "col": 1
            },
            {
                "name": "Webview 1",
                "webview": {
                    "id": "google"
                },
                "row": 1,
                "col": 0,
                "colspan": 2
            },
            {
                "name": "widget 3",
                "widget": {
                    "explorer-widget": {}
                },

Pour faire référence au conteneur inscrit, spécifiez l’ID du conteneur.

"dashboard.tabs": [
    {
        "id": "test-tab1",
        "title": "Test 1",
        "description": "The test 1 displays a list of widgets.",
        "when": "connectionProvider == 'MSSQL' && !mssql:iscloud",
        "alwaysShow": true,
        "container": {
            "id": "innerTab1"
        }
    }
]

dashboard.insights

Vous pouvez enregistrer des insights à l’aide de dashboard.insights. Ceci est similaire à Tutoriel : Créer un widget d’insight personnalisé. Il accepte un objet ou un tableau d’objets.

"dashboard.insights": {
    "id": "my-widget",
    "type": {
        "count": {
            "dataDirection": "vertical",
            "dataType": "number",
            "legendPosition": "none",
            "labelFirstColumn": false,
            "columnsAsLabels": false
        }
    },
    "queryFile": "{your file folder}/activeSession.sql"
}

Types de conteneurs de tableau de bord

Quatre types de conteneur sont actuellement pris en charge :

widgets-container

Capture d’écran du conteneur de widgets.

La liste de widgets qui sera affichée dans le conteneur est une disposition de flux qui accepte cette liste.

"container": {
    "widgets-container": [
        {
            "widget": {
                "query-data-store-db-insight": {}
            }
        },
        {
            "widget": {
                "explorer-widget": {}
            }
        }
    ]
}

conteneur de WebView

Capture d’écran du conteneur Webview

La vue web s’affiche dans l’ensemble du conteneur. Il s’attend à ce que l’ID webview soit identique à l’ID d’onglet.

"container": {
    "webview-container": {}
}

grid-container

Capture d’écran Capture d’écran du conteneur de grille

Liste des widgets ou des vues web qui sont affichés dans la disposition de la grille. La mise en page en grille est un modèle 2x2 qui accepte cette liste.

"container": {
    "grid-container": [
        {
            "name": "widget 1",
            "widget": {
                "explorer-widget": {}
            },
            "row": 0,
            "col": 0
        },
        {
            "name": "widget 2",
            "widget": {
                "tasks-widget": {
                    "backup",
                    "restore",
                    "configureDashboard",
                    "newQuery"
                }
            },
            "row": 0,
            "col": 1
        },
        {
            "name": "Webview 1",
            "webview": {
                "id": "google"
            },
            "row": 1,
            "col": 0,
            "colspan": 2
        },
        {
            "name": "widget 3",
            "widget": {
                "explorer-widget": {}
            },
            "row": 0,
            "col": 3,
            "rowspan": 2
        }
    ]
}

Capture d’écran de l’écran de section Navigation

La section de navigation s’affiche dans le conteneur. Il attend un tableau d’objets.

"container": {
    "nav-section": [
        {
            "id": "innerTab1",
            "title": "inner-tab1",
            "icon": {
                "light": "./icons/tab1Icon.svg",
                "dark": "./icons/tab1Icon_dark.svg"
            },
            "container": {
                ...
            }
        },
        {
            "id": "innerTab2",
            "title": "inner-tab2",
            "icon": {
                "light": "./icons/tab2Icon.svg",
                "dark": "./icons/tab2Icon_dark.svg"
            },
            "container": {
                ...
            }
        }
    ]
}

Variables de contexte

Pour obtenir des informations générales sur le contexte dans Visual Studio Code et plus tard dans Azure Data Studio, consultez Extensibilité.

Dans Azure Data Studio, nous avons un contexte spécifique pour les connexions de base de données disponibles pour les extensions.

tableau de bord

Dans le tableau de bord, nous fournissons les variables de contexte suivantes :

Variable de contexte Description
connectionProvider Chaîne de l’identificateur pour le fournisseur de la connexion actuelle. Ex. connectionProvider == 'MSSQL'.
serverName Chaîne de nom du serveur de la connexion actuelle. Ex. serverName == 'localhost'.
databaseName Chaîne de nom de la base de données de la connexion actuelle. Ex. databaseName == 'master'.
connection Objet de profil de connexion complet pour la connexion actuelle (IConnectionProfile)
dashboardContext Une chaîne de contexte de la page du tableau de bord est actuellement activée. Il s’agit de « Base de données » ou de « Serveur ». Ex. dashboardContext == 'database'