我有一个包含多个数据库的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
阅读有关如何创建动态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)