Simplify DB to six tables and load credentials via Always Encrypted SonicCredential.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-29 08:23:55 +02:00
co-authored by Cursor
parent 4d19873776
commit dcfcb5289d
15 changed files with 1356 additions and 461 deletions
@@ -0,0 +1,606 @@
/*
DATABASE: [EsbZertifikatManager]
OBJECTNAME: Schema
ACTION: CREATE
IDX: 002
DATE: 2026-07-29
USER: CUR
COMMENT: 6 Kern-Tabellen + Always Encrypted (CMK/CEK).
Vorher 00_DropExisting + 01_CreateDatabase ausfuehren.
CMK-KEY_PATH = CurrentUser/My/<Thumbprint aus appsettings>.
CEK-ENCRYPTED_VALUE ist an dieses Zertifikat gebunden.
Bei neuem Cert: CEK in SSMS neu erzeugen und ENCRYPTED_VALUE ersetzen.
Connection String muss Column Encryption Setting=Enabled enthalten.
*/
USE [EsbZertifikatManager];
GO
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
/* -------------------------------------------------------------------------- */
/* Reste bereinigen: Kind-Tabellen -> AE-Tabellen -> CEK -> CMK */
/* -------------------------------------------------------------------------- */
IF OBJECT_ID(N'[dbo].[CertificateBackup]', N'U') IS NOT NULL
BEGIN
DROP TABLE [dbo].[CertificateBackup];
END;
GO
IF OBJECT_ID(N'[dbo].[DeploymentRunStep]', N'U') IS NOT NULL
BEGIN
DROP TABLE [dbo].[DeploymentRunStep];
END;
GO
IF OBJECT_ID(N'[dbo].[DeploymentRunContainer]', N'U') IS NOT NULL
BEGIN
DROP TABLE [dbo].[DeploymentRunContainer];
END;
GO
IF OBJECT_ID(N'[dbo].[DeploymentRun]', N'U') IS NOT NULL
BEGIN
DROP TABLE [dbo].[DeploymentRun];
END;
GO
IF OBJECT_ID(N'[dbo].[DeploymentAction]', N'U') IS NOT NULL
BEGIN
DROP TABLE [dbo].[DeploymentAction];
END;
GO
IF OBJECT_ID(N'[dbo].[TlsEndpoint]', N'U') IS NOT NULL
BEGIN
DROP TABLE [dbo].[TlsEndpoint];
END;
GO
IF OBJECT_ID(N'[dbo].[CertificateTarget]', N'U') IS NOT NULL
BEGIN
DROP TABLE [dbo].[CertificateTarget];
END;
GO
IF OBJECT_ID(N'[dbo].[CertificateArtifact]', N'U') IS NOT NULL
BEGIN
DROP TABLE [dbo].[CertificateArtifact];
END;
GO
IF OBJECT_ID(N'[dbo].[AppUser]', N'U') IS NOT NULL
BEGIN
DROP TABLE [dbo].[AppUser];
END;
GO
IF OBJECT_ID(N'[dbo].[SonicCredential]', N'U') IS NOT NULL
BEGIN
DROP TABLE [dbo].[SonicCredential];
END;
GO
IF OBJECT_ID(N'[dbo].[SonicContainer]', N'U') IS NOT NULL
BEGIN
DROP TABLE [dbo].[SonicContainer];
END;
GO
/* SonicConnection kann AE-Spalten haben — vor CEK-Drop entfernen */
IF OBJECT_ID(N'[dbo].[SonicConnection]', N'U') IS NOT NULL
BEGIN
DROP TABLE [dbo].[SonicConnection];
END;
GO
IF OBJECT_ID(N'[dbo].[EsbService]', N'U') IS NOT NULL
BEGIN
DROP TABLE [dbo].[EsbService];
END;
GO
IF OBJECT_ID(N'[dbo].[Country]', N'U') IS NOT NULL
BEGIN
DROP TABLE [dbo].[Country];
END;
GO
IF OBJECT_ID(N'[dbo].[Environment]', N'U') IS NOT NULL
BEGIN
DROP TABLE [dbo].[Environment];
END;
GO
IF OBJECT_ID(N'[dbo].[Company]', N'U') IS NOT NULL
BEGIN
DROP TABLE [dbo].[Company];
END;
GO
IF EXISTS
(
SELECT 1
FROM [sys].[column_encryption_keys] AS cek
WHERE cek.[name] = N'CEK_ESB_ZertifikatManager'
)
BEGIN
DROP COLUMN ENCRYPTION KEY [CEK_ESB_ZertifikatManager];
END;
GO
IF EXISTS
(
SELECT 1
FROM [sys].[column_master_keys] AS cmk
WHERE cmk.[name] = N'CMK_ESB_ZertifikatManager'
)
BEGIN
DROP COLUMN MASTER KEY [CMK_ESB_ZertifikatManager];
END;
GO
/* -------------------------------------------------------------------------- */
/* Always Encrypted neu anlegen */
/* -------------------------------------------------------------------------- */
CREATE COLUMN MASTER KEY [CMK_ESB_ZertifikatManager]
WITH
(
KEY_STORE_PROVIDER_NAME = N'MSSQL_CERTIFICATE_STORE',
KEY_PATH = N'CurrentUser/My/238AC7A32074D5B293C7EFB60E256907CB82C9C6'
);
GO
CREATE COLUMN ENCRYPTION KEY [CEK_ESB_ZertifikatManager]
WITH VALUES
(
COLUMN_MASTER_KEY = [CMK_ESB_ZertifikatManager],
ALGORITHM = 'RSA_OAEP',
ENCRYPTED_VALUE = 0x016E000001630075007200720065006E00740075007300650072002F006D0079002F003200330038006100630037006100330032003000370034006400350062003200390033006300370065006600620036003000650032003500360039003000370063006200380032006300390063003600B8FEA92C9873A6A27B4EB33481926ABF719FB0C2EE7DF959AE38D48185CC7286E7779016745253EDB10C769773D03B614995E2373AE9F02428370727C5DF69B902A01EC0B93E8B8D114460455BAC0C1868DAE1A49AAF04480E8A3D05867395CA455CA9FADEF046437B8C25BA7DE945FCB45A50590DA555B1EB860F23B556B72A142992C085E3D4A97E92D2882D6849C6DABCF37653926A8FBC532A115CB9748179BF34DADDE268FD0DC8FF1CFBCB7192D3220238794D6D2FC7C4BDE501BABE5F6BB989853C6B5C510396069F41338CF64236A6D7A4C26F0DF7BBD2A1A5BD3BA2F7D75FECF7BE0AB0C69DDEEAAD72E2849D0A4F9C9A0C25E021A432EE399AA075AB3F0FB9929392D825E1EC991D017022982C17E72CFA9EEDB17DED9FCECF2B8651B72CA87EEAED5473B3806BD4C0A56539703B4EFF38D2889D255B95C9A6F1AD7D22A1FF2F71621B286FCAD8B708810E7BF50D027BF6A0A829422EE599D00CF2D8E6ADB7DE802971A5805073EC2E6F9793E9AEDE30E7B8EC865D50183EB64B9B8286E4A9BFFB98ACDAA9C9D8D149834DE1CA7FEF9C6A54AF4B30BDDF4AC41C36FB0EFD4EE783CEE1546D25A7CA75C549A2FB978907AFBD209197A9D60239F14F4CFAC202F435AA80DBF6A6494AB3E934F86C640DBFBB77879F2FFA8B1C9DD1BF3B14299C12943F57F1948CC5833986918EB7ACABBC1C4D642E1944BB07AB8446
);
GO
/* -------------------------------------------------------------------------- */
/* Company */
/* -------------------------------------------------------------------------- */
IF OBJECT_ID(N'[dbo].[Company]', N'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Company]
(
[CompanyId] [int] IDENTITY(1, 1) NOT NULL,
[CompanyCode] [nvarchar](30) NOT NULL,
[CompanyName] [nvarchar](200) NOT NULL,
[IsActive] [bit] NOT NULL,
[CreationDateTime] [datetime2](3) NOT NULL,
[CreatedBy] [nvarchar](128) NOT NULL,
[ModifiedDateTime] [datetime2](3) NULL,
[ModifiedBy] [nvarchar](128) NULL,
CONSTRAINT [pk_Company] PRIMARY KEY CLUSTERED ([CompanyId] ASC),
CONSTRAINT [uc_Company_CompanyCode] UNIQUE NONCLUSTERED ([CompanyCode] ASC)
);
END;
GO
IF OBJECT_ID(N'[dbo].[dc_Company_IsActive]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[Company]
ADD CONSTRAINT [dc_Company_IsActive]
DEFAULT ((1)) FOR [IsActive];
END;
GO
IF OBJECT_ID(N'[dbo].[dc_Company_CreationDateTime]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[Company]
ADD CONSTRAINT [dc_Company_CreationDateTime]
DEFAULT (SYSUTCDATETIME()) FOR [CreationDateTime];
END;
GO
IF OBJECT_ID(N'[dbo].[dc_Company_CreatedBy]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[Company]
ADD CONSTRAINT [dc_Company_CreatedBy]
DEFAULT (SUSER_SNAME()) FOR [CreatedBy];
END;
GO
/* -------------------------------------------------------------------------- */
/* Environment */
/* -------------------------------------------------------------------------- */
IF OBJECT_ID(N'[dbo].[Environment]', N'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Environment]
(
[EnvironmentId] [int] IDENTITY(1, 1) NOT NULL,
[EnvironmentCode] [nvarchar](30) NOT NULL,
[EnvironmentName] [nvarchar](100) NOT NULL,
[SortOrder] [int] NOT NULL,
[IsActive] [bit] NOT NULL,
[CreationDateTime] [datetime2](3) NOT NULL,
[CreatedBy] [nvarchar](128) NOT NULL,
[ModifiedDateTime] [datetime2](3) NULL,
[ModifiedBy] [nvarchar](128) NULL,
CONSTRAINT [pk_Environment] PRIMARY KEY CLUSTERED ([EnvironmentId] ASC),
CONSTRAINT [uc_Environment_EnvironmentCode] UNIQUE NONCLUSTERED ([EnvironmentCode] ASC),
CONSTRAINT [uc_Environment_SortOrder] UNIQUE NONCLUSTERED ([SortOrder] ASC)
);
END;
GO
IF OBJECT_ID(N'[dbo].[dc_Environment_IsActive]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[Environment]
ADD CONSTRAINT [dc_Environment_IsActive]
DEFAULT ((1)) FOR [IsActive];
END;
GO
IF OBJECT_ID(N'[dbo].[dc_Environment_CreationDateTime]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[Environment]
ADD CONSTRAINT [dc_Environment_CreationDateTime]
DEFAULT (SYSUTCDATETIME()) FOR [CreationDateTime];
END;
GO
IF OBJECT_ID(N'[dbo].[dc_Environment_CreatedBy]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[Environment]
ADD CONSTRAINT [dc_Environment_CreatedBy]
DEFAULT (SUSER_SNAME()) FOR [CreatedBy];
END;
GO
/* -------------------------------------------------------------------------- */
/* SonicConnection */
/* -------------------------------------------------------------------------- */
IF OBJECT_ID(N'[dbo].[SonicConnection]', N'U') IS NULL
BEGIN
CREATE TABLE [dbo].[SonicConnection]
(
[SonicConnectionId] [int] IDENTITY(1, 1) NOT NULL,
[EnvironmentId] [int] NOT NULL,
[ConnectionName] [nvarchar](150) NOT NULL,
[ManagementHost] [nvarchar](255) NOT NULL,
[ManagementPort] [int] NOT NULL,
[DomainName] [nvarchar](150) NOT NULL,
[ConnectionProtocol] [nvarchar](20) NOT NULL,
[IsActive] [bit] NOT NULL,
[CreationDateTime] [datetime2](3) NOT NULL,
[CreatedBy] [nvarchar](128) NOT NULL,
[ModifiedDateTime] [datetime2](3) NULL,
[ModifiedBy] [nvarchar](128) NULL,
CONSTRAINT [pk_SonicConnection] PRIMARY KEY CLUSTERED ([SonicConnectionId] ASC),
CONSTRAINT [uc_SonicConnection_ConnectionName] UNIQUE NONCLUSTERED ([ConnectionName] ASC),
CONSTRAINT [fk_SonicConnection_EnvironmentId]
FOREIGN KEY ([EnvironmentId])
REFERENCES [dbo].[Environment] ([EnvironmentId]),
CONSTRAINT [cc_SonicConnection_ManagementPort]
CHECK ([ManagementPort] >= (1) AND [ManagementPort] <= (65535))
);
END;
GO
IF OBJECT_ID(N'[dbo].[dc_SonicConnection_ConnectionProtocol]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[SonicConnection]
ADD CONSTRAINT [dc_SonicConnection_ConnectionProtocol]
DEFAULT (N'tcp') FOR [ConnectionProtocol];
END;
GO
IF OBJECT_ID(N'[dbo].[dc_SonicConnection_IsActive]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[SonicConnection]
ADD CONSTRAINT [dc_SonicConnection_IsActive]
DEFAULT ((1)) FOR [IsActive];
END;
GO
IF OBJECT_ID(N'[dbo].[dc_SonicConnection_CreationDateTime]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[SonicConnection]
ADD CONSTRAINT [dc_SonicConnection_CreationDateTime]
DEFAULT (SYSUTCDATETIME()) FOR [CreationDateTime];
END;
GO
IF OBJECT_ID(N'[dbo].[dc_SonicConnection_CreatedBy]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[SonicConnection]
ADD CONSTRAINT [dc_SonicConnection_CreatedBy]
DEFAULT (SUSER_SNAME()) FOR [CreatedBy];
END;
GO
IF NOT EXISTS
(
SELECT 1
FROM [sys].[indexes] AS i
WHERE i.[object_id] = OBJECT_ID(N'[dbo].[SonicConnection]')
AND i.[name] = N'idx_SonicConnection_EnvironmentActive'
)
BEGIN
CREATE NONCLUSTERED INDEX [idx_SonicConnection_EnvironmentActive]
ON [dbo].[SonicConnection]
(
[EnvironmentId] ASC,
[IsActive] ASC
);
END;
GO
/* -------------------------------------------------------------------------- */
/* SonicCredential (Always Encrypted) */
/* -------------------------------------------------------------------------- */
IF OBJECT_ID(N'[dbo].[SonicCredential]', N'U') IS NULL
BEGIN
CREATE TABLE [dbo].[SonicCredential]
(
[SonicCredentialId] [int] IDENTITY(1, 1) NOT NULL,
[SonicConnectionId] [int] NOT NULL,
[CredentialName] [nvarchar](150) NOT NULL,
[CredentialUserName] [nvarchar](256)
COLLATE Latin1_General_BIN2
ENCRYPTED WITH
(
COLUMN_ENCRYPTION_KEY = [CEK_ESB_ZertifikatManager],
ENCRYPTION_TYPE = Randomized,
ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256'
) NULL,
[CredentialSecret] [nvarchar](512)
COLLATE Latin1_General_BIN2
ENCRYPTED WITH
(
COLUMN_ENCRYPTION_KEY = [CEK_ESB_ZertifikatManager],
ENCRYPTION_TYPE = Randomized,
ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256'
) NULL,
[IsDefault] [bit] NOT NULL,
[IsActive] [bit] NOT NULL,
[CreationDateTime] [datetime2](3) NOT NULL,
[CreatedBy] [nvarchar](128) NOT NULL,
[ModifiedDateTime] [datetime2](3) NULL,
[ModifiedBy] [nvarchar](128) NULL,
CONSTRAINT [pk_SonicCredential] PRIMARY KEY CLUSTERED ([SonicCredentialId] ASC),
CONSTRAINT [uc_SonicCredential_CredentialName]
UNIQUE NONCLUSTERED ([SonicConnectionId] ASC, [CredentialName] ASC),
CONSTRAINT [fk_SonicCredential_SonicConnectionId]
FOREIGN KEY ([SonicConnectionId])
REFERENCES [dbo].[SonicConnection] ([SonicConnectionId])
);
END;
GO
IF OBJECT_ID(N'[dbo].[dc_SonicCredential_IsDefault]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[SonicCredential]
ADD CONSTRAINT [dc_SonicCredential_IsDefault]
DEFAULT ((0)) FOR [IsDefault];
END;
GO
IF OBJECT_ID(N'[dbo].[dc_SonicCredential_IsActive]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[SonicCredential]
ADD CONSTRAINT [dc_SonicCredential_IsActive]
DEFAULT ((1)) FOR [IsActive];
END;
GO
IF OBJECT_ID(N'[dbo].[dc_SonicCredential_CreationDateTime]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[SonicCredential]
ADD CONSTRAINT [dc_SonicCredential_CreationDateTime]
DEFAULT (SYSUTCDATETIME()) FOR [CreationDateTime];
END;
GO
IF OBJECT_ID(N'[dbo].[dc_SonicCredential_CreatedBy]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[SonicCredential]
ADD CONSTRAINT [dc_SonicCredential_CreatedBy]
DEFAULT (SUSER_SNAME()) FOR [CreatedBy];
END;
GO
/* -------------------------------------------------------------------------- */
/* SonicContainer */
/* -------------------------------------------------------------------------- */
IF OBJECT_ID(N'[dbo].[SonicContainer]', N'U') IS NULL
BEGIN
CREATE TABLE [dbo].[SonicContainer]
(
[SonicContainerId] [int] IDENTITY(1, 1) NOT NULL,
[CompanyId] [int] NOT NULL,
[SonicConnectionId] [int] NOT NULL,
[ContainerName] [nvarchar](250) NOT NULL,
[ContainerDisplayName] [nvarchar](250) NULL,
[RestartTimeoutSeconds] [int] NOT NULL,
[IsActive] [bit] NOT NULL,
[CreationDateTime] [datetime2](3) NOT NULL,
[CreatedBy] [nvarchar](128) NOT NULL,
[ModifiedDateTime] [datetime2](3) NULL,
[ModifiedBy] [nvarchar](128) NULL,
CONSTRAINT [pk_SonicContainer] PRIMARY KEY CLUSTERED ([SonicContainerId] ASC),
CONSTRAINT [uc_SonicContainer_CompanyContainer]
UNIQUE NONCLUSTERED ([CompanyId] ASC, [ContainerName] ASC),
CONSTRAINT [fk_SonicContainer_CompanyId]
FOREIGN KEY ([CompanyId])
REFERENCES [dbo].[Company] ([CompanyId]),
CONSTRAINT [fk_SonicContainer_SonicConnectionId]
FOREIGN KEY ([SonicConnectionId])
REFERENCES [dbo].[SonicConnection] ([SonicConnectionId]),
CONSTRAINT [cc_SonicContainer_RestartTimeoutSeconds]
CHECK ([RestartTimeoutSeconds] >= (10) AND [RestartTimeoutSeconds] <= (3600))
);
END;
GO
IF OBJECT_ID(N'[dbo].[dc_SonicContainer_RestartTimeoutSeconds]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[SonicContainer]
ADD CONSTRAINT [dc_SonicContainer_RestartTimeoutSeconds]
DEFAULT ((180)) FOR [RestartTimeoutSeconds];
END;
GO
IF OBJECT_ID(N'[dbo].[dc_SonicContainer_IsActive]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[SonicContainer]
ADD CONSTRAINT [dc_SonicContainer_IsActive]
DEFAULT ((1)) FOR [IsActive];
END;
GO
IF OBJECT_ID(N'[dbo].[dc_SonicContainer_CreationDateTime]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[SonicContainer]
ADD CONSTRAINT [dc_SonicContainer_CreationDateTime]
DEFAULT (SYSUTCDATETIME()) FOR [CreationDateTime];
END;
GO
IF OBJECT_ID(N'[dbo].[dc_SonicContainer_CreatedBy]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[SonicContainer]
ADD CONSTRAINT [dc_SonicContainer_CreatedBy]
DEFAULT (SUSER_SNAME()) FOR [CreatedBy];
END;
GO
IF NOT EXISTS
(
SELECT 1
FROM [sys].[indexes] AS i
WHERE i.[object_id] = OBJECT_ID(N'[dbo].[SonicContainer]')
AND i.[name] = N'idx_SonicContainer_ConnectionActive'
)
BEGIN
CREATE NONCLUSTERED INDEX [idx_SonicContainer_ConnectionActive]
ON [dbo].[SonicContainer]
(
[SonicConnectionId] ASC,
[IsActive] ASC
);
END;
GO
IF NOT EXISTS
(
SELECT 1
FROM [sys].[indexes] AS i
WHERE i.[object_id] = OBJECT_ID(N'[dbo].[SonicContainer]')
AND i.[name] = N'idx_SonicContainer_CompanyActive'
)
BEGIN
CREATE NONCLUSTERED INDEX [idx_SonicContainer_CompanyActive]
ON [dbo].[SonicContainer]
(
[CompanyId] ASC,
[IsActive] ASC
);
END;
GO
/* -------------------------------------------------------------------------- */
/* CertificateTarget */
/* -------------------------------------------------------------------------- */
IF OBJECT_ID(N'[dbo].[CertificateTarget]', N'U') IS NULL
BEGIN
CREATE TABLE [dbo].[CertificateTarget]
(
[CertificateTargetId] [int] IDENTITY(1, 1) NOT NULL,
[SonicContainerId] [int] NOT NULL,
[TargetDirectory] [nvarchar](500) NOT NULL,
[TargetFileName] [nvarchar](260) NOT NULL,
[BackupEnabled] [bit] NOT NULL,
[BackupDirectoryName] [nvarchar](100) NOT NULL,
[IsActive] [bit] NOT NULL,
[CreationDateTime] [datetime2](3) NOT NULL,
[CreatedBy] [nvarchar](128) NOT NULL,
[ModifiedDateTime] [datetime2](3) NULL,
[ModifiedBy] [nvarchar](128) NULL,
CONSTRAINT [pk_CertificateTarget] PRIMARY KEY CLUSTERED ([CertificateTargetId] ASC),
CONSTRAINT [uc_CertificateTarget_Destination]
UNIQUE NONCLUSTERED
(
[SonicContainerId] ASC,
[TargetDirectory] ASC,
[TargetFileName] ASC
),
CONSTRAINT [fk_CertificateTarget_SonicContainerId]
FOREIGN KEY ([SonicContainerId])
REFERENCES [dbo].[SonicContainer] ([SonicContainerId])
);
END;
GO
IF OBJECT_ID(N'[dbo].[dc_CertificateTarget_BackupEnabled]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[CertificateTarget]
ADD CONSTRAINT [dc_CertificateTarget_BackupEnabled]
DEFAULT ((1)) FOR [BackupEnabled];
END;
GO
IF OBJECT_ID(N'[dbo].[dc_CertificateTarget_BackupDirectoryName]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[CertificateTarget]
ADD CONSTRAINT [dc_CertificateTarget_BackupDirectoryName]
DEFAULT (N'Backup') FOR [BackupDirectoryName];
END;
GO
IF OBJECT_ID(N'[dbo].[dc_CertificateTarget_IsActive]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[CertificateTarget]
ADD CONSTRAINT [dc_CertificateTarget_IsActive]
DEFAULT ((1)) FOR [IsActive];
END;
GO
IF OBJECT_ID(N'[dbo].[dc_CertificateTarget_CreationDateTime]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[CertificateTarget]
ADD CONSTRAINT [dc_CertificateTarget_CreationDateTime]
DEFAULT (SYSUTCDATETIME()) FOR [CreationDateTime];
END;
GO
IF OBJECT_ID(N'[dbo].[dc_CertificateTarget_CreatedBy]', N'D') IS NULL
BEGIN
ALTER TABLE [dbo].[CertificateTarget]
ADD CONSTRAINT [dc_CertificateTarget_CreatedBy]
DEFAULT (SUSER_SNAME()) FOR [CreatedBy];
END;
GO
IF NOT EXISTS
(
SELECT 1
FROM [sys].[indexes] AS i
WHERE i.[object_id] = OBJECT_ID(N'[dbo].[CertificateTarget]')
AND i.[name] = N'idx_CertificateTarget_ContainerActive'
)
BEGIN
CREATE NONCLUSTERED INDEX [idx_CertificateTarget_ContainerActive]
ON [dbo].[CertificateTarget]
(
[SonicContainerId] ASC,
[IsActive] ASC
);
END;
GO