Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 服务器中所有数据库的参考存储过程_Asp.net_Sql Server 2008 - Fatal编程技术网

Asp.net 服务器中所有数据库的参考存储过程

Asp.net 服务器中所有数据库的参考存储过程,asp.net,sql-server-2008,Asp.net,Sql Server 2008,我想为我的SQL Server 2008上的多个(甚至所有)数据库创建一个相同的存储过程 我可以立即创建它,还是应该在asp.net项目引用数据库中单独创建它 请帮助我……在主数据库或不会删除的数据库中创建存储过程。将一个参数传递给存储过程,该存储过程标识您要在哪个数据库中获取数据,并相应地执行其余的工作。这个问题已经被问过多次了,但有趣的是,对于最佳答案似乎没有共识。因此,这里总结了各种人提出的主要选择(无特殊顺序): 将它放在带有sp_u前缀的主数据库中,以便SQL Server首先在那里查

我想为我的SQL Server 2008上的多个(甚至所有)数据库创建一个相同的存储过程

我可以立即创建它,还是应该在asp.net项目引用数据库中单独创建它


请帮助我……

在主数据库或不会删除的数据库中创建存储过程。将一个参数传递给存储过程,该存储过程标识您要在哪个数据库中获取数据,并相应地执行其余的工作。

这个问题已经被问过多次了,但有趣的是,对于最佳答案似乎没有共识。因此,这里总结了各种人提出的主要选择(无特殊顺序):

  • 将它放在带有
    sp_u
    前缀的主数据库中,以便SQL Server首先在那里查找它
  • 将它放在模型数据库中,这样它就会自动添加到所有新的数据库中
  • 仅为“全局”过程(和其他对象)创建数据库,并使用三部分命名调用它们
  • 如3所示,但在其他数据库中创建同义词,因此不需要三部分命名
  • 使用商业或自行开发的工具管理到多个数据库的部署
  • 如5所示,但部署到一个数据库,然后
    diff
    数据库并应用diff脚本部署到其他数据库
  • 在我看来,1是不可能的,因为Microsoft不应该在主数据库中创建对象。2听起来不错,但实际上数据库的恢复或复制比从头创建(YMMV)更频繁,所以使用模型是不可靠的

    3和4适用于表和视图,但执行上下文对于存储过程和函数可能是个问题。但这取决于程序中的逻辑,在您的情况下可能是可行的

    但是1-4都有一个潜在的问题,即如果您只有一个对象,那么您只有该对象的一个版本,并且在不同的DBs中提供不同的版本通常很有用,用于测试或仅针对不同的客户


    5和6是同一主题的变体,我个人认为这是最好的方法,因为部署是一个无论如何都必须解决的问题,所以您最好这样做,并确保您拥有适当的知识、工具和流程,能够将代码干净、快速地部署到受控环境中的任何数据库,自动方式。

    为什么要这样做?您希望运行哪种类型的查询?我们使用5,通过一个简单的批处理文件将升级脚本部署到多个数据库(200+),它快速且易于管理。我还没有遇到这方面的问题,特别是因为我可以在本地登台环境上执行一个模拟运行,该环境可以镜像所有数据库。最棒的是,在编写存储过程时,没有有趣的规则需要记住。