我在两个测试数据库中有许多表。第一个数据库是最新的,第二个是一年前的快照。我有一些存储的过程挂在第一个数据库上,它们也引用了第二个数据库。
我的问题是,我应该使用什么方法,这样我在投入生产时就不必修改存储的过程。
如果这是一个编码问题,我会使用环境变量。我对 sql server 2008 有哪些选择。
谢谢你。
我在两个测试数据库中有许多表。第一个数据库是最新的,第二个是一年前的快照。我有一些存储的过程挂在第一个数据库上,它们也引用了第二个数据库。
我的问题是,我应该使用什么方法,这样我在投入生产时就不必修改存储的过程。
如果这是一个编码问题,我会使用环境变量。我对 sql server 2008 有哪些选择。
谢谢你。
有点难以理解您的问题,更多细节会有所帮助。
可能您的存储过程不应该绑定到特定的数据库,不是吗?如果不是,我建议删除对特定数据库的引用。
我们在公司中使用多数据库存储过程和触发器。根据生产系统,数据库名称可以更改。当我们安装或升级数据库时,我们使用与 DB 无关的 SQL 安装脚本,数据库被识别为特定的变量关键字,然后我们使用类似 sed 的脚本,用 T 中的实际数据库名称查找和替换数据库名称变量关键字-SQL,然后我们应用特定于 DB 的 T-SQL 脚本。它简单、快速且可移植到任何生产数据库,不替换关键字的 T-SQL 是无效的(所以如果不替换数据库名称关键字就无法执行)。
但这是一个非常特殊的情况,我很少听说跨数据库存储过程,它使系统和权限管理变得相当复杂。
我没有看到使用环境变量的意义,这可能会让人不知所措,并且您必须在执行之前将请求构建为字符串,这是不推荐的。无论如何,您都必须重写存储过程才能以这种方式进行。
这是我在 Stack Overflow 上的第一次回答尝试。我希望这个答案有帮助。
问候。