Sql server 将连接字符串声明为参数的T-SQL
我有两个结构相同的数据库,它们位于同一台服务器上。一个只保存30天的信息,用于快速报告处理,另一个保存数年的信息。如果我有Current.dbo.table或Archive.dbo.table,则这两个查询都可以正常执行,但我想设置一个参数,以便我们可以在同一个报表中在Current和Archive之间切换,这样用户就可以从存档数据库中提取数据,而不必具有管理员访问权限来切换数据源连接字符串。这可能吗?我确信语法错误是因为连接字符串不是nvarchar,但我无法找到编写此查询的正确方法。对于SQL Server,您将需要动态SQLSql server 将连接字符串声明为参数的T-SQL,sql-server,reporting-services,Sql Server,Reporting Services,我有两个结构相同的数据库,它们位于同一台服务器上。一个只保存30天的信息,用于快速报告处理,另一个保存数年的信息。如果我有Current.dbo.table或Archive.dbo.table,则这两个查询都可以正常执行,但我想设置一个参数,以便我们可以在同一个报表中在Current和Archive之间切换,这样用户就可以从存档数据库中提取数据,而不必具有管理员访问权限来切换数据源连接字符串。这可能吗?我确信语法错误是因为连接字符串不是nvarchar,但我无法找到编写此查询的正确方法。对于SQ
DECLARE @DBS nvarchar(32)
SET @DBS = 'Current' --'Archive'
SELECT TOP 100 *
FROM [@DBS].[dbo].[table]
对于SQL Server,您需要动态SQL
DECLARE @DBS nvarchar(32)
SET @DBS = 'Current' --'Archive'
SELECT TOP 100 *
FROM [@DBS].[dbo].[table]
你可以试试这个。
根据您的参数值,个人选择返回所有行或不返回任何内容
DECLARE @DBS nvarchar(32)
SET @DBS = 'Current' --'Archive'
DECLARE @SQL VARCHAR(MAX)
SET @SQL = '
SELECT TOP 100 *
FROM ' + @DBS + '.[dbo].[table]'
EXEC(@SQL)
你可以试试这个。
根据您的参数值,个人选择返回所有行或不返回任何内容
DECLARE @DBS nvarchar(32)
SET @DBS = 'Current' --'Archive'
DECLARE @SQL VARCHAR(MAX)
SET @SQL = '
SELECT TOP 100 *
FROM ' + @DBS + '.[dbo].[table]'
EXEC(@SQL)
SQL Server还是MySQL?SQL Server还是MySQL?