Files
sql-scripts/gaia - archive a pharmacy.sql
Thierry Schork 7cf858256a initial commit
2022-12-30 12:10:12 +01:00

104 lines
2.8 KiB
Transact-SQL

USE [Gaia]
GO
SET NOCOUNT ON;
DECLARE @Pharamcycode char(6),
@Pharmacyalias char(9),
@fqdn varchar(30),
@Backuppath varchar(50),
@DROP bit,
@sqlstmt nvarchar(max),
@SQLpath varchar(30)
/* !!! SET ALL VARIABLES HERE !!! */
SET @Pharmacyalias = 'AMA245APS' /* EX: AMA208APS*/
SET @fqdn = 'ama245aps.amavita.ch' /* EX: ama208aps.amavita.ch */
SET @Pharamcycode = 'AAM245' /* EX: AAM208 */
SET @SQLpath = 'D:\SQLDatabase\' /* PROD = D:\SQLDatabase\ N1 = D:\SQLDatabase\ N2 = F:\SQLDatabase\ */
PRINT 'USE [Gaia]
';
/* DROP CERES ROUTE */
PRINT('DROP ROUTE [//' + @Pharmacyalias + '/APSSQL/Ceres]')
/* find active columnstore indexes */
DECLARE @tCsIdx TABLE(
[schemaName] VARCHAR(50),
[tableName] VARCHAR(100),
[indexName] VARCHAR(100),
[indexType] VARCHAR(50),
[disableCmd] AS 'ALTER INDEX ['+[indexName]+'] ON ['+[schemaName]+'].['+[tableName]+'] DISABLE;'+CHAR(13)+CHAR(10),
[enableCmd] AS 'ALTER INDEX ['+[indexName]+'] ON ['+[schemaName]+'].['+[tableName]+'] REBUILD;'+CHAR(13)+CHAR(10)
);
INSERT INTO @tCsIdx ([schemaName], [tableName], [indexName], [indexType])
SELECT
OBJECT_SCHEMA_NAME([i].[object_id]) AS [SchemaName]
,OBJECT_NAME([i].[object_id]) AS [TableName]
,[i].[name] AS [IndexName]
,[i].[type_desc] AS [IndexType]
FROM [sys].[indexes] AS [i]
WHERE [i].[is_hypothetical] = 0
AND [i].[index_id] <> 0
AND [i].[type_desc] IN ( 'CLUSTERED COLUMNSTORE', 'NONCLUSTERED COLUMNSTORE' )
AND i.[is_disabled] = 0
;
/* disable columnstore indexes */
DECLARE @csIdxCmd VARCHAR(MAX)='';
SELECT @csIdxCmd = @csIdxCmd + [tci].[disableCmd]
FROM @tCsIdx [tci];
PRINT @csIdxCmd;
PRINT ''
/* PURGE OLD DATA */
SELECT 'DELETE FROM [' + s.name + '].[' + t.name + '] WHERE ' + c.name + ' = ''' + @pharamcycode + ''';' as delcmd
INTO #AllPurge
FROM sys.schemas s
JOIN sys.tables t
ON t.schema_id = s.schema_id
JOIN sys.columns c
ON c.object_id = t.object_id
AND c.name LIKE '%_pharmacy_code'
WHERE s.name = 'phar'
ORDER BY t.name
DECLARE c_alldelcmd CURSOR LOCAL FORWARD_ONLY STATIC FOR
SELECT * FROM #AllPurge
OPEN c_alldelcmd
FETCH NEXT FROM c_alldelcmd
INTO @sqlstmt
WHILE @@fetch_status = 0
BEGIN
PRINT(@sqlstmt)
FETCH NEXT FROM c_alldelcmd
INTO @sqlstmt
END
CLOSE c_alldelcmd
DEALLOCATE c_alldelcmd
/* DROP PARTITION */
PRINT'ALTER PARTITION FUNCTION [PF_PharmacyCode] () MERGE RANGE (''' + @pharamcycode + ''');'
PRINT'ALTER DATABASE [Gaia] REMOVE FILE [GAIA_' + @pharamcycode + ']'
PRINT'ALTER DATABASE [Gaia] REMOVE FILEGROUP [FG_GAIA_' + @pharamcycode + ']'
PRINT ''
/* re-enable columnstore indexes */
SET @csIdxCmd = ''
SELECT @csIdxCmd = @csIdxCmd + [tci].[enableCmd]
FROM @tCsIdx [tci];
PRINT @csIdxCmd;
PRINT ''
DROP TABLE #AllPurge
GO