DECLARE @DBS nvarchar(32)
SET @DBS = 'Current' --'Archive'
SELECT TOP 100 *
FROM [@DBS].[dbo].[table]
我有两个结构相同的数据库位于同一服务器上。一种仅保存信息 30 天,以便快速处理报告,另一种则保存长达数年的信息。如果我有 Current.dbo.table 或 Archive.dbo.table,则任一查询都可以正常执行,但我想设置一个参数,以便我们可以在同一报告中在 Current 和 Archive 之间切换,以便用户可以从 Archive 中提取数据数据库,而无需具有管理员访问权限来切换数据源连接字符串。这可以吗?我确信语法错误是因为连接字符串不是 nvarchar,但我无法找出编写此查询的正确方法。
对于 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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)