94 lines
No EOL
3.1 KiB
Transact-SQL
94 lines
No EOL
3.1 KiB
Transact-SQL
DROP PROCEDURE IF EXISTS dev.uspIntezmenyEnableObjects
|
|
GO
|
|
|
|
CREATE PROCEDURE dev.uspIntezmenyEnableObjects
|
|
@pIsIndex bit = 1
|
|
,@pIsConstraint bit = 1
|
|
,@pIsTrigger bit = 1
|
|
AS
|
|
BEGIN
|
|
|
|
DECLARE
|
|
@sql nvarchar(max)
|
|
,@message nvarchar(max)
|
|
,@tableName nvarchar(150)
|
|
,@consraintName nvarchar(250)
|
|
|
|
-- ================================================================== --
|
|
-- INDEX, TRIGGER, CONSTRAINT bekapcsolás --
|
|
-- =======================================================holn======= --
|
|
IF @pIsIndex = 1 BEGIN
|
|
SET @sql = N''
|
|
|
|
SELECT @sql += 'ALTER INDEX ' + i.[name] + ' ON ' + t.[name] + ' REBUILD;' + char(13) + char(10)
|
|
FROM sys.indexes i
|
|
INNER JOIN sys.tables t ON t.object_id = i.object_id
|
|
WHERE i.type = 2 /*non clustered*/
|
|
AND t.name LIKE 'T[_]%'
|
|
AND t.schema_id = 1
|
|
|
|
SET @message = 'INDEX REBUILD... - ' + FORMAT(GETDATE(), 'HH:mm:ss.ff')
|
|
RAISERROR (@message, 10, 1) WITH NOWAIT
|
|
EXEC sp_executesql @sql
|
|
SET @message = 'INDEX REBUILD DONE - ' + FORMAT(GETDATE(), 'HH:mm:ss.ff')
|
|
RAISERROR (@message, 10, 1) WITH NOWAIT
|
|
END
|
|
|
|
IF @pIsConstraint = 1 BEGIN
|
|
DECLARE tbl_cur CURSOR LOCAL FOR
|
|
SELECT OBJECT_NAME(parent_object_id) AS table_name, name
|
|
FROM sys.check_constraints
|
|
WHERE OBJECT_NAME(parent_object_id) LIKE 'T[_]%'
|
|
AND OBJECT_NAME(parent_object_id) NOT IN(N'T_ENTITYHISTORY', N'T_ENTITYATTRIBUTEHISTORY', 'T_ENTITYATTRIBUTEHISTORY_ARCHIVE')
|
|
UNION ALL
|
|
SELECT OBJECT_NAME(parent_object_id) AS table_name, name
|
|
FROM sys.foreign_keys
|
|
WHERE OBJECT_NAME(parent_object_id) LIKE 'T[_]%'
|
|
AND OBJECT_NAME(parent_object_id) NOT IN(N'T_ENTITYHISTORY', N'T_ENTITYATTRIBUTEHISTORY', 'T_ENTITYATTRIBUTEHISTORY_ARCHIVE')
|
|
ORDER BY table_name
|
|
|
|
OPEN tbl_cur
|
|
FETCH NEXT FROM tbl_cur INTO @tableName, @consraintName
|
|
|
|
SET @message = 'CONSTRAINT ON... - ' + FORMAT(GETDATE(), 'HH:mm:ss.ff')
|
|
RAISERROR (@message, 10, 1) WITH NOWAIT
|
|
|
|
WHILE @@FETCH_STATUS = 0 BEGIN
|
|
SET @sql = N'ALTER TABLE ' + @tableName + N' WITH CHECK CHECK CONSTRAINT ' + @consraintName + ';'
|
|
BEGIN TRY
|
|
EXEC sp_executesql @sql
|
|
END TRY
|
|
BEGIN CATCH
|
|
DECLARE @errorMessage nvarchar(4000)
|
|
DECLARE @errorSeverity int
|
|
DECLARE @errorState int
|
|
|
|
SELECT
|
|
@errorMessage = ERROR_MESSAGE()
|
|
,@errorSeverity = ERROR_SEVERITY()
|
|
,@errorState = ERROR_STATE()
|
|
|
|
RAISERROR (@errorMessage, @errorSeverity, @errorState);
|
|
RAISERROR (@sql, 10, 1) WITH NOWAIT
|
|
END CATCH
|
|
|
|
FETCH NEXT FROM tbl_cur
|
|
INTO @tableName, @consraintName
|
|
END
|
|
|
|
SET @message = 'CONSTRAINT ON DONE - ' + FORMAT(GETDATE(), 'HH:mm:ss.ff')
|
|
RAISERROR (@message, 10, 1) WITH NOWAIT
|
|
|
|
CLOSE tbl_cur
|
|
DEALLOCATE tbl_cur
|
|
END
|
|
|
|
IF @pIsTrigger = 1 BEGIN
|
|
SET @message = 'TRIGGER ENABLE... - ' + FORMAT(GETDATE(), 'HH:mm:ss.ff')
|
|
RAISERROR (@message, 10, 1) WITH NOWAIT
|
|
EXEC sp_msforeachtable 'ENABLE TRIGGER ALL ON ?'
|
|
SET @message = 'TRIGGER ENABLE DONE - ' + FORMAT(GETDATE(), 'HH:mm:ss.ff')
|
|
RAISERROR (@message, 10, 1) WITH NOWAIT
|
|
END
|
|
END
|
|
GO |