我有一个存储过程,负责将数据从数据库 A 导入数据库 B。我有客户,他们都有自己的数据库 B(具有相同的表等)。他们也有自己的数据库 A。存储过程将是在数据库 B 上执行(部署)。
问题:
每个客户对 A 和 B 都有另一个数据库名称。我还发现数据库 A 可以位于不同的服务器/实例上。我需要一种通用方法来自动将 A 中的服务器/实例名称和数据库名称放入我的存储过程中,以从那里选择数据。每个客户都有一个连接到数据库 A 的连接字符串,该连接字符串已经存在于数据库 B 中。所以从连接字符串中,我可以获得服务器/实例名称和 A 的数据库名称。(我已经创建了一个链接服务器)
1.将服务器/实例名称和数据库名称放在表名之前的最佳方法是什么?
存储过程
在我的存储过程中,我使用了很多变量(声明)表来插入数据库 A 中的数据。有很多关于使用动态 sql 的文章,但是我找不到带有声明表的示例。
我的解决方案
我正在考虑将数据库 A 中的所有数据插入到变量表中。我正在从 7 个表中导入数据,因此我需要声明 7 个表,并且在我的 SP 中,我可以从声明表中选择数据。请注意,空洞存储过程非常庞大。
问题
2.您如何看待我的解决方案?
3.您有其他解决方案吗?
4.如何使用动态sql插入我的声明表?
**请注意,我使用的是 sql server 2005。
I have a few statements like below:
declare @Temp table (Id int, etc
insert into @Temp (Id, etc)
Select Id, etc
From [databasename].dbo.TableName //hardcoded
Where .......
// doing staff like selecting from the @Temp table etc.
I also have subqueries, but I can change if it is necessary.