Use [数据库名称] Go DECLARE @DBCCString NVARCHAR(1000) DECLARE @TableName VARCHAR(100) DECLARE Cur_Index CURSOR FOR SELECT Name AS TblName FROM sysobjects WHERE xType='U' ORDER BY TblName FOR READ ONLY OPEN Cur_Index FETCH NEXT FROM Cur_Index INTO @TableName WHILE @@FETCH_STATUS=0 BEGIN SET @DBCCString = 'DBCC DBREINDEX(@TblName,'''')WITH NO_INFOMSGS' EXEC SP_EXECUTESQL @DBCCString,N'@TblName VARCHAR(100)', @TableName PRINT '重建表' + @TableName +'的索引........OK!' FETCH NEXT FROM Cur_Index INTO @TableName END CLOSE Cur_Index DEALLOCATE Cur_Index PRINT '操作完成!' go
BEGIN TRY ALTER INDEX ALL ON tb REBUILD; SELECT '成功' END TRY BEGIN CATCH SELECT ERROR_NUMBER() AS ErrorNumber ,ERROR_SEVERITY() AS ErrorSeverity ,ERROR_STATE() AS ErrorState ,ERROR_PROCEDURE() AS ErrorProcedure ,ERROR_LINE() AS ErrorLine ,ERROR_MESSAGE() AS ErrorMessage;END CATCH
IF OBJECT_ID('pp') IS NOT NULL DROP PROC pp GO CREATE PROC pp @name VARCHAR(128)--table name AS BEGIN BEGIN TRY EXEC('ALTER INDEX ALL ON '+@name+' REBUILD') RETURN 1 END TRY BEGIN CATCH RETURN 0 END CATCH END --调用 DECLARE @i INT EXEC @i=pp 'tb' SELECT @i
Go
DECLARE @DBCCString NVARCHAR(1000)
DECLARE @TableName VARCHAR(100)
DECLARE Cur_Index CURSOR
FOR
SELECT Name AS TblName
FROM sysobjects
WHERE xType='U'
ORDER BY TblName
FOR READ ONLY
OPEN Cur_Index
FETCH NEXT FROM Cur_Index
INTO @TableName
WHILE @@FETCH_STATUS=0
BEGIN
SET @DBCCString = 'DBCC DBREINDEX(@TblName,'''')WITH NO_INFOMSGS'
EXEC SP_EXECUTESQL @DBCCString,N'@TblName VARCHAR(100)', @TableName
PRINT '重建表' + @TableName +'的索引........OK!'
FETCH NEXT FROM Cur_Index INTO @TableName
END
CLOSE Cur_Index
DEALLOCATE Cur_Index
PRINT '操作完成!'
go
ALTER INDEX ALL ON tb REBUILD;
SELECT '成功'
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;END CATCH
IF OBJECT_ID('pp') IS NOT NULL DROP PROC pp
GO
CREATE PROC pp
@name VARCHAR(128)--table name
AS
BEGIN
BEGIN TRY
EXEC('ALTER INDEX ALL ON '+@name+' REBUILD')
RETURN 1
END TRY
BEGIN CATCH
RETURN 0
END CATCH
END --调用
DECLARE @i INT
EXEC @i=pp 'tb'
SELECT @i