230a670eef
git-svn-id: https://keyhammer.ath.cx/svn/WebGIM/trunk@132 3e04ef4b-3b25-4b6c-be27-bb5389ca777b
57 lines
1.3 KiB
Transact-SQL
57 lines
1.3 KiB
Transact-SQL
USE [master]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[sp_indiciAndShrink] Script Date: 03/11/2009 17:06:47 ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
-- =============================================
|
|
-- Author: Marco Salvi
|
|
-- Create date: 11/03/2009
|
|
-- Description: Stored procedure per ricostruire gli indici e fare lo shrink su un db
|
|
-- =============================================
|
|
CREATE PROCEDURE [dbo].[sp_indiciAndShrink]
|
|
(
|
|
@databaseName sysname
|
|
)
|
|
AS
|
|
BEGIN
|
|
|
|
exec('USE ' + @databaseName)
|
|
|
|
-- elimino eventuale tab temporanea preesistente
|
|
IF (SELECT COUNT(*) FROM TEMPDB..SYSOBJECTS WHERE NAME = '##TMP_nomiTabelle') > 0
|
|
BEGIN
|
|
DROP TABLE ##TMP_nomiTabelle
|
|
END
|
|
|
|
-- enumero le tab del db in una tab temporanea
|
|
SELECT IDENT = IDENTITY (INT,1,1), name
|
|
INTO ##TMP_nomiTabelle
|
|
FROM sys.Tables
|
|
|
|
-- eseguo reindicizzazione
|
|
DECLARE @VAR1 INT
|
|
SET @VAR1 = 1
|
|
WHILE @VAR1 < = ( SELECT COUNT(*) FROM ##TMP_nomiTabelle)
|
|
BEGIN
|
|
|
|
DECLARE @OBJECTNAME VARCHAR(256)
|
|
|
|
-- carico il nome della tab i-esima
|
|
SELECT @OBJECTNAME = name
|
|
FROM ##TMP_nomiTabelle
|
|
WHERE [IDENT] = @VAR1
|
|
|
|
-- rebuild indice
|
|
DBCC DBREINDEX(@OBJECTNAME)
|
|
|
|
-- incremento
|
|
SET @VAR1 = @VAR1 + 1
|
|
|
|
END
|
|
|
|
--shrink del db
|
|
DBCC SHRINKDATABASE (@databaseName)
|
|
|
|
END |