123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406 |
- USE [master];
- GO
- IF (DB_ID(N'PowerConsumption') IS NOT NULL)
- BEGIN
- ALTER DATABASE [PowerConsumption]
- SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
- DROP DATABASE [PowerConsumption];
- END
- GO
- PRINT N'Creating PowerConsumption...'
- GO
- CREATE DATABASE [PowerConsumption]
- CONTAINMENT = NONE
- ON PRIMARY
- ( NAME = N'PowerConsumption', FILENAME = N'/var/opt/mssql/data/PowerConsumption.mdf' , SIZE = 204800KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB )
- LOG ON
- ( NAME = N'PowerConsumption_log', FILENAME = N'/var/opt/mssql/data/PowerConsumption_log.ldf' , SIZE = 80MB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB )
- GO
- IF EXISTS (SELECT 1
- FROM [master].[dbo].[sysdatabases]
- WHERE [name] = N'PowerConsumption')
- BEGIN
- ALTER DATABASE [PowerConsumption]
- SET ANSI_NULLS OFF,
- ANSI_PADDING OFF,
- ANSI_WARNINGS OFF,
- ARITHABORT OFF,
- CONCAT_NULL_YIELDS_NULL OFF,
- NUMERIC_ROUNDABORT OFF,
- QUOTED_IDENTIFIER OFF,
- ANSI_NULL_DEFAULT OFF,
- CURSOR_DEFAULT GLOBAL,
- RECOVERY FULL,
- CURSOR_CLOSE_ON_COMMIT OFF,
- AUTO_CREATE_STATISTICS ON,
- AUTO_SHRINK OFF,
- AUTO_UPDATE_STATISTICS ON,
- RECURSIVE_TRIGGERS OFF
- WITH ROLLBACK IMMEDIATE;
- ALTER DATABASE [PowerConsumption]
- SET AUTO_CLOSE OFF
- WITH ROLLBACK IMMEDIATE;
- END
- GO
- IF EXISTS (SELECT 1
- FROM [master].[dbo].[sysdatabases]
- WHERE [name] = N'PowerConsumption')
- BEGIN
- ALTER DATABASE [PowerConsumption]
- SET ALLOW_SNAPSHOT_ISOLATION ON;
- END
- GO
- IF EXISTS (SELECT 1
- FROM [master].[dbo].[sysdatabases]
- WHERE [name] = N'PowerConsumption')
- BEGIN
- ALTER DATABASE [PowerConsumption]
- SET READ_COMMITTED_SNAPSHOT OFF
- WITH ROLLBACK IMMEDIATE;
- END
- GO
- IF EXISTS (SELECT 1
- FROM [master].[dbo].[sysdatabases]
- WHERE [name] = N'PowerConsumption')
- BEGIN
- ALTER DATABASE [PowerConsumption]
- SET AUTO_UPDATE_STATISTICS_ASYNC OFF,
- PAGE_VERIFY CHECKSUM,
- DATE_CORRELATION_OPTIMIZATION OFF,
- DISABLE_BROKER,
- PARAMETERIZATION SIMPLE,
- SUPPLEMENTAL_LOGGING OFF
- WITH ROLLBACK IMMEDIATE;
- END
- GO
- IF IS_SRVROLEMEMBER(N'sysadmin') = 1
- BEGIN
- IF EXISTS (SELECT 1
- FROM [master].[dbo].[sysdatabases]
- WHERE [name] = N'PowerConsumption')
- BEGIN
- EXECUTE sp_executesql N'ALTER DATABASE [PowerConsumption]
- SET TRUSTWORTHY OFF,
- DB_CHAINING OFF
- WITH ROLLBACK IMMEDIATE';
- END
- END
- ELSE
- BEGIN
- PRINT N'The database settings cannot be modified. You must be a SysAdmin to apply these settings.';
- END
- GO
- IF IS_SRVROLEMEMBER(N'sysadmin') = 1
- BEGIN
- IF EXISTS (SELECT 1
- FROM [master].[dbo].[sysdatabases]
- WHERE [name] = N'PowerConsumption')
- BEGIN
- EXECUTE sp_executesql N'ALTER DATABASE [PowerConsumption]
- SET HONOR_BROKER_PRIORITY OFF
- WITH ROLLBACK IMMEDIATE';
- END
- END
- ELSE
- BEGIN
- PRINT N'The database settings cannot be modified. You must be a SysAdmin to apply these settings.';
- END
- GO
- ALTER DATABASE [PowerConsumption]
- SET TARGET_RECOVERY_TIME = 60 SECONDS
- WITH ROLLBACK IMMEDIATE;
- GO
- IF EXISTS (SELECT 1
- FROM [master].[dbo].[sysdatabases]
- WHERE [name] = N'PowerConsumption')
- BEGIN
- ALTER DATABASE [PowerConsumption]
- SET AUTO_CREATE_STATISTICS ON(INCREMENTAL = OFF),
- MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = OFF,
- DELAYED_DURABILITY = DISABLED
- WITH ROLLBACK IMMEDIATE;
- END
- GO
- IF EXISTS (SELECT 1
- FROM [master].[dbo].[sysdatabases]
- WHERE [name] = N'PowerConsumption')
- BEGIN
- ALTER DATABASE [PowerConsumption]
- SET QUERY_STORE (QUERY_CAPTURE_MODE = ALL, FLUSH_INTERVAL_SECONDS = 900, INTERVAL_LENGTH_MINUTES = 60, MAX_PLANS_PER_QUERY = 200, CLEANUP_POLICY = (STALE_QUERY_THRESHOLD_DAYS = 367), MAX_STORAGE_SIZE_MB = 100)
- WITH ROLLBACK IMMEDIATE;
- END
- GO
- IF EXISTS (SELECT 1
- FROM [master].[dbo].[sysdatabases]
- WHERE [name] = N'PowerConsumption')
- BEGIN
- ALTER DATABASE [PowerConsumption]
- SET QUERY_STORE = OFF
- WITH ROLLBACK IMMEDIATE;
- END
- GO
- IF EXISTS (SELECT 1
- FROM [master].[dbo].[sysdatabases]
- WHERE [name] = N'PowerConsumption')
- BEGIN
- ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 0;
- ALTER DATABASE SCOPED CONFIGURATION FOR SECONDARY SET MAXDOP = PRIMARY;
- ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION = OFF;
- ALTER DATABASE SCOPED CONFIGURATION FOR SECONDARY SET LEGACY_CARDINALITY_ESTIMATION = PRIMARY;
- ALTER DATABASE SCOPED CONFIGURATION SET PARAMETER_SNIFFING = ON;
- ALTER DATABASE SCOPED CONFIGURATION FOR SECONDARY SET PARAMETER_SNIFFING = PRIMARY;
- ALTER DATABASE SCOPED CONFIGURATION SET QUERY_OPTIMIZER_HOTFIXES = OFF;
- ALTER DATABASE SCOPED CONFIGURATION FOR SECONDARY SET QUERY_OPTIMIZER_HOTFIXES = PRIMARY;
- END
- GO
- USE [PowerConsumption];
- GO
- IF fulltextserviceproperty(N'IsFulltextInstalled') = 1
- EXECUTE sp_fulltext_database 'enable';
- GO
- PRINT N'Creating [dbo].[udtMeterMeasurement]...';
- GO
- CREATE TYPE [dbo].[udtMeterMeasurement] AS TABLE (
- [RowID] INT NOT NULL,
- [MeterID] INT NOT NULL,
- [MeasurementInkWh] DECIMAL (9, 4) NOT NULL,
- [PostalCode] NVARCHAR (10) NOT NULL,
- [MeasurementDate] DATETIME2 (7) NOT NULL,
- INDEX [IX_RowID] NONCLUSTERED ([RowID])
- )
- GO
- PRINT N'Creating [dbo].[MeterMeasurementHistory]...';
- GO
- CREATE TABLE [dbo].[MeterMeasurementHistory] (
- [MeterID] INT NOT NULL,
- [MeasurementInkWh] DECIMAL (9, 4) NOT NULL,
- [PostalCode] NVARCHAR (10) NOT NULL,
- [MeasurementDate] DATETIME2 (7) NOT NULL,
- [SysStartTime] DATETIME2 (7) NOT NULL,
- [SysEndTime] DATETIME2 (7) NOT NULL
- );
- GO
- PRINT N'Creating [dbo].[MeterMeasurementHistory].[ix_MeterMeasurementHistory]...';
- GO
- CREATE CLUSTERED INDEX [ix_MeterMeasurementHistory]
- ON [dbo].[MeterMeasurementHistory]([MeterID]);
- CREATE CLUSTERED COLUMNSTORE INDEX [ix_MeterMeasurementHistory]
- ON [dbo].[MeterMeasurementHistory] WITH (DROP_EXISTING = ON);
- GO
- PRINT N'Creating [dbo].[MeterMeasurement]...';
- GO
- CREATE TABLE [dbo].[MeterMeasurement] (
- [MeterID] INT NOT NULL,
- [MeasurementInkWh] DECIMAL (9, 4) NOT NULL,
- [PostalCode] NVARCHAR (10) NOT NULL,
- [MeasurementDate] DATETIME2 (7) NOT NULL,
- [SysStartTime] DATETIME2 (7) GENERATED ALWAYS AS ROW START NOT NULL,
- [SysEndTime] DATETIME2 (7) GENERATED ALWAYS AS ROW END NOT NULL,
- PRIMARY KEY NONCLUSTERED ([MeterID] ASC),
- PERIOD FOR SYSTEM_TIME ([SysStartTime], [SysEndTime])
- )
- WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE=[dbo].[MeterMeasurementHistory], DATA_CONSISTENCY_CHECK=ON));
- GO
- PRINT N'Creating [dbo].[vwMeterMeasurement]...';
- GO
- CREATE VIEW vwMeterMeasurement
- AS
- SELECT PostalCode,
- DATETIMEFROMPARTS(
- YEAR(MeasurementDate),
- MONTH(MeasurementDate),
- DAY(MeasurementDate),
- DATEPART(HOUR,MeasurementDate),
- DATEPART(MINUTE,MeasurementDate),
- DATEPART(ss,MeasurementDate)/1,
- 0
- ) AS MeasurementDate,
- count(*) AS MeterCount,
- AVG(MeasurementInkWh) AS AvgMeasurementInkWh
- FROM [dbo].[MeterMeasurement] FOR SYSTEM_TIME ALL WITH (NOLOCK)
- GROUP BY
- PostalCode,
- DATETIMEFROMPARTS(
- YEAR(MeasurementDate),
- MONTH(MeasurementDate),
- DAY(MeasurementDate),
- DATEPART(HOUR,MeasurementDate),
- DATEPART(MINUTE,MeasurementDate),
- DATEPART(ss,MeasurementDate)/1,0)
- GO
- PRINT N'Creating [dbo].[InsertMeterMeasurement]...';
- GO
- CREATE PROCEDURE [dbo].[InsertMeterMeasurement]
- @Batch AS dbo.udtMeterMeasurement READONLY,
- @BatchSize INT
- AS
- BEGIN
- SET TRANSACTION ISOLATION LEVEL SNAPSHOT
- DECLARE @i INT = 1
- DECLARE @MeterID INT
- DECLARE @MeasurementInkWh DECIMAL(9, 4)
- DECLARE @PostalCode NVARCHAR(10)
- DECLARE @MeasurementDate DATETIME2(7)
-
- WHILE (@i <= @BatchSize)
- BEGIN
-
- SELECT @MeterID = MeterID,
- @MeasurementInkWh = MeasurementInkWh,
- @MeasurementDate = MeasurementDate,
- @PostalCode = PostalCode
- FROM @Batch
- WHERE RowID = @i
-
- UPDATE dbo.MeterMeasurement
- SET MeasurementInkWh += @MeasurementInkWh,
- MeasurementDate = @MeasurementDate,
- PostalCode = @PostalCode
- WHERE MeterID = @MeterID
-
- IF(@@ROWCOUNT = 0)
- BEGIN
- INSERT INTO dbo.MeterMeasurement (MeterID, MeasurementInkWh, PostalCode, MeasurementDate)
- VALUES (@MeterID, @MeasurementInkWh, @PostalCode, @MeasurementDate);
- END
- SET @i += 1
- END
- END
- GO
- DECLARE @VarDecimalSupported AS BIT;
- SELECT @VarDecimalSupported = 0;
- IF ((ServerProperty(N'EngineEdition') = 3)
- AND (((@@microsoftversion / power(2, 24) = 9)
- AND (@@microsoftversion & 0xffff >= 3024))
- OR ((@@microsoftversion / power(2, 24) = 10)
- AND (@@microsoftversion & 0xffff >= 1600))))
- SELECT @VarDecimalSupported = 1;
- IF (@VarDecimalSupported > 0)
- BEGIN
- EXECUTE sp_db_vardecimal_storage_format N'PowerConsumption', 'ON';
- END
- GO
- PRINT N'Update complete.';
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE TABLE [dbo].[dm_db_log_stats_history](
- [Date] [datetime] NOT NULL,
- [Database] [nvarchar](128) NULL,
- [database_id] [int] NULL,
- [recovery_model] [nvarchar](60) NULL,
- [log_min_lsn] [nvarchar](24) NULL,
- [log_end_lsn] [nvarchar](24) NULL,
- [current_vlf_sequence_number] [bigint] NULL,
- [current_vlf_size_mb] [float] NULL,
- [total_vlf_count] [bigint] NULL,
- [total_log_size_mb] [float] NULL,
- [active_vlf_count] [bigint] NULL,
- [active_log_size_mb] [float] NULL,
- [log_truncation_holdup_reason] [nvarchar](60) NULL,
- [log_backup_time] [datetime] NULL,
- [log_backup_lsn] [nvarchar](24) NULL,
- [log_since_last_log_backup_mb] [float] NULL,
- [log_checkpoint_lsn] [nvarchar](24) NULL,
- [log_since_last_checkpoint_mb] [float] NULL,
- [log_recovery_lsn] [nvarchar](24) NULL,
- [log_recovery_size_mb] [float] NULL,
- [recovery_vlf_count] [bigint] NULL
- ) ON [PRIMARY]
- GO
- PRINT 'Table dm_db_log_stats_history created for monitoring'
- GO
- ALTER DATABASE PowerConsumption SET RECOVERY FULL
- GO
- PRINT N'Set Database Recovery model to full';
- BACKUP DATABASE PowerConsumption TO disk = '/var/opt/mssql/data/powerconsumption.bak' WITH FORMAT,COMPRESSION
- BACKUP LOG PowerConsumption TO disk = '/var/opt/mssql/data/powerconsumption.bak' WITH COMPRESSION
- PRINT N'Full database completed';
- GO
- --deletes backupfile info
- truncate table msdb.dbo.backupfile
- --deletes backupfilegroup info
- truncate table msdb.dbo.backupfilegroup
- --deletes restorefile info
- truncate table msdb.dbo.restorefile
- --deletes restorefilegroup info
- truncate table msdb.dbo.restorefilegroup
- --deletes restorehistory info
- delete from msdb.dbo.restorehistory
- --delete backupset info
- delete from msdb.dbo.backupset
- --deletes backupmedia info
- delete from msdb.dbo.backupmediafamily
- --deletes backupmediaset info
- delete from msdb.dbo.backupmediaset
- Print 'Backup Information deleted'
|