我想在我的 SQL Server 2008 上为多个(甚至所有)数据库创建一个相同的存储过程。
我可以一次完成还是应该在 asp.net 项目参考数据库中单独创建它?
请帮我.....
我想在我的 SQL Server 2008 上为多个(甚至所有)数据库创建一个相同的存储过程。
我可以一次完成还是应该在 asp.net 项目参考数据库中单独创建它?
请帮我.....
这个问题已经在 SO 上被多次问过,但有趣的是,对于最佳答案似乎没有达成共识。因此,这里是各种人建议的主要选项的摘要(没有特殊顺序):
sp_
前缀的主数据库中,以便 SQL Server 首先在那里查找它diff
将数据库和应用差异脚本部署到其他数据库在我看来,1 是一个非首发,因为微软明确表示你不应该在主数据库中创建对象。2 听起来不错,但实际上数据库比从头开始创建 (YMMV) 更频繁地恢复或复制,因此使用模型是不可靠的。
3 和 4 适用于表和视图,但执行上下文可能是存储过程和函数的问题。但这取决于程序中的逻辑,在您的情况下它可能是可行的。
但是 1-4 都有潜在的问题,如果您只有一个对象,那么您只有该对象的一个版本,并且在不同的数据库中提供不同的版本通常很有用,用于测试或仅用于不同的客户。
5 和 6 是同一主题的变体,我个人认为这是最好的方法,因为无论如何部署都是您必须解决的问题,因此您不妨这样做并确保您拥有适当的知识、工具和流程能够以受控、自动化的方式将代码干净、快速地部署到任何数据库。
在master数据库或不会删除的数据库中创建一个存储过程。将参数传递给存储过程,该参数标识您要在哪个数据库中获取数据并相应地完成其余工作。