DECLARE @DBS nvarchar(32)
SET @DBS = 'Current' --'Archive'
SELECT TOP 100 *
FROM [@DBS].[dbo].[table]
我有2个结构相同的数据库,它们位于同一台服务器上。一个只保存信息30天,快速报告处理,另一个保存多年的信息。如果我有Current.dbo.table或Archive.dbo.table,则任一查询都可以正常执行,但我想设置一个参数,以便我们可以在同一报表中切换当前和存档,这样用户就可以从存档数据库,无需具有管理员权限即可切换数据源连接字符串。这可能吗?我确定语法错误是因为连接字符串不是nvarchar,但我无法找出编写此查询的正确方法。
答案 0 :(得分:0)
对于SQL Server,您需要动态SQL。
DECLARE @DBS nvarchar(32)
SET @DBS = 'Current' --'Archive'
DECLARE @SQL VARCHAR(MAX)
SET @SQL = '
SELECT TOP 100 *
FROM ' + @DBS + '.[dbo].[table]'
EXEC(@SQL)
答案 1 :(得分:0)
你可以试试这个。 根据您的参数值,个人选择返回所有行或不返回任何行。
SELECT TOP 100 *
FROM [DBS].[dbo].[table] -- Your active table schema
where @yourParamenter= 0
union
SELECT TOP 100 *
FROM [archiveDBS].[dbo].[table] -- Your archive table schema
where @yourParamenter= 1