Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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 在VisualStudio中使用报表服务器项目向导(SSDT)对每个数据库运行查询_Sql Server - Fatal编程技术网

Sql server 在VisualStudio中使用报表服务器项目向导(SSDT)对每个数据库运行查询

Sql server 在VisualStudio中使用报表服务器项目向导(SSDT)对每个数据库运行查询,sql-server,Sql Server,我需要在Visual Studio中的报表服务器项目向导(SSDT)中运行下面的查询,以将给定的数据导出到Excel/PDF。此查询将对实例中的所有数据库重复执行,但是,在使用报表服务器项目向导时,它仅运行1 DB。通过SSMS运行时,它正在成功运行并为所有数据库提供数据。在使用报表服务器项目向导时,可以使用什么来代替sp_MSforeachdb,因为报表服务器项目向导中没有查询所有数据库的选项 use master DECLARE @command varchar(1000) SELECT

我需要在Visual Studio中的报表服务器项目向导(SSDT)中运行下面的查询,以将给定的数据导出到Excel/PDF。此查询将对实例中的所有数据库重复执行,但是,在使用报表服务器项目向导时,它仅运行1 DB。通过SSMS运行时,它正在成功运行并为所有数据库提供数据。在使用报表服务器项目向导时,可以使用什么来代替sp_MSforeachdb,因为报表服务器项目向导中没有查询所有数据库的选项

use master
DECLARE @command varchar(1000) 
SELECT @command = 'use ? 
if DB_ID("?")>4 
select DB_NAME() as ''Database_Name'',name as ''DB_user'',type_desc,default_schema_name,create_date 
from sys.database_principals 
where type!=''C'' and type!=''R''' 
EXEC sp_MSforeachdb @command

每次调用
sp_MSforeachdb
的结果都需要保存到临时表中。在此之后,执行最后一次
选择
返回所有数据库的结果,如下例所示,使用本地临时表。虽然表中的行的顺序很可能会从插入中保留下来,但如果没有显式的
orderby
,则无法保证这一点。假设您要显示按数据库排序的结果,可以按如下方式执行

DECLARE @command varchar(1000) 

SELECT @command = 'use ? 
if DB_ID("?")>4 
select DB_NAME() as ''Database_Name'',name as ''DB_user'',type_desc,default_schema_name,create_date 
from sys.database_principals 
where type!=''C'' and type!=''R''' 

IF (OBJECT_ID(N'TEMPDB.DBO.#TEMP') IS NOT NULL)
BEGIN
DROP TABLE #TEMP
END

CREATE TABLE #TEMP 
(
DatabaseName VARCHAR(50), 
DB_User VARCHAR(50),
TypeDesc VARCHAR(25),
DefaultSchemaName VARCHAR(50),
CreateDate DATETIME
)

INSERT INTO #TEMP
EXEC sp_MSforeachdb @command

SELECT 
    DatabaseName
    DB_User,
    TypeDesc,
    DefaultSchemaName,
    CreateDate
FROM #TEMP
ORDER BY DatabaseName

每次调用
sp_MSforeachdb
的结果都需要保存到临时表中。在此之后,执行最后一次
选择
返回所有数据库的结果,如下例所示,使用本地临时表。虽然表中的行的顺序很可能会从插入中保留下来,但如果没有显式的
orderby
,则无法保证这一点。假设您要显示按数据库排序的结果,可以按如下方式执行

DECLARE @command varchar(1000) 

SELECT @command = 'use ? 
if DB_ID("?")>4 
select DB_NAME() as ''Database_Name'',name as ''DB_user'',type_desc,default_schema_name,create_date 
from sys.database_principals 
where type!=''C'' and type!=''R''' 

IF (OBJECT_ID(N'TEMPDB.DBO.#TEMP') IS NOT NULL)
BEGIN
DROP TABLE #TEMP
END

CREATE TABLE #TEMP 
(
DatabaseName VARCHAR(50), 
DB_User VARCHAR(50),
TypeDesc VARCHAR(25),
DefaultSchemaName VARCHAR(50),
CreateDate DATETIME
)

INSERT INTO #TEMP
EXEC sp_MSforeachdb @command

SELECT 
    DatabaseName
    DB_User,
    TypeDesc,
    DefaultSchemaName,
    CreateDate
FROM #TEMP
ORDER BY DatabaseName

创建一个临时表/变量,并将每个表/变量的结果插入其中。然后从该表中选择以返回单个resultset中所有数据库的结果。创建一个临时表/变量,并将每个数据库的结果插入其中。然后从该表中选择以返回单个resultset中所有数据库的结果。