簡體   English   中英

使用 azure-mgmt-sql 從 SQL 托管實例獲取數據庫

[英]Get databases from SQL managed instance using azure-mgmt-sql

我使用庫 azure-mgmt-sql 通過以下代碼獲取所有 SQL 服務器和數據庫:

resources = sql_client.servers.list_by_resource_group("myresourcegroup")
for r in resources:
    databases = sql_client.databases.list_by_server("myresourcegroup", r.name)
    for d in databases:
        print(d.name)

我還需要獲取 SQL 托管實例及其數據庫。 我發現使用 managed_instances 而不是服務器返回 SQL 托管實例,但我沒有找到獲取數據庫的方法。

resources = sql_client.managed_instances.list_by_resource_group("myresourcegroup")
    for r in resources:
        databases = sql_client.databases.list_by_server("myresourcegroup", r.name)
        for d in databases: <- ERROR when accessing the iterator
            print(d.name)

我收到的錯誤如下:

azure.core.exceptions.ResourceNotFoundError:(ParentResourceNotFound)無法對嵌套資源執行請求的操作。 找不到父資源“mymanagedinstancename>”。

如何從 sql 托管實例獲取數據庫?

我在我的環境中嘗試並得到以下結果:

最初我嘗試了相同的代碼並得到了相同的錯誤:

安慰:

在此處輸入圖像描述

從您的代碼sql_client.databases.list_by_server("myresourcegroup", r.name)中,您使用了database.list_by_server

我發現使用 managed_instances 而不是服務器返回 SQL 托管實例,但我沒有找到獲取數據庫的方法。

如果需要使用托管實例獲取數據庫,可以使用sql_client.managed_databases.list_by_instance方法。

代碼:

from azure.mgmt.sql import SqlManagementClient
from azure.identity import DefaultAzureCredential

credential=DefaultAzureCredential()
subscriptionid="<subscription ID >"
sql_client=SqlManagementClient(credential=credential,subscription_id=subscriptionid)
resources = sql_client.managed_instances.list_by_resource_group("<resource grp>")
for r in resources:
    databases=sql_client.managed_databases.list_by_instance("<resource grp>",r.name)
    for d in databases:
            print(d.name)

安慰:

在此處輸入圖像描述

參考:

azure.mgmt.sql.SqlManagementClient class | 微軟學習

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM