【发布时间】:2012-07-23 17:55:16
【问题描述】:
我有两个不同的 SQL Server 数据库(在同一台服务器上——如果有帮助的话),它们需要共享相同的存储过程逻辑。我试图实现的解决方案如下所示:
Database1
Table: TestTable
Synonym: sp_MyProc pointing at SharedDatabase.dbo.sp_MyProc
Database2
Table: TestTable
Synonym: sp_MyProc pointing at SharedDatabase.dbo.sp_MyProc
SharedDatabase
Proc: sp_MyProc which runs queries against TestTable
我希望使用同义词,这样如果我在 Database1 的上下文中执行 sp_MyProc,它将使用 Database2.TestTable。如果我在 Database2 的上下文中执行 sp_MyProc,它将违反 Database2.TestTable。但是,当我通过任一同义词执行 sp_MyProc 时,它会忽略同义词的上下文并执行查找未找到的 TestTable 的本地副本。
有没有办法实现一个共享存储过程,通过同义词或其他机制对不同数据库中的不同表副本执行?
编辑
我应该提一下,就我而言,我希望使用大量现有的表和过程来执行此操作,因此任何需要修改过程或表本身的解决方案都不理想。
【问题讨论】:
-
这也是我要找的。span>
标签: sql-server stored-procedures code-reuse