小编典典

SQL Server存储过程中的动态数据源

sql

我有一个包含多个数据库的SQL
Server。我有一个主数据库,其中包含带有实体和ID号的多个表。然后,这些实体中的每个实体都有一个关联数据库(不是表,而是数据库)及其所有信息。例如,如果MAIN数据库中的实体的ID号为1,则同一SQL
Server上将有一个SubDatabase1数据库。

本质上,我想做的是在MAIN数据库中创建一个存储过程,该存储过程从SUB数据库收集数据,但是我收集的SUB数据库应基于传递给Proc的ID号来确定。

我知道这是完全不正确的,但是我想知道是否有人可以帮我照亮这一点。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE GetInstallationCount
-- Add the parameters for the stored procedure here
@installId int=0
AS
BEGIN
  SET NOCOUNT ON;

  //Trying to make the DatabaseName dynamic here!!
  select count(*) from dbo.Installation@installId.Names

END
GO

谢谢-J


阅读 161

收藏
2021-04-15

共1个答案

小编典典

阅读有关如何创建动态SQL(特别是sp_executesql)的信息。这应该使您开始:

DECLARE @theSql varchar(1000)
DECLARE @installId int
SET @installId = 1
SET @theSql = 'SELECT COUNT(*) FROM dbo.Installation' + CAST(@installId as nvarchar) + '.Names'
EXEC  (@theSql)
2021-04-15