是否可以在Azure VIP交换期间更改连接字符串

时间:2011-09-29 16:42:20

标签: azure connection-string azure-sql-database

我正在尝试在Azure(9月工具包)中设置Staging and Live环境,我想要一个单独的Staging and Live数据库 - 使用不同的连接字符串。显然,我可以在Visual Studio中使用web.config转换来实现这一点,但是有一种方法可以在VIP交换期间自动更改连接字符串 - 以便登台站点指向暂存数据,将实时站点指向实时数据?我宁愿不必两次部署。

2 个答案:

答案 0 :(得分:15)

使用管理API和PowerShell Cmdlet,您可以自动化大量Azure平台,这可以包括协调VIP交换机和连接字符串更改。

这是方法:

  1. 将数据库连接字符串添加到ServiceConfiguration文件中。
  2. 使用RoleEnvironment.GetConfigurationSettingValue修改应用程序逻辑以从Azure特定配置读取连接字符串,而不是更典型的.NET配置ConfigurationManager.ConnectionStrings API
  3. 实施RoleEnvironmentChanging,以便在Azure服务配置发生变化时通知您的逻辑。使用RoleEnvironment.GetConfigurationSettingValue再次添加代码来更新应用程序的连接字符串。
  4. 使用“staging”数据库连接字符串的ServiceConfiguration设置部署到登台
  5. 编写一个PowerShell脚本,该脚本将调用VIP开关(围绕<{3>}中的 Move-Deployment cmdlet构建),并使用包含“我的”的新ServiceConfiguration文件调用配置更改生产“数据库连接字符串(请参阅 Set-DeploymentConfiguration
  6. 总之,第5步将执行VIP开关并在单个自动操作中执行连接字符串更新。

答案 1 :(得分:9)

当你进行VIP交换时,我不相信角色的任何变化。相反,它会改变负载均衡器配置。

因此,您的应用中没有任何操作可以让它更改配置。我唯一能想到的是URL在两者之间的变化。您可以根据访问它的URL来实现选择两个连接字符串之一的代码(假设我们只讨论Web角色),但它看起来很混乱。

从根本上说,我认为问题在于分期不是一个单独的测试环境;它是生产的垫脚石。因此,微软的假设是配置不会改变。