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}