SQL Server变量DB作为存储过程参数

时间:2012-08-07 10:54:27

标签: sql sql-server-2008 stored-procedures

我有一个应用程序数据库(A-DB),它从一组数据库(B-set-DBs,(大约50个DB))导入。 用户选择4个“B-set-DB`s”数据库,然后将其导入A-DB进行应用。

我为导入(约4000行SQL代码)编写了一个存储过程,其中包含4个B-set-DB的硬编码数据库,它的工作非常完美。

所以我的问题是如何使导入的数据库名称变量?

我不能为整个4000行使用动态SQL,因为im callin函数和其他存储过程,有很多参数和字符串以及临时表的定义和子查询的子查询......和很多其他奇怪的事情。 (我知道这听起来很丑陋,但我必须让它运行,我没有设计整个事情。)

也许可以在导入存储过程的第一行定义同义词:

ALTER PROCEDURE [dbo].[test_storedProcedure]  
(@DBName_1 nvarchar(512), @table_name_1 nvarchar(512))
AS
BEGIN
DECLARE @cmd nvarchar(max);
set @cmd = N'create synonym DB_SYN' + 
        N' for ' + 
        @DBName_1 + --[A70_V70_V280]
        @table_name_1 --.[dbo].[UNITCHANGEMAP]
exec sp_executesql @cmd
...
SELECT * INTO A-DB
FROM DB_SYN
...
END

之后只使用同义词。

或者有人知道一种方法吗?

BTW我正在使用SQL Server 2008 所以我在SQL Server的对象资源管理器中看到了所有50个数据库。

0 个答案:

没有答案