Tsql 将sql代理作业结果导出到.csv文件
作为性能优化,我对数据库进行了索引重建 我在@TABLE REBUILD上使用了ALTERTABLE ALL(FILLFACTOR=@FILLFACTOR) 我想把这个安排成一个代理工作 现在我的要求是:Tsql 将sql代理作业结果导出到.csv文件,tsql,sql-server-2008,ssis,Tsql,Sql Server 2008,Ssis,作为性能优化,我对数据库进行了索引重建 我在@TABLE REBUILD上使用了ALTERTABLE ALL(FILLFACTOR=@FILLFACTOR) 我想把这个安排成一个代理工作 现在我的要求是: 在重建索引之前,我需要将索引统计数据导出到csv文件 重建索引 重建索引后,索引导出到csv文件的统计信息 我在代理作业中使用了重建索引脚本,并手动执行了索引统计查询,以查看代理作业前后的状态 我需要如何自动执行 重建前索引统计数据 重建 重新编译后的统计数据 我使用这个脚本进行统计 DECL
DECLARE@DATABASE VARCHAR(10)='AdventureWorksDW2008'
选择对象名称(IPS.OBJECT\u ID)作为[表名],
SI.NAME作为[索引名称],
IPS.INDEX\u TYPE\u DESC,
IPS.AVG_碎片(单位:百分比),
IPS.AVG_片段_大小_(单位:页),
IPS.AVG\u页面空间使用百分比,
IPS.RECORD_计数,
IPS.GHOST\u记录\u计数,
IPS.U计数,
IPS.AVG_碎片_大小_英寸页面
从SYS.DM_DB_INDEX_PHYSICAL_STATS(DB_ID(N'+@DATABASE++''),NULL、NULL、NULL、“DETAILED”)ip
将SYS.ST表与IPS.OBJECT\u ID=ST.OBJECT\u ID上的(NOLOCK)连接
在IPS.OBJECT\u ID=SI.OBJECT\u ID和IPS.INDEX\u ID=SI.INDEX\u ID上使用(NOLOCK)连接SYS.INDEX SI
其中ST.IS_m_装运=0
按1,5订购
以及重建
ALTER TABLE ALL ON @table REBUILD WITH (FILLFACTOR = @fillfactor).
谢谢
prav嗯,如果您将脚本sql放入一个名为sp_IndexStats的过程中,那么您可以编写第二个过程,该过程类似于:
EXEC master..xp_cmdshell 'osql.exe -S YourServerName -U sa -P yourpassword -Q "EXEC sp_IndexStats" -o "C:\mypath\IndexBefore.csv"'
GO
ALTER TABLE ALL ON @table REBUILD WITH (FILLFACTOR = @fillfactor)
GO
EXEC master..xp_cmdshell 'osql.exe -S YourServerName -U sa -P yourpassword -Q "EXEC sp_IndexStats" -o "C:\mypath\IndexAfter.csv"'
谢谢你,我用另一种方式创建了一个SSIS包,它解决了这个问题,但是你的解决方案比我实现的要简单得多,但是这种方法没有性能问题,但是你的方法启发了我。谢谢