查询中的动态数据库实例

时间:2011-12-12 23:04:35

标签: sql sql-server sql-server-2008-r2

好。我有一个包含大量存储过程的数据库,并引用另一个数据库,如下所示:

select * from DatabaseName.dbo.tableName... or
Insert into DatabaseName.dbo.tableName....

因此。它在存储过程中引用它大约500-1000次。现在,我需要从引用另一个数据库的一个数据库运行这些存储过程,如下所示:

 select * from AnotherDatabaseName.dbo.tableName... or
 Insert into AnotherDatabaseName.dbo.tableName....

据我所知,sql server 2008 r2没有任何新功能可以帮助它,我每次都需要使用参数构建动态查询,对吧?如果是这种情况,有没有一个像样的简单方法呢? 我需要更改每个存储过程并添加参数@DatabaseInstance。此外,我需要重新配置所有查询。听起来很吓人。是否有任何自动化工具可以帮助解决这个问题?

1 个答案:

答案 0 :(得分:1)

使用代码,您可以在数据库中为数据库创建同义词。即我在SP中使用此代码基于参数(区域)

插入到指定的数据库中
IF  EXISTS (SELECT * FROM sys.synonyms WHERE name = N'TABLE_SYNONYM') DROP SYNONYM [dbo].[TABLE_SYNONYM]
IF @region_id not in (2,3) CREATE SYNONYM [dbo].[TABLE_SYNONYM] FOR [DB_US].[dbo].[mytable]
IF @region_id = 2 CREATE SYNONYM [dbo].[TABLE_SYNONYM] FOR [DB_EU].[dbo].[mytable]
IF @region_id = 3 CREATE SYNONYM [dbo].[TABLE_SYNONYM] FOR [DB_Asia].[dbo].[mytable]

insert into [dbo].[TABLE_SYNONYM] (...) select ....