kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dev/uspIntezmenyEnableObjects.sql
2024-03-13 00:33:46 +01:00

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