【问题标题】:Upgrade database schema when deploying to windows azure instance部署到 Windows azure 实例时升级数据库架构
【发布时间】:2015-06-30 00:06:56
【问题描述】:

我在 Windows azure 实例上托管了 Web 应用程序。我们有一个测试和实时云服务,测试服务有 1 个实例,实时服务有 3 个实例。

测试应用程序每晚通过 TFS Builds 自动部署,并使用 power shell 脚本部署到 Windows Azure。

问题是我们有用于数据库架构和数据更改(如果需要)的老式 sql 脚本。目前我们必须手动登录azure sql数据库(SMSS)并运行脚本。

我想使用 powershell 脚本在每晚通过 TFS Build Machine 运行的每个构建上自动化 sql 脚本。我该怎么做?

SQL 脚本是可重新运行的,所以不用担心,如果它每天都运行相同的脚本,因为这不会对测试应用程序造成任何问题。

【问题讨论】:

    标签: azure azure-sql-database


    【解决方案1】:

    也许我错了,但我认为这很简单。为什么不从 PowerShell 脚本调用“sqlcmd.exe”实用程序,将 SQL 脚本文件作为参数传递?

    请务必使用 SQL Server 2008 R2 或更高版本附带的 sqlcmd.exe,以便与 SQL Azure 正常工作。

    【讨论】:

    • 嗨,大卫,感谢您的回复。当云Azure项目部署在Azure实例上时,机器上默认没有安装sqlcmd.exe实用程序。我有实例的远程桌面并尝试在命令提示符下使用 sqlcmd 但没有运气。您必须在项目中包含安装 sql server 2008 R2 客户端工具吗?请指教?
    • 是的,您可以在您的角色中包含 sqlcmd.exe(和依赖项),然后从 .cmd 启动任务中调用它。我过去在一些项目上做过这个,但是......根据你的描述,你需要从 TFS 构建机器上运行这个脚本,而不是从一个角色。您的 TFS 构建机器是在 Azure 上运行的 VM 角色吗?
    【解决方案2】:

    我想了解如何部署 SQL 包。

    看起来您有一个每次部署数据库后都必须运行的脚本。这可以使用 powershell (ExecuteNonQquery) 来完成,就像它可以用于本地 SQL Server 一样。

    对于单个查询:

    $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
    $sqlQuery = "Your Query here"
    $SqlConnection.ConnectionString = "Database Conncetion String"
    $SqlCmd = New-Object System.Data.SqlClient.SqlCommand
    $SqlCmd.CommandText = $sqlQuery
    $SqlCmd.CommandTimeout = 300
    $SqlCmd.Connection = $SqlConnection
    $sqlConnection.Open()
    $result = $sqlCmd.ExecuteNonQuery()
    $sqlConnection.Close()
    

    准备好查询和连接字符串

    对于 SQL 脚本: 可以参考问题here

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-29
      相关资源
      最近更新 更多