【问题标题】:Unable to connect the sql database using azure无法使用azure连接sql数据库
【发布时间】:2023-03-30 04:40:02
【问题描述】:

我在 Azure 中有一个使用简单 ARM 模板创建的 SQL Server。当我使用我的 sqladmin 凭据连接到 SQL Server 时,我 能够 很好地连接到它。为此,我正在使用 SQL Server Management Studio。

但是,当我使用以下任何突出显示的选项时,我会看到一条错误消息。

我看到的错误如下图所示,它是一个弹出窗口,但我将文本粘贴在其中以便于参考。

TITLE: Connect to Server
------------------------------
Cannot connect to abcd-core-sql.database.windows.net.
------------------------------
ADDITIONAL INFORMATION:
**Login failed for user '<token-identified principal>'. (Microsoft SQL Server, Error: 18456)**
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=18456&LinkId=20476

如果有人能评论我在使用 ARM 模板创建 SQL Server 时是否遗漏了任何内容,我将不胜感激。换句话说,是否需要在配置中包含任何其他内容才能使 azure 广告身份验证适用于azure 中的 sql db。

    {
        "type": "Microsoft.Sql/servers",
        "name": "[variables('sql_name')]",
        "apiVersion": "2015-05-01-preview",
        "location": "eastus2",
        "properties": {
            "administratorLogin": "[parameters('admin')]",
            "administratorLoginPassword": "[parameters('passwd')]",
            "version": "[variables('sqlversion')]"
        }
    },

【问题讨论】:

    标签: azure-sql-database arm-template


    【解决方案1】:

    您必须先为实例配置 Azure Active Directory 管理员,然后才能使用 AAD 凭据连接或创建任何 AAD 数据库用户。见Configure and manage Azure AD authentication with Azure SQL

    设置 AAD 管理员后,以 AAD 管理员或设置为 AAD 管理员和Create contained users mapped to Azure AD identities 的 AAD 安全组的成员身份连接,例如

    CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
    

    CREATE USER [ICU Nurses] FROM EXTERNAL PROVIDER;
    

    【讨论】:

    • 谢谢。我从门户网站将自己添加为管理员,现在可以登录。但是其他用户的配置/管理如何工作。如果我想让用户使用他们自己的 AD 凭据登录。有可能吗
    【解决方案2】:

    我遇到了同样的问题,要解决这个问题,您需要点击按钮,然后点击选项卡和字段,然后将其替换为您想要/有权访问的数据库名称。

    出现此问题是因为用户的默认数据库是主数据库,但用户无权访问主数据库。

    另一种选择是授予用户访问主数据库的权限,但通常您不希望这样做。

    【讨论】:

      【解决方案3】:

      对于 ARM 模板,这里是可以在 sql Server 资源中添加的内容:

        "resources": [
          {
            "name": "ActiveDirectory",
            "type": "administrators",
            "location": "[parameters('location')]",
            "apiVersion": "2019-06-01-preview",
            "properties": {
              "administratorType": "ActiveDirectory",
              "login": "[parameters('sqlADadmin')]",
              "sid": "[parameters('sqlADadminObjectID')]",
              "tenantId": "[subscription().tenantId]"
            },
            "dependsOn": [
              "[resourceId('Microsoft.Sql/servers', variables('sqlServerName'))]"
            ]
          }
      

      这里是API documentation

      您不需要 both Azure AD objectId 和您正在创建 sql 管理员的帐户/组的登录名。

      这可以通过Get-AzureADUser in Powershell 或Portal 获得

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-13
        • 1970-01-01
        • 2021-05-12
        • 2020-09-29
        • 2020-09-24
        • 2022-01-18
        相关资源
        最近更新 更多