【问题标题】:SQL Server Database Project Script Customization w/ Visual Studio 2017使用 Visual Studio 2017 自定义 SQL Server 数据库项目脚本
【发布时间】:2019-05-10 22:57:23
【问题描述】:

我正在使用带有 Visual Studio 2017 的 SQL Server 数据库项目,并尝试自定义脚本输出来做几件事:

  1. 创建没有 SQLCMD 变量的仅 T-SQL 脚本。运行脚本的人根本不允许使用 SQLCMD。可以这样做吗?
  2. 排除GRANT ALTER ON SCHEMA::[dbo]GRANT CONTROL ON SCHEMA::[dbo] 语句。在我的情况下,这些 语句特定于较低的环境,不应部署到较高的环境。

对于 #1,我环顾了 Visual Studio,但还没有找到任何方法。

对于 #2,我尝试更改架构比较中的一些选项,但不知何故,GRANT ALTERGRANT CONTROL 语句总是出现在脚本中输出,我必须手动删除它们。

谢谢

【问题讨论】:

    标签: sql-server visual-studio-2017 sql-server-data-tools


    【解决方案1】:

    您可以创建一个publishing profile 作为数据库项目的一部分,并排除您不想部署的部分。例如,用户、权限和角色成员资格可以从部署中排除。

    再一次,奇怪的是这些陈述出现了。您的数据库项目中是否有用户和/或登录名?例如,我一开始就从来没有把它们放在那里,因为它们是特定于实例的,当你有多个环境时弊大于利(几乎总是这样)。

    关于 SQLCMD 变量,我认为你不能完全避免它们。收到您的脚本的人必须将它们注释掉并用代码中的实际值替换它们。贵公司在总体上设置变更管理特别是变更部署的方式一定有一些非常不寻常的地方。也许您可以让他们重新考虑他们的旧方式,转而采用更现代的方法?..

    【讨论】:

    • 对于 SQLCMD,它不太可能会改变。部署团队非常坚持只使用 T-SQL 脚本,所以听起来我需要在每次推送之前手动编辑脚本。
    • @user2966445,我不是该主题的专家,但据我所知,应该可以编写某种正则表达式来为您完成这项工作。也就是说,替换占位符并注释掉它们的定义。试试看你能不能:)
    • 什么时候会发生替换?
    • @user2966445,项目属性中有一个构建后事件处理程序,但我认为它不会在发布脚本生成后触发。除此之外,我想不出任何开箱即用的东西。编写脚本或控制台程序并将其设置为监视输出目录中出现的与*.publish.sql 模式匹配的文件?或者四处逛逛可能会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多