【问题标题】:REST API call to get the list of SQL databases from Azure从 Azure 获取 SQL 数据库列表的 REST API 调用
【发布时间】:2016-01-25 15:42:31
【问题描述】:

我需要使用 Azure REST API 进行调用以获取数据库列表并在退出时删除特定数据库。

如果有人能给我一个有用的 shell 脚本。我试过这个列出给定服务器上的 Azure SQL 数据库

wget -U --no-check-certificate    https://management.core.windows.net:8443/  subscriptionID/services/sqlservers/servers/serverName/p1y/databases? contentview=generic
--2016-01-22 22:15:57--     https://management.core.windows.net:8443/${subscriptionID}/services/sqlservers/s    ervers/${serverName}/databases?contentview=generic
Resolving management.core.windows.net (management.core.windows.net)...xx.xxx.xxx.xxx
Connecting to management.core.windows.net (management.core.windows.net)|xx.xxx.xxx.xxx|:8443... connected.
HTTP request sent, awaiting response... 403 Forbidden
2016-01-22 22:15:57 ERROR 403: Forbidden.

【问题讨论】:

    标签: bash azure azure-sql-database


    【解决方案1】:

    我认为您可以使用 cURL 代替 wget。但是,在使用 cURL 之前,您需要创建并上传证书。

    首先,您需要在您的机器上安装 openssl 和 curl。然后您可以使用以下命令创建一个 .pem 文件:

    openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout azure-cert.pem -out azure-cert.pem
    

    注意:openssl 会要求你输入很多东西。

    这是供本地使用的。从 .pem 文件,您可以创建将上传到 Azure 的 .cer 文件。使用以下命令创建一个。

    openssl x509 -outform der -in azure-cert.pem -out azure-cert.cer
    

    进入Azure经典门户,在设置管理证书页面,点击上传,选择上面创建的.cer文件。

    等待几秒钟,证书创建完成后,您可以使用以下命令获取某个SQL服务器中的SQL数据库列表。

    curl -E azure-cert.pem -H "x-ms-version: 2011-10-01" "https://management.core.windows.net:8443/{subscriptionId}/services/sqlservers/servers/{serverName}/databases?contentview=generic"
    

    如果要删除SQL数据库,可以使用以下命令。

    curl -X DELETE -E azure-cert.pem -H "x-ms-version: 2011-10-01" "https://management.core.windows.net:8443/{subscriptionId}/services/sqlservers/servers/{serverName}/databases/{databaseName}"
    

    这些命令的输出是难以阅读的 XML 代码。因此,我建议您改用 Azure CLI。但是,如果您坚持,并且需要有关带有 HTTP 作业的 cURL 的更多信息,请参阅here。如果您需要有关 Azure REST API 的更多信息,请参阅here

    【讨论】:

    • 删除数据库可以直接使用curl命令对吧?这不需要可读形式的输出。
    • 是的。对于简单的删除操作,不需要读取那些 XML。实际上,删除根本没有返回任何内容。但是,对于调试而言,读取 XML 将是一场噩梦。我不确定你这样做的目的。如果只是自动化这些操作,我强烈建议您使用 Azure CLI。除非,你想重用一些以前写的涉及 XML 的代码,而且这些代码很难修改。
    • 非常感谢它对我有用,我不允许在服务器上安装 azure cli 工具,我知道 azure cli 使我的工作变得非常容易:(当我提供证书时我还有一个问题.pem 路径如果我从它工作的 cert.pem 位置卷曲它就不起作用,如果我想提供像“curl -X DELETE -E /etc/ssl/azure-cert.pem”这样的路径,我该如何使用该命令.....
    • 确保当前用户有权访问您的 .pem 文件的位置。 (例如,在 Ubuntu 中,尝试使用 sudo 的命令。)我在最后尝试了它。它适用于绝对路径。如果不是权限问题,请提供错误信息,以便我进一步调查。
    • ` sudo curl -E /etc/ssl/private/prod.pem -H "x-ms-version: 2011-10-01" "management.core.windows.net:8443/xxxxxxxxxxxxxx/s ervices/sqlservers/servers/xxxxxxx/ databases?contentview=generic" ttp://www.w3.org/TR/html4/strict.dtd" rel="nofollow" target="_blank">w3.org/TR/html4/strict.dtd"> 错误请求

      Bad Request


      HTTP 错误 400。请求是格式错误。

      `
    猜你喜欢
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    相关资源
    最近更新 更多