sql - 跨数据库 SQL 脚本

标签 sql sql-server database

我正在做一个项目,我们直接从一个数据库到另一个数据库。我们有一个主数据库,客户可以在其中更新他们的网站,然后通过大量 SQL 脚本将更改从一个数据库推送到另一个数据库。主数据库用作预览站点,允许他们在将更改上线之前查看更改。

目前我们直接将从数据库名称编码到 SQL 查询中。

例如INSERT INTO [slave-database].dbo.TableName

然而,当我们将拥有多组两个数据库的开发分支时,这绝对是一件痛苦的事情。任何与正在进行的开发相关的存储过程都会更新以指向该特定分支的从属数据库,例如[branch5-slave-database].

这并不理想,因为在推送到主干时必须手动调整更改(更改硬编码的数据库名称)。

有更好的方法吗?目前我能看到的唯一解决方案是为每个分支创建一个 SQL Server 实例,这意味着数据库名称在所有分支中始终保持相同。不过,这将是一个绝对的痛苦,并且会产生相当大的开销。是否可以在 SQL Server 中为数据库名称设置常量?允许我们只更新分支数据库上的单个值。动态 SQL 是不可能的。

最佳答案

看看使用未记录的系统存储过程 sp_MSforeachdb

sp_MSforeachdb

它允许您针对当前实例中的每个数据库处理代码。您可以明确排除系统数据库。

关于sql - 跨数据库 SQL 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1091298/

相关文章:

sql - T-SQL 查询返回不应该的项目

mysql - 如何根据一列向另一个表添加列?

php - mysql全文搜索不适用于3个字符

sql - SQL 规范是否提供了一种更好的方法来对两个集合进行异或运算?

mysql - 函数 SUM 未按预期工作

sql-server - 已达到 Azure SQL Server 最大池大小错误

php - MySQL从其他表插入数据

python - Django:更复杂的唯一性约束?

sql - 在 SQL Server 中执行时捕获对象依赖关系

sql - 将一个数据库的表替换为另一个数据库的表