Eri*_*ikE 17
有时,使用SYNONYM是一个很好的策略:
CREATE SYNONYM [schema.]name FOR [[[linkedserver.]database.]schema.]name
Run Code Online (Sandbox Code Playgroud)
然后,通过存储过程中的同义词引用该对象.
改变同义词指向的地方是动态SQL的问题,但是你的主存储过程可以完全是动态的SQL.创建一个表来管理您需要引用的所有对象,以及一个将所有所需的同义词切换到正确的上下文的存储过程.
此功能仅适用于SQL Server 2005及更高版本.
此方法不适用于频繁切换或不同连接需要使用不同数据库的情况.我将它用于偶尔在服务器之间移动的数据库(它可以在prod数据库或复制数据库中运行,并且它们具有不同的名称).在将数据库恢复到新家之后,我在其上运行了切换器SP,一切都在大约8秒内完成.
Raj*_*ore 10
存储过程是特定于数据库的.如果要动态访问其他数据库中的数据,则必须创建动态SQL并执行它.
Declare @strSQL VarChar (MAX)
Declare @DatabaseNameParameter VarChar (100) = 'MyOtherDB'
SET @strSQL = 'SELECT * FROM ' + @DatabaseNameParameter + '.Schema.TableName'
Run Code Online (Sandbox Code Playgroud)
您可以使用if子句设置@DatabaseNameParameter您喜欢的DB.
执行语句以获得结果.
| 归档时间: |
|
| 查看次数: |
19589 次 |
| 最近记录: |