sql-server - 使用 Visual Studio 2017 自定义 SQL Server 数据库项目脚本
问题描述
我正在使用带有 Visual Studio 2017 的 SQL Server 数据库项目,并尝试自定义脚本输出以执行以下操作:
- 创建没有 SQLCMD 变量的仅 T-SQL 脚本。运行脚本的人根本不允许使用 SQLCMD。是否有可能做到这一点?
- 排除
GRANT ALTER ON SCHEMA::[dbo]
和GRANT CONTROL ON SCHEMA::[dbo]
声明。在我的情况下,这些语句特定于较低的环境,不应部署到较高的环境。
对于#1,我环顾了 Visual Studio,但还没有找到任何方法来做到这一点。
对于#2,我尝试更改模式比较中的一些选项,但不知何故,GRANT ALTER
andGRANT CONTROL
语句总是出现在脚本输出中,我必须手动删除它们。
谢谢
解决方案
您可以创建发布配置文件作为数据库项目的一部分,并排除您不想部署的部分。例如,用户、权限和角色成员资格可以从部署中排除。
话又说回来,奇怪的是这些陈述出现了。您的数据库项目中是否有用户和/或登录名?例如,我一开始就从来没有把它们放在那里,因为它们是特定于实例的,并且当你有多个环境时弊大于利(几乎总是如此)。
关于 SQLCMD 变量,我认为您不能完全避免它们。收到您的脚本的人必须将它们注释掉并用代码中的实际值替换它们。贵公司在总体上设置变更管理,特别是变更部署的方式一定有一些非常不寻常的地方。也许您可以让他们重新考虑他们的旧方式,转而采用更现代的方法?...
推荐阅读
- static-analysis - ES6 继承函数在子类上调用时返回错误类型
- javascript - 为什么流程会抱怨导出类上的无类型函数参数(缺少注释)?
- python - 获取所有匹配列表
- javascript - 为什么我不能在这个简单的函数中访问这个变量?
- mlflow - mlflow 嵌套运行的价值是什么?
- google-apps-script - 关于从电子表格附加 excel 文件列表的 Google 脚本
- visual-studio - 即使已启用,如何统一修复循环时间?
- sql - SQL Concat 并将日期转换为 MM/YYYY
- python - 将大括号解析为json?
- c - 如何根据传递给 tree_new() 的枚举类型组合一个 BST 或 RBT 的树 ADT?