diff --git a/DBPatch/DBPatch_CPXV2Log_Create.bat b/DBPatch/DBPatch_CPXV2Log_Create.bat
new file mode 100644
index 0000000..bb12a2f
--- /dev/null
+++ b/DBPatch/DBPatch_CPXV2Log_Create.bat
@@ -0,0 +1,21 @@
+@echo off
+CD ./sqlScripts/
+
+::log
+IF NOT EXIST .\logs mkdir logs
+
+::DB 정의 스키마
+SET Schema=SystemX.DB.CPXV2Log
+
+::연결정보
+SET ServerIP=127.0.0.1
+SET ServerPort=1433
+SET UserID=SystemX
+SET Passwd=X
+
+::Default DB
+@echo off
+::CALL _CreateDB.bat %Schema% %ServerIP% %ServerPort% %UserID% %Passwd% CPXV2LongTermLogJson_DEV
+::CALL _CreateDB.bat %Schema% %ServerIP% %ServerPort% %UserID% %Passwd% CPXV2LongTermLogJson_3030
+::CALL _CreateDB.bat %Schema% %ServerIP% %ServerPort% %UserID% %Passwd% CPXV2LongTermLogJson_3031
+::CALL _CreateDB.bat %Schema% %ServerIP% %ServerPort% %UserID% %Passwd% CPXV2LongTermLogJson_3032
diff --git a/DBPatch/DBPatch_CPXV2_Create.bat b/DBPatch/DBPatch_CPXV2_Create.bat
new file mode 100644
index 0000000..9591557
--- /dev/null
+++ b/DBPatch/DBPatch_CPXV2_Create.bat
@@ -0,0 +1,19 @@
+@echo off
+CD ./sqlScripts/
+
+::log
+IF NOT EXIST .\logs mkdir logs
+
+::DB 정의 스키마
+SET Schema=SystemX.DB.CPXV2
+
+::연결정보
+SET ServerIP=127.0.0.1
+SET ServerPort=1433
+SET UserID=SystemX
+SET Passwd=X
+
+::Default DB
+@echo off
+::CALL _CreateDB.bat %Schema% %ServerIP% %ServerPort% %UserID% %Passwd% CPXV2
+::CALL _CreateDB.bat %Schema% %ServerIP% %ServerPort% %UserID% %Passwd% CPXV2_DEV
\ No newline at end of file
diff --git a/DBPatch/Tool_CPXV2Log_Scaffold.bat b/DBPatch/Tool_CPXV2Log_Scaffold.bat
new file mode 100644
index 0000000..b491878
--- /dev/null
+++ b/DBPatch/Tool_CPXV2Log_Scaffold.bat
@@ -0,0 +1,4 @@
+::AccountDB
+cd ../Projects/SystemX.Core/SystemX.Core.DB
+
+dotnet ef dbcontext scaffold "server=127.0.0.1; user id=SystemX; password=X; database=CPXV2LongTermLogJson_DEV; TrustServerCertificate=true;" Microsoft.EntityFrameworkCore.SqlServer --namespace SystemX.Core.DB --context CPXV2Log --context-dir CPXV2Log\Context --output-dir CPXV2Log\Tables -f --use-database-names --no-onconfiguring
\ No newline at end of file
diff --git a/DBPatch/Tool_CPXV2_Scaffold.bat b/DBPatch/Tool_CPXV2_Scaffold.bat
new file mode 100644
index 0000000..7bf7394
--- /dev/null
+++ b/DBPatch/Tool_CPXV2_Scaffold.bat
@@ -0,0 +1,4 @@
+::AccountDB
+cd ../Projects/SystemX.Core/SystemX.Core.DB
+
+dotnet ef dbcontext scaffold "server=127.0.0.1; user id=SystemX; password=X; database=CPXV2_DEV; TrustServerCertificate=true;" Microsoft.EntityFrameworkCore.SqlServer --namespace SystemX.Core.DB --context CPXV2 --context-dir CPXV2\Context --output-dir CPXV2\Tables -f --use-database-names --no-onconfiguring
\ No newline at end of file
diff --git a/DBPatch/sqlScripts/SystemX.DB.CPXV2Log_Create.sql b/DBPatch/sqlScripts/SystemX.DB.CPXV2Log_Create.sql
new file mode 100644
index 0000000..b9d59b9
--- /dev/null
+++ b/DBPatch/sqlScripts/SystemX.DB.CPXV2Log_Create.sql
@@ -0,0 +1,568 @@
+/*
+SystemX.DB.CPXV2Log의 배포 스크립트
+
+이 코드는 도구를 사용하여 생성되었습니다.
+파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
+변경 내용이 손실됩니다.
+*/
+
+GO
+SET ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER ON;
+
+SET NUMERIC_ROUNDABORT OFF;
+
+
+GO
+/*
+:setvar DatabaseName "SystemX.DB.CPXV2Log"
+:setvar DefaultFilePrefix "SystemX.DB.CPXV2Log"
+:setvar DefaultDataPath ""
+:setvar DefaultLogPath ""
+*/
+
+GO
+:on error exit
+GO
+/*
+SQLCMD 모드가 지원되지 않으면 SQLCMD 모드를 검색하고 스크립트를 실행하지 않습니다.
+SQLCMD 모드를 설정한 후에 이 스크립트를 다시 사용하려면 다음을 실행합니다.
+SET NOEXEC OFF;
+*/
+:setvar __IsSqlCmdEnabled "True"
+GO
+IF N'$(__IsSqlCmdEnabled)' NOT LIKE N'True'
+ BEGIN
+ PRINT N'이 스크립트를 실행하려면 SQLCMD 모드를 사용하도록 설정해야 합니다.';
+ SET NOEXEC ON;
+ END
+
+
+GO
+USE [master];
+
+
+GO
+
+IF (DB_ID(N'$(DatabaseName)') IS NOT NULL)
+BEGIN
+ ALTER DATABASE [$(DatabaseName)]
+ SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
+ DROP DATABASE [$(DatabaseName)];
+END
+
+GO
+PRINT N'$(DatabaseName) 데이터베이스를 만드는 중...'
+GO
+CREATE DATABASE [$(DatabaseName)] COLLATE Korean_Wansung_CI_AS
+GO
+USE [$(DatabaseName)];
+
+
+GO
+IF EXISTS (SELECT 1
+ FROM [master].[dbo].[sysdatabases]
+ WHERE [name] = N'$(DatabaseName)')
+ BEGIN
+ ALTER DATABASE [$(DatabaseName)]
+ SET ANSI_NULLS ON,
+ ANSI_PADDING ON,
+ ANSI_WARNINGS ON,
+ ARITHABORT ON,
+ CONCAT_NULL_YIELDS_NULL ON,
+ NUMERIC_ROUNDABORT OFF,
+ QUOTED_IDENTIFIER ON,
+ ANSI_NULL_DEFAULT ON,
+ CURSOR_DEFAULT LOCAL,
+ RECOVERY FULL,
+ CURSOR_CLOSE_ON_COMMIT OFF,
+ AUTO_CREATE_STATISTICS ON,
+ AUTO_SHRINK OFF,
+ AUTO_UPDATE_STATISTICS ON,
+ RECURSIVE_TRIGGERS OFF
+ WITH ROLLBACK IMMEDIATE;
+ END
+
+
+GO
+IF EXISTS (SELECT 1
+ FROM [master].[dbo].[sysdatabases]
+ WHERE [name] = N'$(DatabaseName)')
+ BEGIN
+ ALTER DATABASE [$(DatabaseName)]
+ SET ALLOW_SNAPSHOT_ISOLATION OFF;
+ END
+
+
+GO
+IF EXISTS (SELECT 1
+ FROM [master].[dbo].[sysdatabases]
+ WHERE [name] = N'$(DatabaseName)')
+ BEGIN
+ ALTER DATABASE [$(DatabaseName)]
+ SET READ_COMMITTED_SNAPSHOT OFF
+ WITH ROLLBACK IMMEDIATE;
+ END
+
+
+GO
+IF EXISTS (SELECT 1
+ FROM [master].[dbo].[sysdatabases]
+ WHERE [name] = N'$(DatabaseName)')
+ BEGIN
+ ALTER DATABASE [$(DatabaseName)]
+ SET AUTO_UPDATE_STATISTICS_ASYNC OFF,
+ PAGE_VERIFY NONE,
+ 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'$(DatabaseName)')
+ BEGIN
+ EXECUTE sp_executesql N'ALTER DATABASE [$(DatabaseName)]
+ SET TRUSTWORTHY OFF,
+ DB_CHAINING OFF
+ WITH ROLLBACK IMMEDIATE';
+ END
+ END
+ELSE
+ BEGIN
+ PRINT N'데이터베이스 설정을 수정할 수 없습니다. 이러한 설정을 적용하려면 SysAdmin이어야 합니다.';
+ END
+
+
+GO
+IF IS_SRVROLEMEMBER(N'sysadmin') = 1
+ BEGIN
+ IF EXISTS (SELECT 1
+ FROM [master].[dbo].[sysdatabases]
+ WHERE [name] = N'$(DatabaseName)')
+ BEGIN
+ EXECUTE sp_executesql N'ALTER DATABASE [$(DatabaseName)]
+ SET HONOR_BROKER_PRIORITY OFF
+ WITH ROLLBACK IMMEDIATE';
+ END
+ END
+ELSE
+ BEGIN
+ PRINT N'데이터베이스 설정을 수정할 수 없습니다. 이러한 설정을 적용하려면 SysAdmin이어야 합니다.';
+ END
+
+
+GO
+ALTER DATABASE [$(DatabaseName)]
+ SET TARGET_RECOVERY_TIME = 0 SECONDS
+ WITH ROLLBACK IMMEDIATE;
+
+
+GO
+IF EXISTS (SELECT 1
+ FROM [master].[dbo].[sysdatabases]
+ WHERE [name] = N'$(DatabaseName)')
+ BEGIN
+ ALTER DATABASE [$(DatabaseName)]
+ SET FILESTREAM(NON_TRANSACTED_ACCESS = OFF),
+ CONTAINMENT = NONE
+ WITH ROLLBACK IMMEDIATE;
+ END
+
+
+GO
+IF EXISTS (SELECT 1
+ FROM [master].[dbo].[sysdatabases]
+ WHERE [name] = N'$(DatabaseName)')
+ BEGIN
+ ALTER DATABASE [$(DatabaseName)]
+ 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'$(DatabaseName)')
+ BEGIN
+ ALTER DATABASE [$(DatabaseName)]
+ SET QUERY_STORE (QUERY_CAPTURE_MODE = ALL, DATA_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'$(DatabaseName)')
+ BEGIN
+ ALTER DATABASE [$(DatabaseName)]
+ SET QUERY_STORE = OFF
+ WITH ROLLBACK IMMEDIATE;
+ END
+
+
+GO
+IF EXISTS (SELECT 1
+ FROM [master].[dbo].[sysdatabases]
+ WHERE [name] = N'$(DatabaseName)')
+ 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
+IF EXISTS (SELECT 1
+ FROM [master].[dbo].[sysdatabases]
+ WHERE [name] = N'$(DatabaseName)')
+ BEGIN
+ ALTER DATABASE [$(DatabaseName)]
+ SET TEMPORAL_HISTORY_RETENTION ON
+ WITH ROLLBACK IMMEDIATE;
+ END
+
+
+GO
+IF fulltextserviceproperty(N'IsFulltextInstalled') = 1
+ EXECUTE sp_fulltext_database 'enable';
+
+
+GO
+PRINT N'테이블 [dbo].[HIST_TestResult]을(를) 만드는 중...';
+
+
+GO
+CREATE TABLE [dbo].[HIST_TestResult] (
+ [No] BIGINT NOT NULL,
+ [TestDT] DATETIME2 (7) NULL,
+ [LogData] NVARCHAR (MAX) NOT NULL,
+ CONSTRAINT [PK_HIST_TestResult] PRIMARY KEY CLUSTERED ([No] ASC) ON [PRIMARY]
+) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY];
+
+
+GO
+PRINT N'인덱스 [dbo].[HIST_TestResult].[HIST_TestResult_2]을(를) 만드는 중...';
+
+
+GO
+CREATE NONCLUSTERED INDEX [HIST_TestResult_2]
+ ON [dbo].[HIST_TestResult]([TestDT] ASC, [No] ASC)
+ ON [PRIMARY];
+
+
+GO
+PRINT N'인덱스 [dbo].[HIST_TestResult].[HIST_TestResult_3]을(를) 만드는 중...';
+
+
+GO
+CREATE NONCLUSTERED INDEX [HIST_TestResult_3]
+ ON [dbo].[HIST_TestResult]([TestDT] ASC)
+ ON [PRIMARY];
+
+
+GO
+PRINT N'테이블 [dbo].[HIST_LogSummary]을(를) 만드는 중...';
+
+
+GO
+CREATE TABLE [dbo].[HIST_LogSummary] (
+ [No] BIGINT IDENTITY (0, 1) NOT NULL,
+ [StationName] NVARCHAR (128) NULL,
+ [TestType] NVARCHAR (8) NOT NULL,
+ [Version] NVARCHAR (4) NOT NULL,
+ [ProdCode] NVARCHAR (4) NOT NULL,
+ [TestListFileNo] INT NULL,
+ [TestListVariantNo] INT NULL,
+ [TestListCntID] NVARCHAR (256) NULL,
+ [StepVersion] INT NULL,
+ [HostID] NVARCHAR (64) NOT NULL,
+ [Section] NVARCHAR (64) NOT NULL,
+ [ProdNo_C] NVARCHAR (32) NOT NULL,
+ [ProdNo_P] NVARCHAR (32) NOT NULL,
+ [Testcode] NVARCHAR (16) NOT NULL,
+ [TestListFileName] NVARCHAR (256) NOT NULL,
+ [ProductID] NVARCHAR (64) NOT NULL,
+ [Result] NVARCHAR (16) NOT NULL,
+ [Duration] NVARCHAR (16) NOT NULL,
+ [TestDT] DATETIME2 (7) NOT NULL,
+ CONSTRAINT [PK_HIST_LogSummary] PRIMARY KEY CLUSTERED ([No] ASC),
+ UNIQUE NONCLUSTERED ([No] ASC) ON [PRIMARY]
+) ON [PRIMARY];
+
+
+GO
+PRINT N'인덱스 [dbo].[HIST_LogSummary].[HIST_LogSummary_2]을(를) 만드는 중...';
+
+
+GO
+CREATE NONCLUSTERED INDEX [HIST_LogSummary_2]
+ ON [dbo].[HIST_LogSummary]([TestDT] ASC, [No] ASC)
+ ON [PRIMARY];
+
+
+GO
+PRINT N'인덱스 [dbo].[HIST_LogSummary].[HIST_LogSummary_3]을(를) 만드는 중...';
+
+
+GO
+CREATE NONCLUSTERED INDEX [HIST_LogSummary_3]
+ ON [dbo].[HIST_LogSummary]([TestDT] ASC)
+ ON [PRIMARY];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[HIST_TestResult]
+ ADD DEFAULT (getdate()) FOR [TestDT];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[HIST_LogSummary]
+ ADD DEFAULT ('-') FOR [StationName];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[HIST_LogSummary]
+ ADD DEFAULT ((-1)) FOR [TestListFileNo];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[HIST_LogSummary]
+ ADD DEFAULT ((-1)) FOR [TestListVariantNo];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[HIST_LogSummary]
+ ADD DEFAULT ((-1)) FOR [StepVersion];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[HIST_LogSummary]
+ ADD DEFAULT (getdate()) FOR [TestDT];
+
+
+GO
+PRINT N'프로시저 [dbo].[spCreateTableMonth]을(를) 만드는 중...';
+
+
+GO
+CREATE PROCEDURE [dbo].[spCreateTableMonth]
+
+AS
+ --현재 월 HIST_TestResult 테이블 생성
+ DECLARE @current_yymm varchar(4) = CONVERT(CHAR(4), GETDATE(), 12)
+
+ DECLARE @current_summaryTableName varchar(40) = N'HIST_LogSummary_'+@current_yymm
+ DECLARE @current_summary_query varchar(200) = N' SELECT * INTO ' + @current_summaryTableName + N' FROM HIST_LogSummary'
+ IF NOT EXISTS(SELECT * FROM sys.tables WHERE NAME = @current_summaryTableName)
+ BEGIN
+ EXEC(@current_summary_query)
+ END
+
+ DECLARE @current_resultTableName varchar(40) = N'HIST_TestResult_'+@current_yymm
+ DECLARE @current_result_query varchar(200) = N' SELECT * INTO ' + @current_resultTableName + N' FROM HIST_TestResult'
+ IF NOT EXISTS(SELECT * FROM sys.tables WHERE NAME = @current_resultTableName)
+ BEGIN
+ EXEC(@current_result_query)
+ END
+
+ --다음 월 HIST_TestResult 테이블 생성
+ DECLARE @next_yymm varchar(4) = CONVERT(CHAR(4), DATEADD(MONTH, 1, GETDATE()), 12)
+
+ DECLARE @next_summaryTableName varchar(40) = N'HIST_LogSummary_'+@next_yymm
+ DECLARE @next_summary_query varchar(200) = N' SELECT * INTO ' + @next_summaryTableName + N' FROM HIST_LogSummary'
+ IF NOT EXISTS(SELECT * FROM sys.tables WHERE NAME = @next_summaryTableName)
+ BEGIN
+ EXEC(@next_summary_query)
+ END
+
+ DECLARE @next_resultTableName varchar(40) = N'HIST_TestResult_'+@next_yymm
+ DECLARE @next_result_query varchar(200) = N' SELECT * INTO ' + @next_resultTableName + N' FROM HIST_TestResult'
+ IF NOT EXISTS(SELECT * FROM sys.tables WHERE NAME = @next_resultTableName)
+ BEGIN
+ EXEC(@next_result_query)
+ END
+RETURN 0
+GO
+PRINT N'프로시저 [dbo].[spCreateTableByName]을(를) 만드는 중...';
+
+
+GO
+CREATE PROCEDURE [dbo].[spCreateTableByName]
+ @logSummaryTableName nvarchar(200),
+ @logResultTableName nvarchar(200)
+AS
+ IF NOT EXISTS(SELECT * FROM sys.tables WHERE NAME = @logSummaryTableName)
+ BEGIN
+ DECLARE @summaryQuery nvarchar(4000)= N'
+ CREATE TABLE [dbo].['+@logSummaryTableName+'](
+ [No] [bigint] IDENTITY(0,1) NOT NULL,
+ [StationName] [nvarchar](128) NULL,
+ [TestType] [nvarchar](8) NOT NULL,
+ [Version] [nvarchar](4) NOT NULL,
+ [ProdCode] [nvarchar](4) NOT NULL,
+ [TestListFileNo] [int] NULL,
+ [TestListVariantNo] [int] NULL,
+ [TestListCntID] [nvarchar](256) NULL,
+ [StepVersion] [int] NULL,
+ [HostID] [nvarchar](64) NOT NULL,
+ [Section] [nvarchar](64) NOT NULL,
+ [ProdNo_C] [nvarchar](32) NOT NULL,
+ [ProdNo_P] [nvarchar](32) NOT NULL,
+ [Testcode] [nvarchar](16) NOT NULL,
+ [TestListFileName] [nvarchar](256) NOT NULL,
+ [ProductID] [nvarchar](64) NOT NULL,
+ [Result] [nvarchar](16) NOT NULL,
+ [Duration] [nvarchar](16) NOT NULL,
+ [TestDT] [datetime2](7) NOT NULL,
+ CONSTRAINT [PK_'+@logSummaryTableName+'] PRIMARY KEY CLUSTERED
+ (
+ [No] ASC
+ )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY],
+ UNIQUE NONCLUSTERED
+ (
+ [No] ASC
+ )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
+ ) ON [PRIMARY]
+
+ ALTER TABLE [dbo].['+@logSummaryTableName+'] ADD DEFAULT (''-'') FOR [StationName]
+
+ ALTER TABLE [dbo].['+@logSummaryTableName+'] ADD DEFAULT ((-1)) FOR [TestListFileNo]
+
+ ALTER TABLE [dbo].['+@logSummaryTableName+'] ADD DEFAULT ((-1)) FOR [TestListVariantNo]
+
+ ALTER TABLE [dbo].['+@logSummaryTableName+'] ADD DEFAULT ((-1)) FOR [StepVersion]
+
+ ALTER TABLE [dbo].['+@logSummaryTableName+'] ADD DEFAULT (getdate()) FOR [TestDT]
+
+ CREATE INDEX ['+@logSummaryTableName+'_2] ON '+@logSummaryTableName+' (TestDT, No);
+
+ CREATE INDEX ['+@logSummaryTableName+'_3] ON '+@logSummaryTableName+' (TestDT);
+ ';
+
+ EXEC(@summaryQuery)
+ END
+
+
+ IF NOT EXISTS(SELECT * FROM sys.tables WHERE NAME = @logResultTableName)
+ BEGIN
+ DECLARE @resultQuery nvarchar(4000)= N'
+ CREATE TABLE [dbo].['+@logResultTableName+'](
+ [No] [bigint] NOT NULL,
+ [TestDT] [datetime2](7) NULL,
+ [LogData] [nvarchar](max) NOT NULL,
+ CONSTRAINT [PK_'+@logResultTableName+'] PRIMARY KEY CLUSTERED
+ (
+ [No] ASC
+ )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
+ ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
+
+ ALTER TABLE [dbo].['+@logResultTableName+'] ADD DEFAULT (getdate()) FOR [TestDT]
+
+ CREATE INDEX ['+@logResultTableName+'_2] ON '+@logResultTableName+' (TestDT, No);
+
+ CREATE INDEX ['+@logResultTableName+'_3] ON '+@logResultTableName+' (TestDT);
+ ';
+ EXEC(@resultQuery)
+ END
+RETURN 0
+GO
+/*
+배포 후 스크립트 템플릿
+--------------------------------------------------------------------------------------
+ 이 파일에는 빌드 스크립트에 추가될 SQL 문이 있습니다.
+ SQLCMD 구문을 사용하여 파일을 배포 후 스크립트에 포함합니다.
+ 예: :r .\myfile.sql
+ SQLCMD 구문을 사용하여 배포 후 스크립트의 변수를 참조합니다.
+ 예: :setvar TableName MyTable
+ SELECT * FROM [$(TableName)]
+--------------------------------------------------------------------------------------
+*/
+
+/*10회 루프*/
+DECLARE @CNT INT = 0;
+DECLARE @MAX_CNT INT = 10
+DECLARE @DBNAME varchar(50) = DB_NAME();
+
+IF (@DBNAME LIKE '%short%')
+BEGIN
+ WHILE(@CNT < @MAX_CNT)
+ BEGIN
+
+ DECLARE @yyyy varchar(4) = CONVERT(CHAR(4), DATEADD(YEAR, @CNT, GETDATE()), 23)
+ DECLARE @summary varchar(200) = N'HIST_LogSummary_'+@yyyy
+ DECLARE @result varchar(200) = N'HIST_TestResult_'+@yyyy
+ EXEC [dbo].[spCreateTableByName] @summary , @result
+
+ SET @CNT += 1
+ END
+END
+GO
+
+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'$(DatabaseName)', 'ON';
+ END
+
+
+GO
+ALTER DATABASE [$(DatabaseName)]
+ SET MULTI_USER
+ WITH ROLLBACK IMMEDIATE;
+
+
+GO
+PRINT N'업데이트가 완료되었습니다.';
+
+
+GO
diff --git a/DBPatch/sqlScripts/SystemX.DB.CPXV2_Create.sql b/DBPatch/sqlScripts/SystemX.DB.CPXV2_Create.sql
new file mode 100644
index 0000000..6a33b6f
--- /dev/null
+++ b/DBPatch/sqlScripts/SystemX.DB.CPXV2_Create.sql
@@ -0,0 +1,821 @@
+/*
+SystemX.DB.CPXV2의 배포 스크립트
+
+이 코드는 도구를 사용하여 생성되었습니다.
+파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
+변경 내용이 손실됩니다.
+*/
+
+GO
+SET ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER ON;
+
+SET NUMERIC_ROUNDABORT OFF;
+
+
+GO
+/*
+:setvar DatabaseName "SystemX.DB.CPXV2"
+:setvar DefaultFilePrefix "SystemX.DB.CPXV2"
+:setvar DefaultDataPath ""
+:setvar DefaultLogPath ""
+*/
+
+GO
+:on error exit
+GO
+/*
+SQLCMD 모드가 지원되지 않으면 SQLCMD 모드를 검색하고 스크립트를 실행하지 않습니다.
+SQLCMD 모드를 설정한 후에 이 스크립트를 다시 사용하려면 다음을 실행합니다.
+SET NOEXEC OFF;
+*/
+:setvar __IsSqlCmdEnabled "True"
+GO
+IF N'$(__IsSqlCmdEnabled)' NOT LIKE N'True'
+ BEGIN
+ PRINT N'이 스크립트를 실행하려면 SQLCMD 모드를 사용하도록 설정해야 합니다.';
+ SET NOEXEC ON;
+ END
+
+
+GO
+USE [master];
+
+
+GO
+
+IF (DB_ID(N'$(DatabaseName)') IS NOT NULL)
+BEGIN
+ ALTER DATABASE [$(DatabaseName)]
+ SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
+ DROP DATABASE [$(DatabaseName)];
+END
+
+GO
+PRINT N'$(DatabaseName) 데이터베이스를 만드는 중...'
+GO
+CREATE DATABASE [$(DatabaseName)] COLLATE Korean_Wansung_CI_AS
+GO
+USE [$(DatabaseName)];
+
+
+GO
+IF EXISTS (SELECT 1
+ FROM [master].[dbo].[sysdatabases]
+ WHERE [name] = N'$(DatabaseName)')
+ BEGIN
+ ALTER DATABASE [$(DatabaseName)]
+ SET ANSI_NULLS ON,
+ ANSI_PADDING ON,
+ ANSI_WARNINGS ON,
+ ARITHABORT ON,
+ CONCAT_NULL_YIELDS_NULL ON,
+ NUMERIC_ROUNDABORT OFF,
+ QUOTED_IDENTIFIER ON,
+ ANSI_NULL_DEFAULT ON,
+ CURSOR_DEFAULT LOCAL,
+ RECOVERY FULL,
+ CURSOR_CLOSE_ON_COMMIT OFF,
+ AUTO_CREATE_STATISTICS ON,
+ AUTO_SHRINK OFF,
+ AUTO_UPDATE_STATISTICS ON,
+ RECURSIVE_TRIGGERS OFF
+ WITH ROLLBACK IMMEDIATE;
+ END
+
+
+GO
+IF EXISTS (SELECT 1
+ FROM [master].[dbo].[sysdatabases]
+ WHERE [name] = N'$(DatabaseName)')
+ BEGIN
+ ALTER DATABASE [$(DatabaseName)]
+ SET ALLOW_SNAPSHOT_ISOLATION OFF;
+ END
+
+
+GO
+IF EXISTS (SELECT 1
+ FROM [master].[dbo].[sysdatabases]
+ WHERE [name] = N'$(DatabaseName)')
+ BEGIN
+ ALTER DATABASE [$(DatabaseName)]
+ SET READ_COMMITTED_SNAPSHOT OFF
+ WITH ROLLBACK IMMEDIATE;
+ END
+
+
+GO
+IF EXISTS (SELECT 1
+ FROM [master].[dbo].[sysdatabases]
+ WHERE [name] = N'$(DatabaseName)')
+ BEGIN
+ ALTER DATABASE [$(DatabaseName)]
+ SET AUTO_UPDATE_STATISTICS_ASYNC OFF,
+ PAGE_VERIFY NONE,
+ 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'$(DatabaseName)')
+ BEGIN
+ EXECUTE sp_executesql N'ALTER DATABASE [$(DatabaseName)]
+ SET TRUSTWORTHY OFF,
+ DB_CHAINING OFF
+ WITH ROLLBACK IMMEDIATE';
+ END
+ END
+ELSE
+ BEGIN
+ PRINT N'데이터베이스 설정을 수정할 수 없습니다. 이러한 설정을 적용하려면 SysAdmin이어야 합니다.';
+ END
+
+
+GO
+IF IS_SRVROLEMEMBER(N'sysadmin') = 1
+ BEGIN
+ IF EXISTS (SELECT 1
+ FROM [master].[dbo].[sysdatabases]
+ WHERE [name] = N'$(DatabaseName)')
+ BEGIN
+ EXECUTE sp_executesql N'ALTER DATABASE [$(DatabaseName)]
+ SET HONOR_BROKER_PRIORITY OFF
+ WITH ROLLBACK IMMEDIATE';
+ END
+ END
+ELSE
+ BEGIN
+ PRINT N'데이터베이스 설정을 수정할 수 없습니다. 이러한 설정을 적용하려면 SysAdmin이어야 합니다.';
+ END
+
+
+GO
+ALTER DATABASE [$(DatabaseName)]
+ SET TARGET_RECOVERY_TIME = 0 SECONDS
+ WITH ROLLBACK IMMEDIATE;
+
+
+GO
+IF EXISTS (SELECT 1
+ FROM [master].[dbo].[sysdatabases]
+ WHERE [name] = N'$(DatabaseName)')
+ BEGIN
+ ALTER DATABASE [$(DatabaseName)]
+ SET FILESTREAM(NON_TRANSACTED_ACCESS = OFF),
+ CONTAINMENT = NONE
+ WITH ROLLBACK IMMEDIATE;
+ END
+
+
+GO
+IF EXISTS (SELECT 1
+ FROM [master].[dbo].[sysdatabases]
+ WHERE [name] = N'$(DatabaseName)')
+ BEGIN
+ ALTER DATABASE [$(DatabaseName)]
+ 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'$(DatabaseName)')
+ BEGIN
+ ALTER DATABASE [$(DatabaseName)]
+ SET QUERY_STORE (QUERY_CAPTURE_MODE = ALL, DATA_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'$(DatabaseName)')
+ BEGIN
+ ALTER DATABASE [$(DatabaseName)]
+ SET QUERY_STORE = OFF
+ WITH ROLLBACK IMMEDIATE;
+ END
+
+
+GO
+IF EXISTS (SELECT 1
+ FROM [master].[dbo].[sysdatabases]
+ WHERE [name] = N'$(DatabaseName)')
+ 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
+IF EXISTS (SELECT 1
+ FROM [master].[dbo].[sysdatabases]
+ WHERE [name] = N'$(DatabaseName)')
+ BEGIN
+ ALTER DATABASE [$(DatabaseName)]
+ SET TEMPORAL_HISTORY_RETENTION ON
+ WITH ROLLBACK IMMEDIATE;
+ END
+
+
+GO
+IF fulltextserviceproperty(N'IsFulltextInstalled') = 1
+ EXECUTE sp_fulltext_database 'enable';
+
+
+GO
+PRINT N'테이블 [dbo].[VRFY_TestListFileRelease]을(를) 만드는 중...';
+
+
+GO
+CREATE TABLE [dbo].[VRFY_TestListFileRelease] (
+ [No] BIGINT IDENTITY (0, 1) NOT NULL,
+ [TestListFileNo] INT NULL,
+ [StepID] BIGINT NOT NULL,
+ [Variant] NVARCHAR (32) NOT NULL,
+ [Gate] NVARCHAR (128) NOT NULL,
+ [Activate] BIT NULL,
+ [StepVersion] INT NOT NULL,
+ [Enable] BIT NULL,
+ [Position] BIGINT NULL,
+ [StepDesc] NVARCHAR (2048) NULL,
+ [UseFunction] NVARCHAR (2048) NOT NULL,
+ [MacroParm] NVARCHAR (2048) NULL,
+ [Parm] NVARCHAR (2048) NULL,
+ [SpecMin] NVARCHAR (2048) NOT NULL,
+ [SpecMax] NVARCHAR (2048) NOT NULL,
+ [IsGlobal] BIT NULL,
+ [Dim] NVARCHAR (64) NOT NULL,
+ [UpdateDT] DATETIME2 (7) NOT NULL,
+ PRIMARY KEY CLUSTERED ([No] ASC) ON [PRIMARY]
+) ON [PRIMARY];
+
+
+GO
+PRINT N'인덱스 [dbo].[VRFY_TestListFileRelease].[CSK_VRFY_Release_2]을(를) 만드는 중...';
+
+
+GO
+CREATE NONCLUSTERED INDEX [CSK_VRFY_Release_2]
+ ON [dbo].[VRFY_TestListFileRelease]([TestListFileNo] ASC, [StepID] ASC, [Enable] ASC, [No] ASC)
+ ON [PRIMARY];
+
+
+GO
+PRINT N'테이블 [dbo].[STOR_TestListFile]을(를) 만드는 중...';
+
+
+GO
+CREATE TABLE [dbo].[STOR_TestListFile] (
+ [No] INT IDENTITY (0, 1) NOT NULL,
+ [Name] NVARCHAR (64) NOT NULL,
+ [TestType] NVARCHAR (8) NOT NULL,
+ [Version] NVARCHAR (4) NOT NULL,
+ [ProdCode] NVARCHAR (4) NOT NULL,
+ [FileName] NVARCHAR (64) NOT NULL,
+ [RegDT] DATETIME2 (7) NOT NULL,
+ [RegUser] NVARCHAR (32) NOT NULL,
+ [UpdateDT] DATETIME2 (7) NOT NULL,
+ [UpdateUser] NVARCHAR (32) NOT NULL,
+ [Comment] NVARCHAR (256) NULL,
+ [Description] NVARCHAR (256) NULL,
+ [TestListData] VARBINARY (MAX) NOT NULL,
+ PRIMARY KEY CLUSTERED ([No] ASC) ON [PRIMARY]
+) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY];
+
+
+GO
+PRINT N'테이블 [dbo].[STAT_User]을(를) 만드는 중...';
+
+
+GO
+CREATE TABLE [dbo].[STAT_User] (
+ [No] INT IDENTITY (0, 1) NOT NULL,
+ [UserID] NVARCHAR (32) NOT NULL,
+ [Name] NVARCHAR (32) NOT NULL,
+ [Password] NVARCHAR (32) NOT NULL,
+ [Dept] NVARCHAR (64) NOT NULL,
+ [Email] NVARCHAR (64) NOT NULL,
+ [Comment] NVARCHAR (256) NULL,
+ [UpdateDT] DATETIME2 (7) NOT NULL,
+ PRIMARY KEY CLUSTERED ([No] ASC) ON [PRIMARY],
+ UNIQUE NONCLUSTERED ([UserID] ASC) ON [PRIMARY]
+) ON [PRIMARY];
+
+
+GO
+PRINT N'테이블 [dbo].[STAT_TestCode]을(를) 만드는 중...';
+
+
+GO
+CREATE TABLE [dbo].[STAT_TestCode] (
+ [No] INT IDENTITY (0, 1) NOT NULL,
+ [TestCode] NVARCHAR (16) NOT NULL,
+ [Gate1] NVARCHAR (64) NOT NULL,
+ [Gate2] NVARCHAR (64) NOT NULL,
+ [Comment] NVARCHAR (256) NULL,
+ PRIMARY KEY CLUSTERED ([No] ASC) ON [PRIMARY],
+ UNIQUE NONCLUSTERED ([TestCode] ASC) ON [PRIMARY]
+) ON [PRIMARY];
+
+
+GO
+PRINT N'테이블 [dbo].[STAT_Host]을(를) 만드는 중...';
+
+
+GO
+CREATE TABLE [dbo].[STAT_Host] (
+ [No] INT IDENTITY (0, 1) NOT NULL,
+ [HostID] NVARCHAR (64) NOT NULL,
+ [Section] NVARCHAR (64) NOT NULL,
+ [IP] NVARCHAR (15) NOT NULL,
+ [TestCode] NVARCHAR (16) NULL,
+ [Comment] NVARCHAR (256) NULL,
+ [UpdateDT] DATETIME2 (7) NOT NULL,
+ PRIMARY KEY CLUSTERED ([No] ASC) ON [PRIMARY]
+) ON [PRIMARY];
+
+
+GO
+PRINT N'테이블 [dbo].[PROD_Variant]을(를) 만드는 중...';
+
+
+GO
+CREATE TABLE [dbo].[PROD_Variant] (
+ [No] INT IDENTITY (0, 1) NOT NULL,
+ [ProdNo_P] NVARCHAR (32) NOT NULL,
+ [RegDT] DATETIME2 (7) NOT NULL,
+ [RegUser] NVARCHAR (32) NOT NULL,
+ [UpdateDT] DATETIME2 (7) NOT NULL,
+ [UpdateUser] NVARCHAR (32) NOT NULL,
+ [GroupNo] INT NULL,
+ [Comment] NVARCHAR (256) NULL,
+ [Description] NVARCHAR (256) NULL,
+ [TestListFileNo] INT NULL,
+ [UseTLPosition] INT NOT NULL,
+ [IsUse] BIT NOT NULL,
+ PRIMARY KEY CLUSTERED ([No] ASC) ON [PRIMARY]
+) ON [PRIMARY];
+
+
+GO
+PRINT N'테이블 [dbo].[PROD_Release]을(를) 만드는 중...';
+
+
+GO
+CREATE TABLE [dbo].[PROD_Release] (
+ [No] INT IDENTITY (0, 1) NOT NULL,
+ [ProdNo_C] NVARCHAR (32) NOT NULL,
+ [TestCodeNo] INT NULL,
+ [VariantNo] INT NULL,
+ [Config] NVARCHAR (32) NOT NULL,
+ [RegDT] DATETIME2 (7) NOT NULL,
+ [RegUser] NVARCHAR (32) NOT NULL,
+ [RegUserComment] NVARCHAR (256) NULL,
+ PRIMARY KEY CLUSTERED ([No] ASC) ON [PRIMARY]
+) ON [PRIMARY];
+
+
+GO
+PRINT N'테이블 [dbo].[PROD_Group]을(를) 만드는 중...';
+
+
+GO
+CREATE TABLE [dbo].[PROD_Group] (
+ [No] INT IDENTITY (0, 1) NOT NULL,
+ [GroupName] NVARCHAR (128) NOT NULL,
+ [ModelName] NVARCHAR (128) NOT NULL,
+ [Comment] NVARCHAR (256) NULL,
+ PRIMARY KEY CLUSTERED ([No] ASC) ON [PRIMARY],
+ UNIQUE NONCLUSTERED ([ModelName] ASC) ON [PRIMARY]
+) ON [PRIMARY];
+
+
+GO
+PRINT N'테이블 [dbo].[HIST_TestListFileVariantList]을(를) 만드는 중...';
+
+
+GO
+CREATE TABLE [dbo].[HIST_TestListFileVariantList] (
+ [No] BIGINT IDENTITY (0, 1) NOT NULL,
+ [TestListFileNo] INT NULL,
+ [VariantList] NVARCHAR (2048) NULL,
+ PRIMARY KEY CLUSTERED ([No] ASC) ON [PRIMARY]
+) ON [PRIMARY];
+
+
+GO
+PRINT N'인덱스 [dbo].[HIST_TestListFileVariantList].[CSK_HIST_TestListFileVariantList_2]을(를) 만드는 중...';
+
+
+GO
+CREATE NONCLUSTERED INDEX [CSK_HIST_TestListFileVariantList_2]
+ ON [dbo].[HIST_TestListFileVariantList]([TestListFileNo] ASC, [No] ASC)
+ ON [PRIMARY];
+
+
+GO
+PRINT N'테이블 [dbo].[HIST_TestListFileLatestStepVersion]을(를) 만드는 중...';
+
+
+GO
+CREATE TABLE [dbo].[HIST_TestListFileLatestStepVersion] (
+ [No] BIGINT IDENTITY (0, 1) NOT NULL,
+ [TestListFileNo] INT NULL,
+ [LatestStepVersion] INT NOT NULL,
+ PRIMARY KEY CLUSTERED ([No] ASC) ON [PRIMARY]
+) ON [PRIMARY];
+
+
+GO
+PRINT N'테이블 [dbo].[HIST_TestListFile]을(를) 만드는 중...';
+
+
+GO
+CREATE TABLE [dbo].[HIST_TestListFile] (
+ [No] BIGINT IDENTITY (0, 1) NOT NULL,
+ [TestListFileNo] INT NULL,
+ [Name] NVARCHAR (64) NOT NULL,
+ [TestListData1] VARBINARY (MAX) NULL,
+ [TestListData2] VARBINARY (MAX) NULL,
+ [TestListData3] VARBINARY (MAX) NULL,
+ [TestListData4] VARBINARY (MAX) NULL,
+ [TestListData5] VARBINARY (MAX) NULL,
+ [TestListData6] VARBINARY (MAX) NULL,
+ [TestListData7] VARBINARY (MAX) NULL,
+ [TestListData8] VARBINARY (MAX) NULL,
+ [TestListData9] VARBINARY (MAX) NULL,
+ [TestListData10] VARBINARY (MAX) NULL,
+ PRIMARY KEY CLUSTERED ([No] ASC) ON [PRIMARY]
+) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY];
+
+
+GO
+PRINT N'인덱스 [dbo].[HIST_TestListFile].[CSK_HIST_TestList_2]을(를) 만드는 중...';
+
+
+GO
+CREATE NONCLUSTERED INDEX [CSK_HIST_TestList_2]
+ ON [dbo].[HIST_TestListFile]([TestListFileNo] ASC, [Name] ASC, [No] ASC)
+ ON [PRIMARY];
+
+
+GO
+PRINT N'테이블 [dbo].[HIST_TesterSummary]을(를) 만드는 중...';
+
+
+GO
+CREATE TABLE [dbo].[HIST_TesterSummary] (
+ [No] BIGINT IDENTITY (0, 1) NOT NULL,
+ [StationName] NVARCHAR (128) NULL,
+ [TestType] NVARCHAR (8) NOT NULL,
+ [Version] NVARCHAR (4) NOT NULL,
+ [ProdCode] NVARCHAR (4) NOT NULL,
+ [TestListFileNo] INT NULL,
+ [TestListVariantNo] INT NULL,
+ [TestListCntID] NVARCHAR (256) NULL,
+ [StepVersion] INT NULL,
+ [HostID] NVARCHAR (64) NOT NULL,
+ [Section] NVARCHAR (64) NOT NULL,
+ [ProdNo_C] NVARCHAR (32) NOT NULL,
+ [ProdNo_P] NVARCHAR (32) NOT NULL,
+ [Testcode] NVARCHAR (16) NOT NULL,
+ [TestListFileName] NVARCHAR (256) NOT NULL,
+ [ProductID] NVARCHAR (64) NOT NULL,
+ [Result] NVARCHAR (16) NOT NULL,
+ [Duration] NVARCHAR (16) NOT NULL,
+ [TestDT] DATETIME2 (7) NOT NULL,
+ UNIQUE NONCLUSTERED ([No] ASC) ON [PRIMARY]
+) ON [PRIMARY];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[VRFY_TestListFileRelease]
+ ADD DEFAULT ((1)) FOR [Activate];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[VRFY_TestListFileRelease]
+ ADD DEFAULT ((1)) FOR [Enable];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[VRFY_TestListFileRelease]
+ ADD DEFAULT ('') FOR [StepDesc];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[VRFY_TestListFileRelease]
+ ADD DEFAULT ((0)) FOR [IsGlobal];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[VRFY_TestListFileRelease]
+ ADD DEFAULT (getdate()) FOR [UpdateDT];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[STOR_TestListFile]
+ ADD DEFAULT (getdate()) FOR [RegDT];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[STOR_TestListFile]
+ ADD DEFAULT (getdate()) FOR [UpdateDT];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[STAT_User]
+ ADD DEFAULT (getdate()) FOR [UpdateDT];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[STAT_Host]
+ ADD DEFAULT (getdate()) FOR [UpdateDT];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[PROD_Variant]
+ ADD DEFAULT (getdate()) FOR [RegDT];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[PROD_Variant]
+ ADD DEFAULT (getdate()) FOR [UpdateDT];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[PROD_Variant]
+ ADD DEFAULT ((0)) FOR [UseTLPosition];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[PROD_Variant]
+ ADD DEFAULT ((1)) FOR [IsUse];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[PROD_Release]
+ ADD DEFAULT (getdate()) FOR [RegDT];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[HIST_TesterSummary]
+ ADD DEFAULT ('-') FOR [StationName];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[HIST_TesterSummary]
+ ADD DEFAULT ((-1)) FOR [TestListFileNo];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[HIST_TesterSummary]
+ ADD DEFAULT ((-1)) FOR [TestListVariantNo];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[HIST_TesterSummary]
+ ADD DEFAULT ((-1)) FOR [StepVersion];
+
+
+GO
+PRINT N'DEFAULT 제약 조건 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[HIST_TesterSummary]
+ ADD DEFAULT (getdate()) FOR [TestDT];
+
+
+GO
+PRINT N'외래 키 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[VRFY_TestListFileRelease]
+ ADD FOREIGN KEY ([TestListFileNo]) REFERENCES [dbo].[STOR_TestListFile] ([No]) ON DELETE SET NULL;
+
+
+GO
+PRINT N'외래 키 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[PROD_Variant]
+ ADD FOREIGN KEY ([GroupNo]) REFERENCES [dbo].[PROD_Group] ([No]) ON DELETE SET NULL;
+
+
+GO
+PRINT N'외래 키 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[PROD_Variant]
+ ADD FOREIGN KEY ([TestListFileNo]) REFERENCES [dbo].[STOR_TestListFile] ([No]) ON DELETE SET NULL;
+
+
+GO
+PRINT N'외래 키 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[PROD_Release]
+ ADD FOREIGN KEY ([TestCodeNo]) REFERENCES [dbo].[STAT_TestCode] ([No]) ON DELETE SET NULL;
+
+
+GO
+PRINT N'외래 키 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[PROD_Release]
+ ADD FOREIGN KEY ([VariantNo]) REFERENCES [dbo].[PROD_Variant] ([No]) ON DELETE SET NULL;
+
+
+GO
+PRINT N'외래 키 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[HIST_TestListFileVariantList]
+ ADD FOREIGN KEY ([TestListFileNo]) REFERENCES [dbo].[STOR_TestListFile] ([No]) ON DELETE SET NULL;
+
+
+GO
+PRINT N'외래 키 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[HIST_TestListFileLatestStepVersion]
+ ADD FOREIGN KEY ([TestListFileNo]) REFERENCES [dbo].[STOR_TestListFile] ([No]) ON DELETE SET NULL;
+
+
+GO
+PRINT N'외래 키 <이름 없음>을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[HIST_TestListFile]
+ ADD FOREIGN KEY ([TestListFileNo]) REFERENCES [dbo].[STOR_TestListFile] ([No]) ON DELETE SET NULL;
+
+
+GO
+PRINT N'CHECK 제약 조건 [dbo].[CK_PROD_TestList_UseTLPosition_2]을(를) 만드는 중...';
+
+
+GO
+ALTER TABLE [dbo].[PROD_Variant]
+ ADD CONSTRAINT [CK_PROD_TestList_UseTLPosition_2] CHECK (([UseTLPosition]>=(0) AND [UseTLPosition]<=(10)));
+
+
+GO
+PRINT N'프로시저 [dbo].[spGetDBList]을(를) 만드는 중...';
+
+
+GO
+CREATE PROCEDURE [dbo].[spGetDBList]
+
+AS
+ SELECT name FROM SYS.DATABASES WHERE name LIKE '%CPXV%'
+RETURN 0
+GO
+/*
+배포 후 스크립트 템플릿
+--------------------------------------------------------------------------------------
+ 이 파일에는 빌드 스크립트에 추가될 SQL 문이 있습니다.
+ SQLCMD 구문을 사용하여 파일을 배포 후 스크립트에 포함합니다.
+ 예: :r .\myfile.sql
+ SQLCMD 구문을 사용하여 배포 후 스크립트의 변수를 참조합니다.
+ 예: :setvar TableName MyTable
+ SELECT * FROM [$(TableName)]
+--------------------------------------------------------------------------------------
+*/
+
+--CPXV2 STAT_User 추가
+INSERT INTO STAT_User (UserID, Name, Password, Dept, Email, Comment) VALUES ('Admin', 'Admin', 'Kefico!@34', 'Admin', 'systemx2051@gmail.com', 'Administrator');
+GO
+
+INSERT INTO STAT_User (UserID, Name, Password, Dept, Email, Comment) VALUES ('SystemX', 'SystemX', 'Kefico!@34', 'SystemX', 'systemx2051@gmail.com', 'SystemX');
+GO
+
+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'$(DatabaseName)', 'ON';
+ END
+
+
+GO
+ALTER DATABASE [$(DatabaseName)]
+ SET MULTI_USER
+ WITH ROLLBACK IMMEDIATE;
+
+
+GO
+PRINT N'업데이트가 완료되었습니다.';
+
+
+GO
diff --git a/DBPatch/sqlScripts/dacpac/SystemX.DB.CPXV2.dacpac b/DBPatch/sqlScripts/dacpac/SystemX.DB.CPXV2.dacpac
new file mode 100644
index 0000000..ed99e7d
Binary files /dev/null and b/DBPatch/sqlScripts/dacpac/SystemX.DB.CPXV2.dacpac differ
diff --git a/DBPatch/sqlScripts/dacpac/SystemX.DB.CPXV2Log.dacpac b/DBPatch/sqlScripts/dacpac/SystemX.DB.CPXV2Log.dacpac
new file mode 100644
index 0000000..09f24c2
Binary files /dev/null and b/DBPatch/sqlScripts/dacpac/SystemX.DB.CPXV2Log.dacpac differ
diff --git a/Projects/DLL/SystemX.Core.DB.dll b/Projects/DLL/SystemX.Core.DB.dll
index 6bba90a..e4b80f6 100644
Binary files a/Projects/DLL/SystemX.Core.DB.dll and b/Projects/DLL/SystemX.Core.DB.dll differ
diff --git a/Projects/DLL/SystemX.Core.dll b/Projects/DLL/SystemX.Core.dll
index b113d4a..6c77ffe 100644
Binary files a/Projects/DLL/SystemX.Core.dll and b/Projects/DLL/SystemX.Core.dll differ
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/SystemX.DB.CPXV2.sqlproj b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/SystemX.DB.CPXV2.sqlproj
new file mode 100644
index 0000000..f0a9989
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/SystemX.DB.CPXV2.sqlproj
@@ -0,0 +1,89 @@
+
+
+
+ Debug
+ AnyCPU
+ SystemX.DB.CPXV2
+ 2.0
+ 4.1
+ {3a2d7552-9c12-489f-8a0b-330e000c860d}
+ Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider
+ Database
+
+
+ SystemX.DB.CPXV2
+ SystemX.DB.CPXV2
+ 1042,CI
+ BySchemaAndSchemaType
+ True
+ v4.7.2
+ CS
+ Properties
+ False
+ True
+ True
+ True
+ Korean_Wansung_CI_AS
+
+
+ bin\Release\
+ $(MSBuildProjectName).sql
+ False
+ pdbonly
+ true
+ false
+ true
+ prompt
+ 4
+
+
+ bin\Debug\
+ $(MSBuildProjectName).sql
+ false
+ true
+ full
+ false
+ true
+ true
+ prompt
+ 4
+
+
+ 11.0
+
+ True
+ 11.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ xcopy /y $(ProjectDir)$(OutputPath)$(TargetName)_Create.sql $(SolutionDir)..\..\DBPatch\sqlScripts\
+
+xcopy /y $(ProjectDir)$(OutputPath)$(TargetName).dacpac $(SolutionDir)..\..\DBPatch\sqlScripts\dacpac\
+
+
\ No newline at end of file
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Scripts/scriptAfterBuild.sql b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Scripts/scriptAfterBuild.sql
new file mode 100644
index 0000000..65ed61d
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Scripts/scriptAfterBuild.sql
@@ -0,0 +1,18 @@
+/*
+배포 후 스크립트 템플릿
+--------------------------------------------------------------------------------------
+ 이 파일에는 빌드 스크립트에 추가될 SQL 문이 있습니다.
+ SQLCMD 구문을 사용하여 파일을 배포 후 스크립트에 포함합니다.
+ 예: :r .\myfile.sql
+ SQLCMD 구문을 사용하여 배포 후 스크립트의 변수를 참조합니다.
+ 예: :setvar TableName MyTable
+ SELECT * FROM [$(TableName)]
+--------------------------------------------------------------------------------------
+*/
+
+--CPXV2 STAT_User 추가
+INSERT INTO STAT_User (UserID, Name, Password, Dept, Email, Comment) VALUES ('Admin', 'Admin', 'Kefico!@34', 'Admin', 'systemx2051@gmail.com', 'Administrator');
+GO
+
+INSERT INTO STAT_User (UserID, Name, Password, Dept, Email, Comment) VALUES ('SystemX', 'SystemX', 'Kefico!@34', 'SystemX', 'systemx2051@gmail.com', 'SystemX');
+GO
\ No newline at end of file
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/SotredProcedures/spGetDBList.sql b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/SotredProcedures/spGetDBList.sql
new file mode 100644
index 0000000..f2bfd09
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/SotredProcedures/spGetDBList.sql
@@ -0,0 +1,5 @@
+CREATE PROCEDURE [dbo].[spGetDBList]
+
+AS
+ SELECT name FROM SYS.DATABASES WHERE name LIKE '%CPXV%'
+RETURN 0
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/HIST_TestListFile.sql b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/HIST_TestListFile.sql
new file mode 100644
index 0000000..5b933d5
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/HIST_TestListFile.sql
@@ -0,0 +1,28 @@
+CREATE TABLE [dbo].[HIST_TestListFile](
+ [No] [bigint] IDENTITY(0,1) NOT NULL,
+ [TestListFileNo] [int] NULL,
+ [Name] [nvarchar](64) NOT NULL,
+ [TestListData1] [varbinary](max) NULL,
+ [TestListData2] [varbinary](max) NULL,
+ [TestListData3] [varbinary](max) NULL,
+ [TestListData4] [varbinary](max) NULL,
+ [TestListData5] [varbinary](max) NULL,
+ [TestListData6] [varbinary](max) NULL,
+ [TestListData7] [varbinary](max) NULL,
+ [TestListData8] [varbinary](max) NULL,
+ [TestListData9] [varbinary](max) NULL,
+ [TestListData10] [varbinary](max) NULL,
+PRIMARY KEY CLUSTERED
+(
+ [No] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
+) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
+GO
+
+ALTER TABLE [dbo].[HIST_TestListFile] WITH CHECK ADD FOREIGN KEY([TestListFileNo])
+REFERENCES [dbo].[STOR_TestListFile] ([No])
+ON DELETE SET NULL
+GO
+
+CREATE INDEX [CSK_HIST_TestList_2] ON HIST_TestListFile (TestListFileNo, Name, No);
+GO
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/HIST_TestListFileLatestStepVersion.sql b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/HIST_TestListFileLatestStepVersion.sql
new file mode 100644
index 0000000..8ece897
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/HIST_TestListFileLatestStepVersion.sql
@@ -0,0 +1,17 @@
+CREATE TABLE [dbo].[HIST_TestListFileLatestStepVersion](
+ [No] [bigint] IDENTITY(0,1) NOT NULL,
+ [TestListFileNo] [int] NULL,
+ [LatestStepVersion] [int] NOT NULL,
+PRIMARY KEY CLUSTERED
+(
+ [No] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+
+ALTER TABLE [dbo].[HIST_TestListFileLatestStepVersion] WITH CHECK ADD FOREIGN KEY([TestListFileNo])
+REFERENCES [dbo].[STOR_TestListFile] ([No])
+ON DELETE SET NULL
+GO
+
+
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/HIST_TestListFileVariantList.sql b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/HIST_TestListFileVariantList.sql
new file mode 100644
index 0000000..b318f75
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/HIST_TestListFileVariantList.sql
@@ -0,0 +1,18 @@
+CREATE TABLE [dbo].[HIST_TestListFileVariantList](
+ [No] [bigint] IDENTITY(0,1) NOT NULL,
+ [TestListFileNo] [int] NULL,
+ [VariantList] [nvarchar](2048) NULL,
+PRIMARY KEY CLUSTERED
+(
+ [No] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+
+ALTER TABLE [dbo].[HIST_TestListFileVariantList] WITH CHECK ADD FOREIGN KEY([TestListFileNo])
+REFERENCES [dbo].[STOR_TestListFile] ([No])
+ON DELETE SET NULL
+GO
+
+CREATE INDEX [CSK_HIST_TestListFileVariantList_2] ON HIST_TestListFileVariantList (TestListFileNo, No);
+GO
\ No newline at end of file
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/HIST_TesterSummary.sql b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/HIST_TesterSummary.sql
new file mode 100644
index 0000000..0f09069
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/HIST_TesterSummary.sql
@@ -0,0 +1,43 @@
+CREATE TABLE [dbo].[HIST_TesterSummary](
+ [No] [bigint] IDENTITY(0,1) NOT NULL,
+ [StationName] [nvarchar](128) NULL,
+ [TestType] [nvarchar](8) NOT NULL,
+ [Version] [nvarchar](4) NOT NULL,
+ [ProdCode] [nvarchar](4) NOT NULL,
+ [TestListFileNo] [int] NULL,
+ [TestListVariantNo] [int] NULL,
+ [TestListCntID] [nvarchar](256) NULL,
+ [StepVersion] [int] NULL,
+ [HostID] [nvarchar](64) NOT NULL,
+ [Section] [nvarchar](64) NOT NULL,
+ [ProdNo_C] [nvarchar](32) NOT NULL,
+ [ProdNo_P] [nvarchar](32) NOT NULL,
+ [Testcode] [nvarchar](16) NOT NULL,
+ [TestListFileName] [nvarchar](256) NOT NULL,
+ [ProductID] [nvarchar](64) NOT NULL,
+ [Result] [nvarchar](16) NOT NULL,
+ [Duration] [nvarchar](16) NOT NULL,
+ [TestDT] [datetime2](7) NOT NULL,
+UNIQUE NONCLUSTERED
+(
+ [No] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+
+ALTER TABLE [dbo].[HIST_TesterSummary] ADD DEFAULT ('-') FOR [StationName]
+GO
+
+ALTER TABLE [dbo].[HIST_TesterSummary] ADD DEFAULT ((-1)) FOR [TestListFileNo]
+GO
+
+ALTER TABLE [dbo].[HIST_TesterSummary] ADD DEFAULT ((-1)) FOR [TestListVariantNo]
+GO
+
+ALTER TABLE [dbo].[HIST_TesterSummary] ADD DEFAULT ((-1)) FOR [StepVersion]
+GO
+
+ALTER TABLE [dbo].[HIST_TesterSummary] ADD DEFAULT (getdate()) FOR [TestDT]
+GO
+
+
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/PROD_Group.sql b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/PROD_Group.sql
new file mode 100644
index 0000000..ef5f484
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/PROD_Group.sql
@@ -0,0 +1,17 @@
+CREATE TABLE [dbo].[PROD_Group](
+ [No] [int] IDENTITY(0,1) NOT NULL,
+ [GroupName] [nvarchar](128) NOT NULL,
+ [ModelName] [nvarchar](128) NOT NULL,
+ [Comment] [nvarchar](256) NULL,
+PRIMARY KEY CLUSTERED
+(
+ [No] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY],
+UNIQUE NONCLUSTERED
+(
+ [ModelName] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+
+
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/PROD_Release.sql b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/PROD_Release.sql
new file mode 100644
index 0000000..cc57a7e
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/PROD_Release.sql
@@ -0,0 +1,30 @@
+CREATE TABLE [dbo].[PROD_Release](
+ [No] [int] IDENTITY(0,1) NOT NULL,
+ [ProdNo_C] [nvarchar](32) NOT NULL,
+ [TestCodeNo] [int] NULL,
+ [VariantNo] [int] NULL,
+ [Config] [nvarchar](32) NOT NULL,
+ [RegDT] [datetime2](7) NOT NULL,
+ [RegUser] [nvarchar](32) NOT NULL,
+ [RegUserComment] [nvarchar](256) NULL,
+PRIMARY KEY CLUSTERED
+(
+ [No] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+
+ALTER TABLE [dbo].[PROD_Release] ADD DEFAULT (getdate()) FOR [RegDT]
+GO
+
+ALTER TABLE [dbo].[PROD_Release] WITH CHECK ADD FOREIGN KEY([TestCodeNo])
+REFERENCES [dbo].[STAT_TestCode] ([No])
+ON DELETE SET NULL
+GO
+
+ALTER TABLE [dbo].[PROD_Release] WITH CHECK ADD FOREIGN KEY([VariantNo])
+REFERENCES [dbo].[PROD_Variant] ([No])
+ON DELETE SET NULL
+GO
+
+
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/PROD_Variant.sql b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/PROD_Variant.sql
new file mode 100644
index 0000000..313ed6c
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/PROD_Variant.sql
@@ -0,0 +1,49 @@
+CREATE TABLE [dbo].[PROD_Variant](
+ [No] [int] IDENTITY(0,1) NOT NULL,
+ [ProdNo_P] [nvarchar](32) NOT NULL,
+ [RegDT] [datetime2](7) NOT NULL,
+ [RegUser] [nvarchar](32) NOT NULL,
+ [UpdateDT] [datetime2](7) NOT NULL,
+ [UpdateUser] [nvarchar](32) NOT NULL,
+ [GroupNo] [int] NULL,
+ [Comment] [nvarchar](256) NULL,
+ [Description] [nvarchar](256) NULL,
+ [TestListFileNo] [int] NULL,
+ [UseTLPosition] [int] NOT NULL,
+ [IsUse] [bit] NOT NULL,
+PRIMARY KEY CLUSTERED
+(
+ [No] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+
+ALTER TABLE [dbo].[PROD_Variant] ADD DEFAULT (getdate()) FOR [RegDT]
+GO
+
+ALTER TABLE [dbo].[PROD_Variant] ADD DEFAULT (getdate()) FOR [UpdateDT]
+GO
+
+ALTER TABLE [dbo].[PROD_Variant] ADD DEFAULT ((0)) FOR [UseTLPosition]
+GO
+
+ALTER TABLE [dbo].[PROD_Variant] ADD DEFAULT ((1)) FOR [IsUse]
+GO
+
+ALTER TABLE [dbo].[PROD_Variant] WITH CHECK ADD FOREIGN KEY([GroupNo])
+REFERENCES [dbo].[PROD_Group] ([No])
+ON DELETE SET NULL
+GO
+
+ALTER TABLE [dbo].[PROD_Variant] WITH CHECK ADD FOREIGN KEY([TestListFileNo])
+REFERENCES [dbo].[STOR_TestListFile] ([No])
+ON DELETE SET NULL
+GO
+
+ALTER TABLE [dbo].[PROD_Variant] WITH CHECK ADD CONSTRAINT [CK_PROD_TestList_UseTLPosition_2] CHECK (([UseTLPosition]>=(0) AND [UseTLPosition]<=(10)))
+GO
+
+ALTER TABLE [dbo].[PROD_Variant] CHECK CONSTRAINT [CK_PROD_TestList_UseTLPosition_2]
+GO
+
+
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/STAT_Host.sql b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/STAT_Host.sql
new file mode 100644
index 0000000..55a0c10
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/STAT_Host.sql
@@ -0,0 +1,19 @@
+CREATE TABLE [dbo].[STAT_Host](
+ [No] [int] IDENTITY(0,1) NOT NULL,
+ [HostID] [nvarchar](64) NOT NULL,
+ [Section] [nvarchar](64) NOT NULL,
+ [IP] [nvarchar](15) NOT NULL,
+ [TestCode] [nvarchar](16) NULL,
+ [Comment] [nvarchar](256) NULL,
+ [UpdateDT] [datetime2](7) NOT NULL,
+PRIMARY KEY CLUSTERED
+(
+ [No] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+
+ALTER TABLE [dbo].[STAT_Host] ADD DEFAULT (getdate()) FOR [UpdateDT]
+GO
+
+
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/STAT_TestCode.sql b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/STAT_TestCode.sql
new file mode 100644
index 0000000..15d1e2a
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/STAT_TestCode.sql
@@ -0,0 +1,18 @@
+CREATE TABLE [dbo].[STAT_TestCode](
+ [No] [int] IDENTITY(0,1) NOT NULL,
+ [TestCode] [nvarchar](16) NOT NULL,
+ [Gate1] [nvarchar](64) NOT NULL,
+ [Gate2] [nvarchar](64) NOT NULL,
+ [Comment] [nvarchar](256) NULL,
+PRIMARY KEY CLUSTERED
+(
+ [No] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY],
+UNIQUE NONCLUSTERED
+(
+ [TestCode] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+
+
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/STAT_User.sql b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/STAT_User.sql
new file mode 100644
index 0000000..224abf0
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/STAT_User.sql
@@ -0,0 +1,24 @@
+CREATE TABLE [dbo].[STAT_User](
+ [No] [int] IDENTITY(0,1) NOT NULL,
+ [UserID] [nvarchar](32) NOT NULL,
+ [Name] [nvarchar](32) NOT NULL,
+ [Password] [nvarchar](32) NOT NULL,
+ [Dept] [nvarchar](64) NOT NULL,
+ [Email] [nvarchar](64) NOT NULL,
+ [Comment] [nvarchar](256) NULL,
+ [UpdateDT] [datetime2](7) NOT NULL,
+PRIMARY KEY CLUSTERED
+(
+ [No] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY],
+UNIQUE NONCLUSTERED
+(
+ [UserID] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+
+ALTER TABLE [dbo].[STAT_User] ADD DEFAULT (getdate()) FOR [UpdateDT]
+GO
+
+
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/STOR_TestListFile.sql b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/STOR_TestListFile.sql
new file mode 100644
index 0000000..03f7b4b
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/STOR_TestListFile.sql
@@ -0,0 +1,28 @@
+CREATE TABLE [dbo].[STOR_TestListFile](
+ [No] [int] IDENTITY(0,1) NOT NULL,
+ [Name] [nvarchar](64) NOT NULL,
+ [TestType] [nvarchar](8) NOT NULL,
+ [Version] [nvarchar](4) NOT NULL,
+ [ProdCode] [nvarchar](4) NOT NULL,
+ [FileName] [nvarchar](64) NOT NULL,
+ [RegDT] [datetime2](7) NOT NULL,
+ [RegUser] [nvarchar](32) NOT NULL,
+ [UpdateDT] [datetime2](7) NOT NULL,
+ [UpdateUser] [nvarchar](32) NOT NULL,
+ [Comment] [nvarchar](256) NULL,
+ [Description] [nvarchar](256) NULL,
+ [TestListData] [varbinary](max) NOT NULL,
+PRIMARY KEY CLUSTERED
+(
+ [No] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
+) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
+GO
+
+ALTER TABLE [dbo].[STOR_TestListFile] ADD DEFAULT (getdate()) FOR [RegDT]
+GO
+
+ALTER TABLE [dbo].[STOR_TestListFile] ADD DEFAULT (getdate()) FOR [UpdateDT]
+GO
+
+
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/VRFY_TestListFileRelease.sql b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/VRFY_TestListFileRelease.sql
new file mode 100644
index 0000000..f68cbcf
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2/dbo/Tables/VRFY_TestListFileRelease.sql
@@ -0,0 +1,48 @@
+CREATE TABLE [dbo].[VRFY_TestListFileRelease](
+ [No] [bigint] IDENTITY(0,1) NOT NULL,
+ [TestListFileNo] [int] NULL,
+ [StepID] [bigint] NOT NULL,
+ [Variant] [nvarchar](32) NOT NULL,
+ [Gate] [nvarchar](128) NOT NULL,
+ [Activate] [bit] NULL,
+ [StepVersion] [int] NOT NULL,
+ [Enable] [bit] NULL,
+ [Position] [bigint] NULL,
+ [StepDesc] [nvarchar](2048) NULL,
+ [UseFunction] [nvarchar](2048) NOT NULL,
+ [MacroParm] [nvarchar](2048) NULL,
+ [Parm] [nvarchar](2048) NULL,
+ [SpecMin] [nvarchar](2048) NOT NULL,
+ [SpecMax] [nvarchar](2048) NOT NULL,
+ [IsGlobal] [bit] NULL,
+ [Dim] [nvarchar](64) NOT NULL,
+ [UpdateDT] [datetime2](7) NOT NULL,
+PRIMARY KEY CLUSTERED
+(
+ [No] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+
+ALTER TABLE [dbo].[VRFY_TestListFileRelease] ADD DEFAULT ((1)) FOR [Activate]
+GO
+
+ALTER TABLE [dbo].[VRFY_TestListFileRelease] ADD DEFAULT ((1)) FOR [Enable]
+GO
+
+ALTER TABLE [dbo].[VRFY_TestListFileRelease] ADD DEFAULT ('') FOR [StepDesc]
+GO
+
+ALTER TABLE [dbo].[VRFY_TestListFileRelease] ADD DEFAULT ((0)) FOR [IsGlobal]
+GO
+
+ALTER TABLE [dbo].[VRFY_TestListFileRelease] ADD DEFAULT (getdate()) FOR [UpdateDT]
+GO
+
+ALTER TABLE [dbo].[VRFY_TestListFileRelease] WITH NOCHECK ADD FOREIGN KEY([TestListFileNo])
+REFERENCES [dbo].[STOR_TestListFile] ([No])
+ON DELETE SET NULL
+GO
+
+CREATE INDEX [CSK_VRFY_Release_2] ON VRFY_TestListFileRelease (TestListFileNo, StepID, Enable, No);
+GO
\ No newline at end of file
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/SystemX.DB.CPXV2Log.sqlproj b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/SystemX.DB.CPXV2Log.sqlproj
new file mode 100644
index 0000000..87539c6
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/SystemX.DB.CPXV2Log.sqlproj
@@ -0,0 +1,82 @@
+
+
+
+ Debug
+ AnyCPU
+ SystemX.DB.CPXV2Log
+ 2.0
+ 4.1
+ {d9439c52-76b5-4908-9b0d-43d1f52ec942}
+ Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider
+ Database
+
+
+ SystemX.DB.CPXV2Log
+ SystemX.DB.CPXV2Log
+ 1042,CI
+ BySchemaAndSchemaType
+ True
+ v4.7.2
+ CS
+ Properties
+ False
+ True
+ True
+ True
+ Korean_Wansung_CI_AS
+
+
+ bin\Release\
+ $(MSBuildProjectName).sql
+ False
+ pdbonly
+ true
+ false
+ true
+ prompt
+ 4
+
+
+ bin\Debug\
+ $(MSBuildProjectName).sql
+ false
+ true
+ full
+ false
+ true
+ true
+ prompt
+ 4
+
+
+ 11.0
+
+ True
+ 11.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ xcopy /y $(ProjectDir)$(OutputPath)$(TargetName)_Create.sql $(SolutionDir)..\..\DBPatch\sqlScripts\
+
+xcopy /y $(ProjectDir)$(OutputPath)$(TargetName).dacpac $(SolutionDir)..\..\DBPatch\sqlScripts\dacpac\
+
+
\ No newline at end of file
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/dbo/Functions/Scala/XConvertDateE.sql b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/dbo/Functions/Scala/XConvertDateE.sql
new file mode 100644
index 0000000..bd47a50
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/dbo/Functions/Scala/XConvertDateE.sql
@@ -0,0 +1,23 @@
+-- =============================================
+-- Author:
+-- Create date:
+-- Description:
+-- =============================================
+CREATE FUNCTION [dbo].[XConvertDateE]
+(
+ -- Add the parameters for the function here
+ @date AS VARCHAR(50)
+)
+RETURNS VARCHAR(50)
+ AS
+ BEGIN
+ DECLARE @OutDate datetime2
+ SET @OutDate = CASE WHEN CHARINDEX('PM',@date)>0 and CHARINDEX('PM 12',@date)<=0 THEN
+ DATEADD(HH,12,CONVERT (DATETIME, REPLACE(@date,'PM','')))
+ WHEN CHARINDEX('AM 12',@date)>0 THEN
+ DATEADD(HH,-12,CONVERT (DATETIME, REPLACE(@date,'AM','')))
+ ELSE CONVERT (DATETIME,REPLACE(REPLACE(@date,'AM',''),'PM','') )
+ END
+ RETURN @OutDate
+ END
+GO
\ No newline at end of file
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/dbo/Functions/Scala/XConvertDateK.sql b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/dbo/Functions/Scala/XConvertDateK.sql
new file mode 100644
index 0000000..332e00f
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/dbo/Functions/Scala/XConvertDateK.sql
@@ -0,0 +1,25 @@
+-- =============================================
+-- Author:
+-- Create date:
+-- Description:
+-- =============================================
+CREATE FUNCTION [dbo].[XConvertDateK]
+(
+ -- Add the parameters for the function here
+ @date AS VARCHAR(50)
+)
+RETURNS VARCHAR(50)
+ AS
+ BEGIN
+ DECLARE @OutDate datetime2
+ SET @OutDate = CASE WHEN CHARINDEX('오후',@date)>0 and CHARINDEX('오후 12',@date)<=0 THEN
+ DATEADD(HH,12,CONVERT (DATETIME, REPLACE(@date,'오후','')))
+ WHEN CHARINDEX('오전 12',@date)>0 THEN
+ DATEADD(HH,-12,CONVERT (DATETIME, REPLACE(@date,'오전','')))
+ ELSE CONVERT (DATETIME,REPLACE(REPLACE(@date,'오전',''),'오후','') )
+ END
+ RETURN @OutDate
+ END
+GO
+
+
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/dbo/Scripts/scriptCreateTables.sql b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/dbo/Scripts/scriptCreateTables.sql
new file mode 100644
index 0000000..90f8ba7
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/dbo/Scripts/scriptCreateTables.sql
@@ -0,0 +1,31 @@
+/*
+배포 후 스크립트 템플릿
+--------------------------------------------------------------------------------------
+ 이 파일에는 빌드 스크립트에 추가될 SQL 문이 있습니다.
+ SQLCMD 구문을 사용하여 파일을 배포 후 스크립트에 포함합니다.
+ 예: :r .\myfile.sql
+ SQLCMD 구문을 사용하여 배포 후 스크립트의 변수를 참조합니다.
+ 예: :setvar TableName MyTable
+ SELECT * FROM [$(TableName)]
+--------------------------------------------------------------------------------------
+*/
+
+/*10회 루프*/
+DECLARE @CNT INT = 0;
+DECLARE @MAX_CNT INT = 10
+DECLARE @DBNAME varchar(50) = DB_NAME();
+
+IF (@DBNAME LIKE '%short%')
+BEGIN
+ WHILE(@CNT < @MAX_CNT)
+ BEGIN
+
+ DECLARE @yyyy varchar(4) = CONVERT(CHAR(4), DATEADD(YEAR, @CNT, GETDATE()), 23)
+ DECLARE @summary varchar(200) = N'HIST_LogSummary_'+@yyyy
+ DECLARE @result varchar(200) = N'HIST_TestResult_'+@yyyy
+ EXEC [dbo].[spCreateTableByName] @summary , @result
+
+ SET @CNT += 1
+ END
+END
+GO
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/dbo/StoredProcedures/spCreateTableByName.sql b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/dbo/StoredProcedures/spCreateTableByName.sql
new file mode 100644
index 0000000..96a1e81
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/dbo/StoredProcedures/spCreateTableByName.sql
@@ -0,0 +1,78 @@
+CREATE PROCEDURE [dbo].[spCreateTableByName]
+ @logSummaryTableName nvarchar(200),
+ @logResultTableName nvarchar(200)
+AS
+ IF NOT EXISTS(SELECT * FROM sys.tables WHERE NAME = @logSummaryTableName)
+ BEGIN
+ DECLARE @summaryQuery nvarchar(4000)= N'
+ CREATE TABLE [dbo].['+@logSummaryTableName+'](
+ [No] [bigint] IDENTITY(0,1) NOT NULL,
+ [StationName] [nvarchar](128) NULL,
+ [TestType] [nvarchar](8) NOT NULL,
+ [Version] [nvarchar](4) NOT NULL,
+ [ProdCode] [nvarchar](4) NOT NULL,
+ [TestListFileNo] [int] NULL,
+ [TestListVariantNo] [int] NULL,
+ [TestListCntID] [nvarchar](256) NULL,
+ [StepVersion] [int] NULL,
+ [HostID] [nvarchar](64) NOT NULL,
+ [Section] [nvarchar](64) NOT NULL,
+ [ProdNo_C] [nvarchar](32) NOT NULL,
+ [ProdNo_P] [nvarchar](32) NOT NULL,
+ [Testcode] [nvarchar](16) NOT NULL,
+ [TestListFileName] [nvarchar](256) NOT NULL,
+ [ProductID] [nvarchar](64) NOT NULL,
+ [Result] [nvarchar](16) NOT NULL,
+ [Duration] [nvarchar](16) NOT NULL,
+ [TestDT] [datetime2](7) NOT NULL,
+ CONSTRAINT [PK_'+@logSummaryTableName+'] PRIMARY KEY CLUSTERED
+ (
+ [No] ASC
+ )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY],
+ UNIQUE NONCLUSTERED
+ (
+ [No] ASC
+ )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
+ ) ON [PRIMARY]
+
+ ALTER TABLE [dbo].['+@logSummaryTableName+'] ADD DEFAULT (''-'') FOR [StationName]
+
+ ALTER TABLE [dbo].['+@logSummaryTableName+'] ADD DEFAULT ((-1)) FOR [TestListFileNo]
+
+ ALTER TABLE [dbo].['+@logSummaryTableName+'] ADD DEFAULT ((-1)) FOR [TestListVariantNo]
+
+ ALTER TABLE [dbo].['+@logSummaryTableName+'] ADD DEFAULT ((-1)) FOR [StepVersion]
+
+ ALTER TABLE [dbo].['+@logSummaryTableName+'] ADD DEFAULT (getdate()) FOR [TestDT]
+
+ CREATE INDEX ['+@logSummaryTableName+'_2] ON '+@logSummaryTableName+' (TestDT, No);
+
+ CREATE INDEX ['+@logSummaryTableName+'_3] ON '+@logSummaryTableName+' (TestDT);
+ ';
+
+ EXEC(@summaryQuery)
+ END
+
+
+ IF NOT EXISTS(SELECT * FROM sys.tables WHERE NAME = @logResultTableName)
+ BEGIN
+ DECLARE @resultQuery nvarchar(4000)= N'
+ CREATE TABLE [dbo].['+@logResultTableName+'](
+ [No] [bigint] NOT NULL,
+ [TestDT] [datetime2](7) NULL,
+ [LogData] [nvarchar](max) NOT NULL,
+ CONSTRAINT [PK_'+@logResultTableName+'] PRIMARY KEY CLUSTERED
+ (
+ [No] ASC
+ )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
+ ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
+
+ ALTER TABLE [dbo].['+@logResultTableName+'] ADD DEFAULT (getdate()) FOR [TestDT]
+
+ CREATE INDEX ['+@logResultTableName+'_2] ON '+@logResultTableName+' (TestDT, No);
+
+ CREATE INDEX ['+@logResultTableName+'_3] ON '+@logResultTableName+' (TestDT);
+ ';
+ EXEC(@resultQuery)
+ END
+RETURN 0
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/dbo/StoredProcedures/spCreateTableMonth.sql b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/dbo/StoredProcedures/spCreateTableMonth.sql
new file mode 100644
index 0000000..b68dc18
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/dbo/StoredProcedures/spCreateTableMonth.sql
@@ -0,0 +1,37 @@
+CREATE PROCEDURE [dbo].[spCreateTableMonth]
+
+AS
+ --현재 월 HIST_TestResult 테이블 생성
+ DECLARE @current_yymm varchar(4) = CONVERT(CHAR(4), GETDATE(), 12)
+
+ DECLARE @current_summaryTableName varchar(40) = N'HIST_LogSummary_'+@current_yymm
+ DECLARE @current_summary_query varchar(200) = N' SELECT * INTO ' + @current_summaryTableName + N' FROM HIST_LogSummary'
+ IF NOT EXISTS(SELECT * FROM sys.tables WHERE NAME = @current_summaryTableName)
+ BEGIN
+ EXEC(@current_summary_query)
+ END
+
+ DECLARE @current_resultTableName varchar(40) = N'HIST_TestResult_'+@current_yymm
+ DECLARE @current_result_query varchar(200) = N' SELECT * INTO ' + @current_resultTableName + N' FROM HIST_TestResult'
+ IF NOT EXISTS(SELECT * FROM sys.tables WHERE NAME = @current_resultTableName)
+ BEGIN
+ EXEC(@current_result_query)
+ END
+
+ --다음 월 HIST_TestResult 테이블 생성
+ DECLARE @next_yymm varchar(4) = CONVERT(CHAR(4), DATEADD(MONTH, 1, GETDATE()), 12)
+
+ DECLARE @next_summaryTableName varchar(40) = N'HIST_LogSummary_'+@next_yymm
+ DECLARE @next_summary_query varchar(200) = N' SELECT * INTO ' + @next_summaryTableName + N' FROM HIST_LogSummary'
+ IF NOT EXISTS(SELECT * FROM sys.tables WHERE NAME = @next_summaryTableName)
+ BEGIN
+ EXEC(@next_summary_query)
+ END
+
+ DECLARE @next_resultTableName varchar(40) = N'HIST_TestResult_'+@next_yymm
+ DECLARE @next_result_query varchar(200) = N' SELECT * INTO ' + @next_resultTableName + N' FROM HIST_TestResult'
+ IF NOT EXISTS(SELECT * FROM sys.tables WHERE NAME = @next_resultTableName)
+ BEGIN
+ EXEC(@next_result_query)
+ END
+RETURN 0
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/dbo/Tables/HIST_LogSummary.sql b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/dbo/Tables/HIST_LogSummary.sql
new file mode 100644
index 0000000..dd6b825
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/dbo/Tables/HIST_LogSummary.sql
@@ -0,0 +1,51 @@
+CREATE TABLE [dbo].[HIST_LogSummary](
+ [No] [bigint] IDENTITY(0,1) NOT NULL,
+ [StationName] [nvarchar](128) NULL,
+ [TestType] [nvarchar](8) NOT NULL,
+ [Version] [nvarchar](4) NOT NULL,
+ [ProdCode] [nvarchar](4) NOT NULL,
+ [TestListFileNo] [int] NULL,
+ [TestListVariantNo] [int] NULL,
+ [TestListCntID] [nvarchar](256) NULL,
+ [StepVersion] [int] NULL,
+ [HostID] [nvarchar](64) NOT NULL,
+ [Section] [nvarchar](64) NOT NULL,
+ [ProdNo_C] [nvarchar](32) NOT NULL,
+ [ProdNo_P] [nvarchar](32) NOT NULL,
+ [Testcode] [nvarchar](16) NOT NULL,
+ [TestListFileName] [nvarchar](256) NOT NULL,
+ [ProductID] [nvarchar](64) NOT NULL,
+ [Result] [nvarchar](16) NOT NULL,
+ [Duration] [nvarchar](16) NOT NULL,
+ [TestDT] [datetime2](7) NOT NULL,
+UNIQUE NONCLUSTERED
+(
+ [No] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY],
+ CONSTRAINT [PK_HIST_LogSummary] PRIMARY KEY ([No])
+) ON [PRIMARY]
+GO
+
+
+GO
+
+ALTER TABLE [dbo].[HIST_LogSummary] ADD DEFAULT ('-') FOR [StationName]
+GO
+
+ALTER TABLE [dbo].[HIST_LogSummary] ADD DEFAULT ((-1)) FOR [TestListFileNo]
+GO
+
+ALTER TABLE [dbo].[HIST_LogSummary] ADD DEFAULT ((-1)) FOR [TestListVariantNo]
+GO
+
+ALTER TABLE [dbo].[HIST_LogSummary] ADD DEFAULT ((-1)) FOR [StepVersion]
+GO
+
+ALTER TABLE [dbo].[HIST_LogSummary] ADD DEFAULT (getdate()) FOR [TestDT]
+GO
+
+CREATE INDEX [HIST_LogSummary_2] ON HIST_LogSummary (TestDT, No);
+GO
+
+CREATE INDEX [HIST_LogSummary_3] ON HIST_LogSummary (TestDT);
+GO
\ No newline at end of file
diff --git a/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/dbo/Tables/HIST_TestResult.sql b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/dbo/Tables/HIST_TestResult.sql
new file mode 100644
index 0000000..be0f651
--- /dev/null
+++ b/Projects/SystemX.Core/DB/SystemX.DB.CPXV2Log/dbo/Tables/HIST_TestResult.sql
@@ -0,0 +1,19 @@
+CREATE TABLE [dbo].[HIST_TestResult](
+ [No] [bigint] NOT NULL,
+ [TestDT] [datetime2](7) NULL,
+ [LogData] [nvarchar](MAX) NOT NULL,
+ CONSTRAINT [PK_HIST_TestResult] PRIMARY KEY CLUSTERED
+(
+ [No] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
+) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
+GO
+
+ALTER TABLE [dbo].[HIST_TestResult] ADD DEFAULT (getdate()) FOR [TestDT]
+GO
+
+CREATE INDEX [HIST_TestResult_2] ON HIST_TestResult (TestDT, No);
+GO
+
+CREATE INDEX [HIST_TestResult_3] ON HIST_TestResult (TestDT);
+GO
\ No newline at end of file
diff --git a/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Context/CPXV2.cs b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Context/CPXV2.cs
new file mode 100644
index 0000000..855a063
--- /dev/null
+++ b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Context/CPXV2.cs
@@ -0,0 +1,275 @@
+using System;
+using System.Collections.Generic;
+using Microsoft.EntityFrameworkCore;
+
+namespace SystemX.Core.DB;
+
+public partial class CPXV2 : DbContext
+{
+ public CPXV2(DbContextOptions options)
+ : base(options)
+ {
+ }
+
+ public virtual DbSet HIST_TestListFiles { get; set; }
+
+ public virtual DbSet HIST_TestListFileLatestStepVersions { get; set; }
+
+ public virtual DbSet HIST_TestListFileVariantLists { get; set; }
+
+ public virtual DbSet HIST_TesterSummaries { get; set; }
+
+ public virtual DbSet PROD_Groups { get; set; }
+
+ public virtual DbSet PROD_Releases { get; set; }
+
+ public virtual DbSet PROD_Variants { get; set; }
+
+ public virtual DbSet STAT_Hosts { get; set; }
+
+ public virtual DbSet STAT_TestCodes { get; set; }
+
+ public virtual DbSet STAT_Users { get; set; }
+
+ public virtual DbSet STOR_TestListFiles { get; set; }
+
+ public virtual DbSet VRFY_TestListFileReleases { get; set; }
+
+ protected override void OnModelCreating(ModelBuilder modelBuilder)
+ {
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.No).HasName("PK__HIST_Tes__3214D4A8C38F3D8E");
+
+ entity.ToTable("HIST_TestListFile");
+
+ entity.HasIndex(e => new { e.TestListFileNo, e.Name, e.No }, "CSK_HIST_TestList_2");
+
+ entity.Property(e => e.Name).HasMaxLength(64);
+
+ entity.HasOne(d => d.TestListFileNoNavigation).WithMany(p => p.HIST_TestListFiles)
+ .HasForeignKey(d => d.TestListFileNo)
+ .OnDelete(DeleteBehavior.SetNull)
+ .HasConstraintName("FK__HIST_Test__TestL__68487DD7");
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.No).HasName("PK__HIST_Tes__3214D4A80FA7E1DA");
+
+ entity.ToTable("HIST_TestListFileLatestStepVersion");
+
+ entity.HasOne(d => d.TestListFileNoNavigation).WithMany(p => p.HIST_TestListFileLatestStepVersions)
+ .HasForeignKey(d => d.TestListFileNo)
+ .OnDelete(DeleteBehavior.SetNull)
+ .HasConstraintName("FK__HIST_Test__TestL__6754599E");
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.No).HasName("PK__HIST_Tes__3214D4A8BA392490");
+
+ entity.ToTable("HIST_TestListFileVariantList");
+
+ entity.HasIndex(e => new { e.TestListFileNo, e.No }, "CSK_HIST_TestListFileVariantList_2");
+
+ entity.Property(e => e.VariantList).HasMaxLength(2048);
+
+ entity.HasOne(d => d.TestListFileNoNavigation).WithMany(p => p.HIST_TestListFileVariantLists)
+ .HasForeignKey(d => d.TestListFileNo)
+ .OnDelete(DeleteBehavior.SetNull)
+ .HasConstraintName("FK__HIST_Test__TestL__66603565");
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity
+ .HasNoKey()
+ .ToTable("HIST_TesterSummary");
+
+ entity.HasIndex(e => e.No, "UQ__HIST_Tes__3214D4A9D65E09B4").IsUnique();
+
+ entity.Property(e => e.Duration).HasMaxLength(16);
+ entity.Property(e => e.HostID).HasMaxLength(64);
+ entity.Property(e => e.No).ValueGeneratedOnAdd();
+ entity.Property(e => e.ProdCode).HasMaxLength(4);
+ entity.Property(e => e.ProdNo_C).HasMaxLength(32);
+ entity.Property(e => e.ProdNo_P).HasMaxLength(32);
+ entity.Property(e => e.ProductID).HasMaxLength(64);
+ entity.Property(e => e.Result).HasMaxLength(16);
+ entity.Property(e => e.Section).HasMaxLength(64);
+ entity.Property(e => e.StationName)
+ .HasMaxLength(128)
+ .HasDefaultValue("-");
+ entity.Property(e => e.StepVersion).HasDefaultValue(-1);
+ entity.Property(e => e.TestDT).HasDefaultValueSql("(getdate())");
+ entity.Property(e => e.TestListCntID).HasMaxLength(256);
+ entity.Property(e => e.TestListFileName).HasMaxLength(256);
+ entity.Property(e => e.TestListFileNo).HasDefaultValue(-1);
+ entity.Property(e => e.TestListVariantNo).HasDefaultValue(-1);
+ entity.Property(e => e.TestType).HasMaxLength(8);
+ entity.Property(e => e.Testcode).HasMaxLength(16);
+ entity.Property(e => e.Version).HasMaxLength(4);
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.No).HasName("PK__PROD_Gro__3214D4A8A3CE9C41");
+
+ entity.ToTable("PROD_Group");
+
+ entity.HasIndex(e => e.ModelName, "UQ__PROD_Gro__67DC63B5E6F58A45").IsUnique();
+
+ entity.Property(e => e.Comment).HasMaxLength(256);
+ entity.Property(e => e.GroupName).HasMaxLength(128);
+ entity.Property(e => e.ModelName).HasMaxLength(128);
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.No).HasName("PK__PROD_Rel__3214D4A86EAA1A79");
+
+ entity.ToTable("PROD_Release");
+
+ entity.Property(e => e.Config).HasMaxLength(32);
+ entity.Property(e => e.ProdNo_C).HasMaxLength(32);
+ entity.Property(e => e.RegDT).HasDefaultValueSql("(getdate())");
+ entity.Property(e => e.RegUser).HasMaxLength(32);
+ entity.Property(e => e.RegUserComment).HasMaxLength(256);
+
+ entity.HasOne(d => d.TestCodeNoNavigation).WithMany(p => p.PROD_Releases)
+ .HasForeignKey(d => d.TestCodeNo)
+ .OnDelete(DeleteBehavior.SetNull)
+ .HasConstraintName("FK__PROD_Rele__TestC__6477ECF3");
+
+ entity.HasOne(d => d.VariantNoNavigation).WithMany(p => p.PROD_Releases)
+ .HasForeignKey(d => d.VariantNo)
+ .OnDelete(DeleteBehavior.SetNull)
+ .HasConstraintName("FK__PROD_Rele__Varia__656C112C");
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.No).HasName("PK__PROD_Var__3214D4A8DEBD410D");
+
+ entity.ToTable("PROD_Variant");
+
+ entity.Property(e => e.Comment).HasMaxLength(256);
+ entity.Property(e => e.Description).HasMaxLength(256);
+ entity.Property(e => e.IsUse).HasDefaultValue(true);
+ entity.Property(e => e.ProdNo_P).HasMaxLength(32);
+ entity.Property(e => e.RegDT).HasDefaultValueSql("(getdate())");
+ entity.Property(e => e.RegUser).HasMaxLength(32);
+ entity.Property(e => e.UpdateDT).HasDefaultValueSql("(getdate())");
+ entity.Property(e => e.UpdateUser).HasMaxLength(32);
+
+ entity.HasOne(d => d.GroupNoNavigation).WithMany(p => p.PROD_Variants)
+ .HasForeignKey(d => d.GroupNo)
+ .OnDelete(DeleteBehavior.SetNull)
+ .HasConstraintName("FK__PROD_Vari__Group__628FA481");
+
+ entity.HasOne(d => d.TestListFileNoNavigation).WithMany(p => p.PROD_Variants)
+ .HasForeignKey(d => d.TestListFileNo)
+ .OnDelete(DeleteBehavior.SetNull)
+ .HasConstraintName("FK__PROD_Vari__TestL__6383C8BA");
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.No).HasName("PK__STAT_Hos__3214D4A8B3A9E118");
+
+ entity.ToTable("STAT_Host");
+
+ entity.Property(e => e.Comment).HasMaxLength(256);
+ entity.Property(e => e.HostID).HasMaxLength(64);
+ entity.Property(e => e.IP).HasMaxLength(15);
+ entity.Property(e => e.Section).HasMaxLength(64);
+ entity.Property(e => e.TestCode).HasMaxLength(16);
+ entity.Property(e => e.UpdateDT).HasDefaultValueSql("(getdate())");
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.No).HasName("PK__STAT_Tes__3214D4A8759E255B");
+
+ entity.ToTable("STAT_TestCode");
+
+ entity.HasIndex(e => e.TestCode, "UQ__STAT_Tes__0B0C35F71EDB4C9E").IsUnique();
+
+ entity.Property(e => e.Comment).HasMaxLength(256);
+ entity.Property(e => e.Gate1).HasMaxLength(64);
+ entity.Property(e => e.Gate2).HasMaxLength(64);
+ entity.Property(e => e.TestCode).HasMaxLength(16);
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.No).HasName("PK__STAT_Use__3214D4A8F88707CA");
+
+ entity.ToTable("STAT_User");
+
+ entity.HasIndex(e => e.UserID, "UQ__STAT_Use__1788CCAD04FDA05E").IsUnique();
+
+ entity.Property(e => e.Comment).HasMaxLength(256);
+ entity.Property(e => e.Dept).HasMaxLength(64);
+ entity.Property(e => e.Email).HasMaxLength(64);
+ entity.Property(e => e.Name).HasMaxLength(32);
+ entity.Property(e => e.Password).HasMaxLength(32);
+ entity.Property(e => e.UpdateDT).HasDefaultValueSql("(getdate())");
+ entity.Property(e => e.UserID).HasMaxLength(32);
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.No).HasName("PK__STOR_Tes__3214D4A8082195B1");
+
+ entity.ToTable("STOR_TestListFile");
+
+ entity.Property(e => e.Comment).HasMaxLength(256);
+ entity.Property(e => e.Description).HasMaxLength(256);
+ entity.Property(e => e.FileName).HasMaxLength(64);
+ entity.Property(e => e.Name).HasMaxLength(64);
+ entity.Property(e => e.ProdCode).HasMaxLength(4);
+ entity.Property(e => e.RegDT).HasDefaultValueSql("(getdate())");
+ entity.Property(e => e.RegUser).HasMaxLength(32);
+ entity.Property(e => e.TestType).HasMaxLength(8);
+ entity.Property(e => e.UpdateDT).HasDefaultValueSql("(getdate())");
+ entity.Property(e => e.UpdateUser).HasMaxLength(32);
+ entity.Property(e => e.Version).HasMaxLength(4);
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.No).HasName("PK__VRFY_Tes__3214D4A84ACCA9A3");
+
+ entity.ToTable("VRFY_TestListFileRelease");
+
+ entity.HasIndex(e => new { e.TestListFileNo, e.StepID, e.Enable, e.No }, "CSK_VRFY_Release_2");
+
+ entity.Property(e => e.Activate).HasDefaultValue(true);
+ entity.Property(e => e.Dim).HasMaxLength(64);
+ entity.Property(e => e.Enable).HasDefaultValue(true);
+ entity.Property(e => e.Gate).HasMaxLength(128);
+ entity.Property(e => e.IsGlobal).HasDefaultValue(false);
+ entity.Property(e => e.MacroParm).HasMaxLength(2048);
+ entity.Property(e => e.Parm).HasMaxLength(2048);
+ entity.Property(e => e.SpecMax).HasMaxLength(2048);
+ entity.Property(e => e.SpecMin).HasMaxLength(2048);
+ entity.Property(e => e.StepDesc)
+ .HasMaxLength(2048)
+ .HasDefaultValue("");
+ entity.Property(e => e.UpdateDT).HasDefaultValueSql("(getdate())");
+ entity.Property(e => e.UseFunction).HasMaxLength(2048);
+ entity.Property(e => e.Variant).HasMaxLength(32);
+
+ entity.HasOne(d => d.TestListFileNoNavigation).WithMany(p => p.VRFY_TestListFileReleases)
+ .HasForeignKey(d => d.TestListFileNo)
+ .OnDelete(DeleteBehavior.SetNull)
+ .HasConstraintName("FK__VRFY_Test__TestL__619B8048");
+ });
+
+ OnModelCreatingPartial(modelBuilder);
+ }
+
+ partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
+}
diff --git a/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/HIST_TestListFile.cs b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/HIST_TestListFile.cs
new file mode 100644
index 0000000..f6b16a0
--- /dev/null
+++ b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/HIST_TestListFile.cs
@@ -0,0 +1,35 @@
+using System;
+using System.Collections.Generic;
+
+namespace SystemX.Core.DB;
+
+public partial class HIST_TestListFile
+{
+ public long No { get; set; }
+
+ public int? TestListFileNo { get; set; }
+
+ public string Name { get; set; } = null!;
+
+ public byte[]? TestListData1 { get; set; }
+
+ public byte[]? TestListData2 { get; set; }
+
+ public byte[]? TestListData3 { get; set; }
+
+ public byte[]? TestListData4 { get; set; }
+
+ public byte[]? TestListData5 { get; set; }
+
+ public byte[]? TestListData6 { get; set; }
+
+ public byte[]? TestListData7 { get; set; }
+
+ public byte[]? TestListData8 { get; set; }
+
+ public byte[]? TestListData9 { get; set; }
+
+ public byte[]? TestListData10 { get; set; }
+
+ public virtual STOR_TestListFile? TestListFileNoNavigation { get; set; }
+}
diff --git a/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/HIST_TestListFileLatestStepVersion.cs b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/HIST_TestListFileLatestStepVersion.cs
new file mode 100644
index 0000000..5f104ba
--- /dev/null
+++ b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/HIST_TestListFileLatestStepVersion.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+
+namespace SystemX.Core.DB;
+
+public partial class HIST_TestListFileLatestStepVersion
+{
+ public long No { get; set; }
+
+ public int? TestListFileNo { get; set; }
+
+ public int LatestStepVersion { get; set; }
+
+ public virtual STOR_TestListFile? TestListFileNoNavigation { get; set; }
+}
diff --git a/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/HIST_TestListFileVariantList.cs b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/HIST_TestListFileVariantList.cs
new file mode 100644
index 0000000..44fca50
--- /dev/null
+++ b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/HIST_TestListFileVariantList.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+
+namespace SystemX.Core.DB;
+
+public partial class HIST_TestListFileVariantList
+{
+ public long No { get; set; }
+
+ public int? TestListFileNo { get; set; }
+
+ public string? VariantList { get; set; }
+
+ public virtual STOR_TestListFile? TestListFileNoNavigation { get; set; }
+}
diff --git a/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/HIST_TesterSummary.cs b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/HIST_TesterSummary.cs
new file mode 100644
index 0000000..7e563e5
--- /dev/null
+++ b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/HIST_TesterSummary.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+
+namespace SystemX.Core.DB;
+
+public partial class HIST_TesterSummary
+{
+ public long No { get; set; }
+
+ public string? StationName { get; set; }
+
+ public string TestType { get; set; } = null!;
+
+ public string Version { get; set; } = null!;
+
+ public string ProdCode { get; set; } = null!;
+
+ public int? TestListFileNo { get; set; }
+
+ public int? TestListVariantNo { get; set; }
+
+ public string? TestListCntID { get; set; }
+
+ public int? StepVersion { get; set; }
+
+ public string HostID { get; set; } = null!;
+
+ public string Section { get; set; } = null!;
+
+ public string ProdNo_C { get; set; } = null!;
+
+ public string ProdNo_P { get; set; } = null!;
+
+ public string Testcode { get; set; } = null!;
+
+ public string TestListFileName { get; set; } = null!;
+
+ public string ProductID { get; set; } = null!;
+
+ public string Result { get; set; } = null!;
+
+ public string Duration { get; set; } = null!;
+
+ public DateTime TestDT { get; set; }
+}
diff --git a/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/PROD_Group.cs b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/PROD_Group.cs
new file mode 100644
index 0000000..142b789
--- /dev/null
+++ b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/PROD_Group.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+
+namespace SystemX.Core.DB;
+
+public partial class PROD_Group
+{
+ public int No { get; set; }
+
+ public string GroupName { get; set; } = null!;
+
+ public string ModelName { get; set; } = null!;
+
+ public string? Comment { get; set; }
+
+ public virtual ICollection PROD_Variants { get; set; } = new List();
+}
diff --git a/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/PROD_Release.cs b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/PROD_Release.cs
new file mode 100644
index 0000000..d089d72
--- /dev/null
+++ b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/PROD_Release.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+
+namespace SystemX.Core.DB;
+
+public partial class PROD_Release
+{
+ public int No { get; set; }
+
+ public string ProdNo_C { get; set; } = null!;
+
+ public int? TestCodeNo { get; set; }
+
+ public int? VariantNo { get; set; }
+
+ public string Config { get; set; } = null!;
+
+ public DateTime RegDT { get; set; }
+
+ public string RegUser { get; set; } = null!;
+
+ public string? RegUserComment { get; set; }
+
+ public virtual STAT_TestCode? TestCodeNoNavigation { get; set; }
+
+ public virtual PROD_Variant? VariantNoNavigation { get; set; }
+}
diff --git a/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/PROD_Variant.cs b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/PROD_Variant.cs
new file mode 100644
index 0000000..eb9674b
--- /dev/null
+++ b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/PROD_Variant.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+
+namespace SystemX.Core.DB;
+
+public partial class PROD_Variant
+{
+ public int No { get; set; }
+
+ public string ProdNo_P { get; set; } = null!;
+
+ public DateTime RegDT { get; set; }
+
+ public string RegUser { get; set; } = null!;
+
+ public DateTime UpdateDT { get; set; }
+
+ public string UpdateUser { get; set; } = null!;
+
+ public int? GroupNo { get; set; }
+
+ public string? Comment { get; set; }
+
+ public string? Description { get; set; }
+
+ public int? TestListFileNo { get; set; }
+
+ public int UseTLPosition { get; set; }
+
+ public bool IsUse { get; set; }
+
+ public virtual PROD_Group? GroupNoNavigation { get; set; }
+
+ public virtual ICollection PROD_Releases { get; set; } = new List();
+
+ public virtual STOR_TestListFile? TestListFileNoNavigation { get; set; }
+}
diff --git a/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/STAT_Host.cs b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/STAT_Host.cs
new file mode 100644
index 0000000..79a1174
--- /dev/null
+++ b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/STAT_Host.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+
+namespace SystemX.Core.DB;
+
+public partial class STAT_Host
+{
+ public int No { get; set; }
+
+ public string HostID { get; set; } = null!;
+
+ public string Section { get; set; } = null!;
+
+ public string IP { get; set; } = null!;
+
+ public string? TestCode { get; set; }
+
+ public string? Comment { get; set; }
+
+ public DateTime UpdateDT { get; set; }
+}
diff --git a/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/STAT_TestCode.cs b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/STAT_TestCode.cs
new file mode 100644
index 0000000..442adb0
--- /dev/null
+++ b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/STAT_TestCode.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+
+namespace SystemX.Core.DB;
+
+public partial class STAT_TestCode
+{
+ public int No { get; set; }
+
+ public string TestCode { get; set; } = null!;
+
+ public string Gate1 { get; set; } = null!;
+
+ public string Gate2 { get; set; } = null!;
+
+ public string? Comment { get; set; }
+
+ public virtual ICollection PROD_Releases { get; set; } = new List();
+}
diff --git a/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/STAT_User.cs b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/STAT_User.cs
new file mode 100644
index 0000000..e00e8b8
--- /dev/null
+++ b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/STAT_User.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+
+namespace SystemX.Core.DB;
+
+public partial class STAT_User
+{
+ public int No { get; set; }
+
+ public string UserID { get; set; } = null!;
+
+ public string Name { get; set; } = null!;
+
+ public string Password { get; set; } = null!;
+
+ public string Dept { get; set; } = null!;
+
+ public string Email { get; set; } = null!;
+
+ public string? Comment { get; set; }
+
+ public DateTime UpdateDT { get; set; }
+}
diff --git a/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/STOR_TestListFile.cs b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/STOR_TestListFile.cs
new file mode 100644
index 0000000..42cccd7
--- /dev/null
+++ b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/STOR_TestListFile.cs
@@ -0,0 +1,43 @@
+using System;
+using System.Collections.Generic;
+
+namespace SystemX.Core.DB;
+
+public partial class STOR_TestListFile
+{
+ public int No { get; set; }
+
+ public string Name { get; set; } = null!;
+
+ public string TestType { get; set; } = null!;
+
+ public string Version { get; set; } = null!;
+
+ public string ProdCode { get; set; } = null!;
+
+ public string FileName { get; set; } = null!;
+
+ public DateTime RegDT { get; set; }
+
+ public string RegUser { get; set; } = null!;
+
+ public DateTime UpdateDT { get; set; }
+
+ public string UpdateUser { get; set; } = null!;
+
+ public string? Comment { get; set; }
+
+ public string? Description { get; set; }
+
+ public byte[] TestListData { get; set; } = null!;
+
+ public virtual ICollection HIST_TestListFileLatestStepVersions { get; set; } = new List();
+
+ public virtual ICollection HIST_TestListFileVariantLists { get; set; } = new List();
+
+ public virtual ICollection HIST_TestListFiles { get; set; } = new List();
+
+ public virtual ICollection PROD_Variants { get; set; } = new List();
+
+ public virtual ICollection VRFY_TestListFileReleases { get; set; } = new List();
+}
diff --git a/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/VRFY_TestListFileRelease.cs b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/VRFY_TestListFileRelease.cs
new file mode 100644
index 0000000..41699d0
--- /dev/null
+++ b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2/Tables/VRFY_TestListFileRelease.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+
+namespace SystemX.Core.DB;
+
+public partial class VRFY_TestListFileRelease
+{
+ public long No { get; set; }
+
+ public int? TestListFileNo { get; set; }
+
+ public long StepID { get; set; }
+
+ public string Variant { get; set; } = null!;
+
+ public string Gate { get; set; } = null!;
+
+ public bool? Activate { get; set; }
+
+ public int StepVersion { get; set; }
+
+ public bool? Enable { get; set; }
+
+ public long? Position { get; set; }
+
+ public string? StepDesc { get; set; }
+
+ public string UseFunction { get; set; } = null!;
+
+ public string? MacroParm { get; set; }
+
+ public string? Parm { get; set; }
+
+ public string SpecMin { get; set; } = null!;
+
+ public string SpecMax { get; set; } = null!;
+
+ public bool? IsGlobal { get; set; }
+
+ public string Dim { get; set; } = null!;
+
+ public DateTime UpdateDT { get; set; }
+
+ public virtual STOR_TestListFile? TestListFileNoNavigation { get; set; }
+}
diff --git a/Projects/SystemX.Core/SystemX.Core.DB/CPXV2Log/Context/CPXV2Log.cs b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2Log/Context/CPXV2Log.cs
new file mode 100644
index 0000000..1aeb8b7
--- /dev/null
+++ b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2Log/Context/CPXV2Log.cs
@@ -0,0 +1,72 @@
+using System;
+using System.Collections.Generic;
+using Microsoft.EntityFrameworkCore;
+
+namespace SystemX.Core.DB;
+
+public partial class CPXV2Log : DbContext
+{
+ public CPXV2Log(DbContextOptions options)
+ : base(options)
+ {
+ }
+
+ public virtual DbSet HIST_LogSummaries { get; set; }
+
+ public virtual DbSet HIST_TestResults { get; set; }
+
+ protected override void OnModelCreating(ModelBuilder modelBuilder)
+ {
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.No);
+
+ entity.ToTable("HIST_LogSummary");
+
+ entity.HasIndex(e => new { e.TestDT, e.No }, "HIST_LogSummary_2");
+
+ entity.HasIndex(e => e.TestDT, "HIST_LogSummary_3");
+
+ entity.HasIndex(e => e.No, "UQ__HIST_Log__3214D4A98E941729").IsUnique();
+
+ entity.Property(e => e.Duration).HasMaxLength(16);
+ entity.Property(e => e.HostID).HasMaxLength(64);
+ entity.Property(e => e.ProdCode).HasMaxLength(4);
+ entity.Property(e => e.ProdNo_C).HasMaxLength(32);
+ entity.Property(e => e.ProdNo_P).HasMaxLength(32);
+ entity.Property(e => e.ProductID).HasMaxLength(64);
+ entity.Property(e => e.Result).HasMaxLength(16);
+ entity.Property(e => e.Section).HasMaxLength(64);
+ entity.Property(e => e.StationName)
+ .HasMaxLength(128)
+ .HasDefaultValue("-");
+ entity.Property(e => e.StepVersion).HasDefaultValue(-1);
+ entity.Property(e => e.TestDT).HasDefaultValueSql("(getdate())");
+ entity.Property(e => e.TestListCntID).HasMaxLength(256);
+ entity.Property(e => e.TestListFileName).HasMaxLength(256);
+ entity.Property(e => e.TestListFileNo).HasDefaultValue(-1);
+ entity.Property(e => e.TestListVariantNo).HasDefaultValue(-1);
+ entity.Property(e => e.TestType).HasMaxLength(8);
+ entity.Property(e => e.Testcode).HasMaxLength(16);
+ entity.Property(e => e.Version).HasMaxLength(4);
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.No);
+
+ entity.ToTable("HIST_TestResult");
+
+ entity.HasIndex(e => new { e.TestDT, e.No }, "HIST_TestResult_2");
+
+ entity.HasIndex(e => e.TestDT, "HIST_TestResult_3");
+
+ entity.Property(e => e.No).ValueGeneratedNever();
+ entity.Property(e => e.TestDT).HasDefaultValueSql("(getdate())");
+ });
+
+ OnModelCreatingPartial(modelBuilder);
+ }
+
+ partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
+}
diff --git a/Projects/SystemX.Core/SystemX.Core.DB/CPXV2Log/Tables/HIST_LogSummary.cs b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2Log/Tables/HIST_LogSummary.cs
new file mode 100644
index 0000000..a227fbe
--- /dev/null
+++ b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2Log/Tables/HIST_LogSummary.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+
+namespace SystemX.Core.DB;
+
+public partial class HIST_LogSummary
+{
+ public long No { get; set; }
+
+ public string? StationName { get; set; }
+
+ public string TestType { get; set; } = null!;
+
+ public string Version { get; set; } = null!;
+
+ public string ProdCode { get; set; } = null!;
+
+ public int? TestListFileNo { get; set; }
+
+ public int? TestListVariantNo { get; set; }
+
+ public string? TestListCntID { get; set; }
+
+ public int? StepVersion { get; set; }
+
+ public string HostID { get; set; } = null!;
+
+ public string Section { get; set; } = null!;
+
+ public string ProdNo_C { get; set; } = null!;
+
+ public string ProdNo_P { get; set; } = null!;
+
+ public string Testcode { get; set; } = null!;
+
+ public string TestListFileName { get; set; } = null!;
+
+ public string ProductID { get; set; } = null!;
+
+ public string Result { get; set; } = null!;
+
+ public string Duration { get; set; } = null!;
+
+ public DateTime TestDT { get; set; }
+}
diff --git a/Projects/SystemX.Core/SystemX.Core.DB/CPXV2Log/Tables/HIST_TestResult.cs b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2Log/Tables/HIST_TestResult.cs
new file mode 100644
index 0000000..4280676
--- /dev/null
+++ b/Projects/SystemX.Core/SystemX.Core.DB/CPXV2Log/Tables/HIST_TestResult.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+
+namespace SystemX.Core.DB;
+
+public partial class HIST_TestResult
+{
+ public long No { get; set; }
+
+ public DateTime? TestDT { get; set; }
+
+ public string LogData { get; set; } = null!;
+}
diff --git a/Projects/SystemX.Core/SystemX.Core.sln b/Projects/SystemX.Core/SystemX.Core.sln
index 799e5ae..9c93e32 100644
--- a/Projects/SystemX.Core/SystemX.Core.sln
+++ b/Projects/SystemX.Core/SystemX.Core.sln
@@ -15,6 +15,10 @@ Project("{00D1A9C2-B5F0-4AF3-8072-F6C62B433612}") = "SystemX.DB.UniqueKeyDB", "D
EndProject
Project("{00D1A9C2-B5F0-4AF3-8072-F6C62B433612}") = "SystemX.DB.VPKI_DataDB", "DB\SystemX.DB.VPKI_DataDB\SystemX.DB.VPKI_DataDB.sqlproj", "{5D374F06-D9FA-4159-BC84-1F3CA506F50E}"
EndProject
+Project("{00D1A9C2-B5F0-4AF3-8072-F6C62B433612}") = "SystemX.DB.CPXV2", "DB\SystemX.DB.CPXV2\SystemX.DB.CPXV2.sqlproj", "{3A2D7552-9C12-489F-8A0B-330E000C860D}"
+EndProject
+Project("{00D1A9C2-B5F0-4AF3-8072-F6C62B433612}") = "SystemX.DB.CPXV2Log", "DB\SystemX.DB.CPXV2Log\SystemX.DB.CPXV2Log.sqlproj", "{D9439C52-76B5-4908-9B0D-43D1F52EC942}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -47,6 +51,18 @@ Global
{5D374F06-D9FA-4159-BC84-1F3CA506F50E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5D374F06-D9FA-4159-BC84-1F3CA506F50E}.Release|Any CPU.Build.0 = Release|Any CPU
{5D374F06-D9FA-4159-BC84-1F3CA506F50E}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ {3A2D7552-9C12-489F-8A0B-330E000C860D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3A2D7552-9C12-489F-8A0B-330E000C860D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3A2D7552-9C12-489F-8A0B-330E000C860D}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {3A2D7552-9C12-489F-8A0B-330E000C860D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3A2D7552-9C12-489F-8A0B-330E000C860D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3A2D7552-9C12-489F-8A0B-330E000C860D}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ {D9439C52-76B5-4908-9B0D-43D1F52EC942}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D9439C52-76B5-4908-9B0D-43D1F52EC942}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D9439C52-76B5-4908-9B0D-43D1F52EC942}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {D9439C52-76B5-4908-9B0D-43D1F52EC942}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D9439C52-76B5-4908-9B0D-43D1F52EC942}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D9439C52-76B5-4908-9B0D-43D1F52EC942}.Release|Any CPU.Deploy.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -55,6 +71,8 @@ Global
{B44C85FA-BD31-419F-8481-477E166A5753} = {C8D5274F-AC00-46C7-1F8D-E88E81087A52}
{C67F3F97-1D52-4C75-A04F-16ED41822CCD} = {C8D5274F-AC00-46C7-1F8D-E88E81087A52}
{5D374F06-D9FA-4159-BC84-1F3CA506F50E} = {C8D5274F-AC00-46C7-1F8D-E88E81087A52}
+ {3A2D7552-9C12-489F-8A0B-330E000C860D} = {C8D5274F-AC00-46C7-1F8D-E88E81087A52}
+ {D9439C52-76B5-4908-9B0D-43D1F52EC942} = {C8D5274F-AC00-46C7-1F8D-E88E81087A52}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {A26A3BD0-2161-41FA-949A-DEA966E8F798}