Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将连接字符串声明为参数的T-SQL_Sql Server_Reporting Services - Fatal编程技术网

Sql server 将连接字符串声明为参数的T-SQL

Sql server 将连接字符串声明为参数的T-SQL,sql-server,reporting-services,Sql Server,Reporting Services,我有两个结构相同的数据库,它们位于同一台服务器上。一个只保存30天的信息,用于快速报告处理,另一个保存数年的信息。如果我有Current.dbo.table或Archive.dbo.table,则这两个查询都可以正常执行,但我想设置一个参数,以便我们可以在同一个报表中在Current和Archive之间切换,这样用户就可以从存档数据库中提取数据,而不必具有管理员访问权限来切换数据源连接字符串。这可能吗?我确信语法错误是因为连接字符串不是nvarchar,但我无法找到编写此查询的正确方法。对于SQ

我有两个结构相同的数据库,它们位于同一台服务器上。一个只保存30天的信息,用于快速报告处理,另一个保存数年的信息。如果我有Current.dbo.table或Archive.dbo.table,则这两个查询都可以正常执行,但我想设置一个参数,以便我们可以在同一个报表中在Current和Archive之间切换,这样用户就可以从存档数据库中提取数据,而不必具有管理员访问权限来切换数据源连接字符串。这可能吗?我确信语法错误是因为连接字符串不是nvarchar,但我无法找到编写此查询的正确方法。

对于SQL Server,您将需要动态SQL

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?