模板部署后输出 Azure SQL 数据库连接字符串

15

我有一个ARM模板,其中之一是在Azure SQL服务器上创建数据库(该服务器也由模板创建)。

我需要输出数据库的ADO.NET连接字符串。

因为我不确定键的名称是什么,所以我正在输出整个对象: 这是我在JSON模板文件中拥有的内容:

 "DatabaseConnectionString": {
      "type": "object",
      "value": "[listkeys(variables('dbResourceId'), variables('apiVersion'))]"
    }

dbResourceId是100%正确的。如果我输出它,我会得到正确的ID,而且创建数据库时使用的apiVersion也是相同的。 但是,我会收到以下错误:

"code": "NotFound",

"message": "Resource not found for the segment 'listkeys'.",

数据库正在被正确创建。

我对服务总线有完全相同的模式/想法,并且它可以完美地工作。

帮帮我,这让我筋疲力尽。


你的dbResourceId变量是什么样子?它应该以提供程序命名空间开头。例如,我使用这个来帮助返回存储账户密钥:[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2016-01-01')] - Martyn C
1个回答

24

看起来连接字符串不是一个属性,这就是为什么它不能用listkeys返回,需要使用concat函数"计算"出来。

"DatabaseConnectionString": {
  "type": "string",
  "value": "[concat('Server=tcp:',reference(variables('sqlserverName')).fullyQualifiedDomainName,',1433;Initial Catalog=',variables('dbName'),';Persist Security Info=False;User ID=',reference(variables('sqlserverName')).administratorLogin,';Password=',reference(variables('sqlserverName')).administratorLoginPassword,';MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;')]"
}

1
我原以为这只是一个聪明的解决方法,但显然这是获取连接字符串的推荐方式 -> https://blogs.msdn.microsoft.com/azuresqldbsupport/2016/12/01/arm-template-outputs-for-azure-sql-database/ - Stoimen
1
@Stoimen,该网站上的示例与上面的内容完全相同。 - JoeBrockhaus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接