gpt4 book ai didi

sql-server - 将本地数据库更改发布到远程数据库 SQL Server 2012

转载 作者:搜寻专家 更新时间:2023-10-30 23:43:42 26 4
gpt4 key购买 nike

我在我的本地机器上安装了 SQL Server 2012,我正在使用 Arvixe 托管我的应用程序/数据库的生产版本。

为了使用 Arvixe 在远程服务器上初始设置数据库,我刚刚上传了本地数据库的 .bak 文件。没什么大不了的,因为它只是进行设置,但如您所知,这也会将我所有的测试数据推送到我的生产服务器上的数据库中。

我的问题是 .. 我应该如何将数据库更改(新表、列、键等)从我的本地开发环境推送到 Arvixe 服务器上的生产环境?简单的备份现在不起作用 - 我无法覆盖我的生产数据并将其替换为开发数据。

是否有我可以使用的程序? SQL Server 2012 中是否有我遗漏的内容?我只能找到上传本地数据库备份版本的建议。

感谢您的帮助。

最佳答案

将数据库更改从开发推送到生产的方式与生产实例所在的位置几乎没有关系。

所有更改都应通过部署脚本迁移到其他环境:

  • 您应该在进行这些更改时为所有更改创建脚本。
  • 脚本应放在特定版本的文件夹中。
  • 应该对脚本进行编号,以保留发生这些更改的相同时间顺序(这应该消除 - 大部分 - 任何依赖性问题)。
  • 脚本编号应与 2 或 3 位数字一致,以便正确排序(即 01、02... 或 001、002...)。
  • 脚本都应该是可重新运行的(即它们应该首先检查预期的更改是否已经发生,如果是,则跳到下一个脚本)。
  • 迁移到更高环境时,只需运行所有脚本即可。
  • 如果任何脚本失败,整个过程应该终止,因为所有更改都需要按照它们在开发中发生的相同顺序发生。如果使用 SQLCMD.EXE 运行脚本,请使用 -b(即“On error batch abort”)命令行开关,因为它会在出现任何错误时终止进程。 '
  • 这是一个简单的 CMD 脚本(您可以将其命名为 DeploySqlScripts.cmd),它一次处理一个文件夹到单个服务器/实例,并假设您有一个 USE [DatabaseName]; 每个脚本顶部的行:

    @ECHO OFF
    SETLOCAL ENABLEDELAYEDEXPANSION

    IF "%1"=="" (
    ECHO Usage: DeployScripts "full:\path\to\SQL\scripts" Server[\Instance]
    GOTO :EOF
    )

    FOR /F "delims=," %%B IN ('DIR /B /O:N /A-D "%1\*.sql"') DO (
    SQLCMD -b -E -S "%2" -i "%%~fB"
    IF !ERRORLEVEL! EQU 1 (
    ECHO.
    ECHO Error in release script...
    ECHO.
    EXIT /B !ERRORLEVEL!
    )
    ECHO.
    )

还有:

  • 如果您要从 Dev 迁移到 Prod,那么您至少会缺少一个环境,如果不是 2 个甚至 3 个。您不应该将更改直接从开发推送到生产,因为您可能正在开发的东西不是准备发布。您认为已准备好发布的所有更改都应首先进入提供更好测试平台的 QA 环境,因为它没有任何其他可能会使某些测试无效的更改。

  • 您真的,真的应该在源代码控制系统(又名版本控制系统)的某些源代码中创建您的数据库对象 CREATE 脚本。 Subversion (SVN)、Git、TFS 等。有多种选择,各有优缺点(以及真正的信徒和仇恨者)。因此,对其中的一些进行一些研究,选择一个适合您需要的,然后使用它。是的,发布脚本也应该是该存储库的一部分。

  • 还有一个来自 Redgate 的工具,SQL Source Control ,它不是免费的,我也没有使用过它,但希望在这方面提供帮助。

  • 对于简单/小型项目(单个数据库),Microsoft 有一个免费工具,可以用脚本找出源(即开发)和目标(即 QA 或生产)之间的差异。它叫做SqlPackage.exe并且是 SQL Server Data Tools (SSDT) 的一部分.

关于sql-server - 将本地数据库更改发布到远程数据库 SQL Server 2012,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31844943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com