Java 列出Azure上的SQL Server实例

Java 列出Azure上的SQL Server实例,java,azure,azure-sql-database,azure-sdk,Java,Azure,Azure Sql Database,Azure Sdk,我正在尝试实现使用列出在我的Azure订阅上运行的SQL Server实例的代码 我按照发布的示例编写了以下代码: Azure azure = Azure.authenticate(credentials)).withDefaultSubscription(); SqlServers sqlServers = azure.sqlServers(); PagedList<SqlServer> list = sqlServers.list(); 这显然看起来像是一个缺陷,因为SDK允

我正在尝试实现使用列出在我的Azure订阅上运行的SQL Server实例的代码

我按照发布的示例编写了以下代码:

Azure azure  = Azure.authenticate(credentials)).withDefaultSubscription();
SqlServers sqlServers = azure.sqlServers();
PagedList<SqlServer> list = sqlServers.list();
这显然看起来像是一个缺陷,因为SDK允许这样做,如果出现问题,应该返回一个合理的错误代码


不过,还有其他方法可以列出在my Azure订阅中运行的SQL Server实例吗?或者我正在代码中执行某些操作?

我不确定您是否正在寻找powershell cmdlet解决方案。但此Powershell cmdlet应列出订阅中的所有sql server实例

假设在运行此powershell cmdlet之前,您已登录到powershell中的azure帐户,并在当前powershell会话中设置当前订阅(如果您有多个订阅映射到您的帐户)

PS C:\azure>get-azurermresourcegroup | get-azurermsqlserver
ResourceGroupName:DbRG
服务器名称:testSqlserver
地点:美国东部
SqlAdministratorLogin:XXXX
SqlAdministratorPassword:XXX
服务器版本:12.0

标签:

请参考我的工作代码,如下所示:

import com.microsoft.azure.AzureEnvironment;
import com.microsoft.azure.PagedList;
import com.microsoft.azure.credentials.ApplicationTokenCredentials;
import com.microsoft.azure.management.Azure;
import com.microsoft.azure.management.sql.SqlServer;
import com.microsoft.azure.management.sql.SqlServers;

import java.io.IOException;

public class ListSqlInstance {

    public static void main(String[] args) throws IOException {


        ApplicationTokenCredentials credentials = new ApplicationTokenCredentials(
                "{client Id}",
                "{talent Id}",
                "{secret}",
                AzureEnvironment.AZURE);
        Azure.Authenticated azureAuth = Azure.authenticate(credentials);
       Azure azure = azureAuth.withDefaultSubscription();

        SqlServers sqlServers = azure.sqlServers();
        PagedList<SqlServer> list = sqlServers.list();
        System.out.println(list.size());
    }
}
导入com.microsoft.azure.AzureEnvironment;
导入com.microsoft.azure.PagedList;
导入com.microsoft.azure.credentials.ApplicationTokenCredentials;
导入com.microsoft.azure.management.azure;
导入com.microsoft.azure.management.sql.SqlServer;
导入com.microsoft.azure.management.sql.SqlServers;
导入java.io.IOException;
公共类ListSqlInstance{
公共静态void main(字符串[]args)引发IOException{
ApplicationTokenCredentials credentials=新的ApplicationTokenCredentials(
“{client Id}”,
“{人才Id}”,
“{secret}”,
AzureEnvironment.AZURE);
Azure.Authenticated azureAuth=Azure.authenticate(凭据);
Azure=azureAuth.withDefaultSubscription();
SqlServers SqlServers=azure.SqlServers();
PagedList=sqlServers.list();
System.out.println(list.size());
}
}
我的sdk版本:

<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure</artifactId>
    version>1.12.0</version>
</dependency>

com.microsoft.azure

希望对您有所帮助。

问题已解决

该错误源于Azure SDK和
jackson数据绑定
库之间的不兼容。 此库中使用的方法之一相对较新,我在项目中使用的版本(只有一个导入的clean项目-Azure SDK)没有此方法

导入了最新的jackson数据绑定,如下所示:

<dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.5</version>
</dependency>

com.fasterxml.jackson.core
杰克逊数据绑定
2.9.5
解决了这个问题


谢谢大家的帮助。

谢谢@Avanish,但我正在寻找一个基于Java的解决方案,作为更大的Java应用程序的一部分。谢谢分享您的解决方案。
<dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.5</version>
</dependency>