我正在使用该sys.dm_db_index_physical_stats
视图开发定制的维护解决方案。我目前从存储过程中引用它。现在,当该存储过程在我的一个数据库上运行时,它会执行我想要它做的事情并拉下有关任何数据库的所有记录的列表。当我将它放在不同的数据库上时,它会拉下与该数据库相关的所有记录的列表。
例如(底部的代码):
我希望这个过程专门针对数据库 3 的原因是因为我更愿意将所有维护对象保留在同一个数据库中。我希望这项工作位于维护数据库中,并像在该应用程序数据库中一样工作。
代码:
ALTER PROCEDURE [dbo].[GetFragStats]
@databaseName NVARCHAR(64) = NULL
,@tableName NVARCHAR(64) = NULL
,@indexID INT = NULL
,@partNumber INT = NULL
,@Mode NVARCHAR(64) = 'DETAILED'
AS
BEGIN
SET NOCOUNT ON;
DECLARE @databaseID INT, @tableID INT
IF @databaseName IS NOT NULL
AND @databaseName NOT IN ('tempdb','ReportServerTempDB')
BEGIN
SET @databaseID = DB_ID(@databaseName)
END
IF @tableName IS NOT NULL
BEGIN
SET @tableID = …
Run Code Online (Sandbox Code Playgroud) index sql-server-2008 sql-server stored-procedures maintenance