SQL server 2008存储过程环境变量



我在两个测试数据库中有许多表。第一个数据库是当前数据库,第二个是一年前的快照。我有一些存储的proc挂在第一个db上,它也引用了第二个db。

我的问题是,我应该使用什么方法,这样当我转到生产时就不必修改我存储的proc。

如果这是一个编码问题,我会使用环境变量。sql server 2008的选项是什么。

谢谢。

理解你的问题有点困难,更多的细节会有所帮助。

也许您的存储过程不应该绑定到特定的数据库,是吗?如果没有,我建议删除对特定数据库的引用。

我们在公司中使用多数据库存储过程&触发器。根据生产系统的不同,数据库名称可能会更改。当我们安装或升级数据库时,我们使用与数据库无关的SQL安装脚本,数据库被标识为特定的变量关键字,然后我们使用类似sed的脚本来查找&用T-SQL中的实际数据库名称替换数据库名称变量关键字,然后我们应用特定于DB的T-SQL脚本。它简单、快速且可移植到任何生产数据库,不替换关键字的T-SQL是无效的(因此,如果不替换DB名称关键字,我就无法执行)。

但这是一个非常特殊的情况,我很少听说跨数据库存储过程,它使系统和权限管理变得非常复杂。

我不认为使用环境变量有什么意义,这可能会让人不知所措,而且在执行请求之前必须将其构建为字符串,这是不建议的。在任何情况下,您都必须重写存储过程才能以这种方式进行操作。

这是我在Stack Overflow上的第一次回答。我希望这个答案能有所帮助。

谨致问候。

最新更新