有没有办法运行proc,并带有此查询的结果集?
SELECT
'USE [' + d.name + N']' + CHAR(13) + CHAR(10) +
'ALTER DATABASE [' + d.name + N'] SET RECOVERY SIMPLE ' +
+ 'DBCC SHRINKFILE (N''' + mf.name + N''' , 0, TRUNCATEONLY)'
+ CHAR(13) + CHAR(10) + CHAR(13) + CHAR(10)
+ 'ALTER DATABASE [' + d.name + N'] SET RECOVERY full'
FROM
sys.master_files mf
JOIN sys.databases d
ON mf.database_id = d.database_id
WHERE d.database_id > 4;
此查询将列出如下内容:
USE [SEDI_4649] ALTER DATABASE [SEDI_4649] SET RECOVERY SIMPLE SHRINKFILE(N'SEDI_SQL_log',0,TRUNCATEONLY)ALTER DATABASE [SEDI_4649] SET RECOVERY full < / p>
USE [SEDI_4650] ALTER DATABASE [SEDI_4650] SET RECOVERY SIMPLE SHRINKFILE(N'SEDI_SQL_dat',0,TRUNCATEONLY)ALTER DATABASE [SEDI_4650] SET RECOVERY full < / p>
我需要做的就是复制结果,然后在查询窗口中运行。
Greate,我现在所有dbs都收缩并记录。
但是......有没有办法通过工作来运行它?
我一直在尝试创建一个将结果保存在.txt文件中的proc,并且作业执行此.txt但没有成功。
感谢您的帮助。
SQL 2008
答案 0 :(得分:0)
新工作 - &gt;步骤 - &gt;新 - &gt;粘贴您的查询...并安排
更改您的查询以使用动态sql
然后使用作业
declare @sql varchar(max)
SELECT
set @sql = 'USE [' + d.name + N']' + CHAR(13) + CHAR(10) +
'ALTER DATABASE [' + d.name + N'] SET RECOVERY SIMPLE ' +
+ 'DBCC SHRINKFILE (N''' + mf.name + N''' , 0, TRUNCATEONLY)'
+ CHAR(13) + CHAR(10) + CHAR(13) + CHAR(10)
+ 'ALTER DATABASE [' + d.name + N'] SET RECOVERY full'
exec (@sql)
FROM
sys.master_files mf
JOIN sys.databases d
ON mf.database_id = d.database_id
WHERE d.database_id > 4;