IT/Mssql 썸네일형 리스트형 [MSSQL] 한글 데이터 암호화/복호화 (대칭키 암호화 사용) 1. 마스터키 생성/ 백업 / 복원 / 조회 1) 생성 - CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Pwd_Create_Master'; 2) 백업 - OPEN MASTER KEY DECRYPTION BY PASSWORD = 'Pwd_Create_Master'; - BACKUP MASTER KEY TO FILE = 'C:\MasterKey' ENCRYPTION BY PASSWORD = 'Pwd_Backup_Master'; 3) 복원 - RESTORE MASTER KEY FROM FILE = 'C:\MasterKey'; 4) 조회 - SELECT * FROM sys.symmetric_keys 2. 인증서 생성 / 조회 / 삭제 1) 생성 - CREATE CERTIFICA.. 더보기 [해결] 드라이버가 SSL(Secure Sockets Layer) 암호화를 사용하여 SQL Sever로 보안 연결을 설정할 수 없습니다. 오류: "java.lang.RuntimeException: Could not generate DH keypair" 해당 오류는 JRE 1.6버전에서 1024비트 이상의 DH를 지원하지 않아 발생하는 문제이다. 윈도우 버전이 업그레이드 되면서 보안이 강화되고, DH 알고리즘이 1024에서 2048로 업데이트 되었기 때문이다. 따라서 레지스트리 편집기에서 암호화 알고리즘(DH)의 최소 패킷 사이즈를 2048 -> 1024로 변경해야한다. 해결 방법으로는 아래 레지스트리로 이동해서 "Diffie-Hellman" Key를 생성하고 그 안에 "ServerMinKeyBitLength" DWORD 값을 10진수로 1024로 적용한다. - HKEY_LOCAL_MACHINE\Comm\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms 더보기 [Mssql] Working days 구하기(함수) 특정 기간 동안에 Working days 수 구하는 함수입니다. CREATE FUNCTION [dbo].[fn_GetTotalWorkingDays] ( @DateFrom Date, @DateTo Date ) RETURNS INT AS BEGIN DECLARE @TotDays INT = DATEDIFF(DAY, @DateFrom, @DateTo) + 1; DECLARE @TotWeeks INT = DATEDIFF(WEEK, @DateFrom, @DateTo) * 2; DECLARE @IsSunday INT = CASE WHEN DATENAME(WEEKDAY, @DateFrom) = 'Sunday' THEN 1 ELSE 0 END; DECLARE @IsSaturday INT = CASE WHEN DATENA.. 더보기 [Mssql] 연도별 주차 SQL문 연도별로 주차 구하는 SQL문 입니다. (* 월요일 기준) SELECT '2020' AS YEAR ,CASE WHEN LEN(NUMBER + 1) = 1 THEN '0' + CAST(NUMBER + 1 AS VARCHAR) ELSE CAST(NUMBER + 1 AS VARCHAR) END AS WEEK ,'Week ' + CASE WHEN LEN(NUMBER + 1) = 1 THEN '0' + CAST(NUMBER + 1 AS VARCHAR) ELSE CAST(NUMBER + 1 AS VARCHAR) END AS WEEK_NM ,CONVERT(VARCHAR(10), DATEADD(DAY, - (DATEPART(DW, CONVERT(SMALLDATETIME, '2020' + '-01-01') + (NUMB.. 더보기 [MSSQL] 데이터베이스 완전 삭제 USE masterGOALTER DATABASE 데이터베이스명SET OFFLINE WITH ROLLBACK IMMEDIATEGO USE master ; GO DROP DATABASE 데이터베이스명 ; GO 더보기 [MSSQL] DB LINK 생성 후 테이블 조회 다음은 MSSQL에서 다른 네트워크의 MSQL DB를 연결하고, 연결한 DB의 테이블을 조회하는 방법이다. 1. MSSQL DB LINK 서버 생성 (빨간색 글자인 부분만 수정 필요) EXEC sp_addlinkedserver @server = 'TEST_DBLINK', -- 서버 별칭 @srvproduct = '', @provider = 'SQLOLEDB', @datasrc = '121.71.171.71', -- 연결할 DB 서버 IP @catalog = 'TEST_DB' -- 연결할 DB 명 2. DB LINK 생성 여부 확인 SELECT * FROM master.dbo.sysservers 3. 연결 계정 생성 EXEC sp_addlinkedsrvlogin @rmtsrvname= 'TEST_DBLIN.. 더보기 [MSSQL] 트랜잭션 로그파일 삭제 및 잘라내기 MSSQL 트랜잭션 로그파일 삭제 및 줄이는 방법 우선 DB와 로그 크기 확인을 위해 아래와 같은 쿼리를 실행해보자. SELECT *FROM sys.master_files WHERE database_id like '%database_name%' 데이터베이스(DB)와 로그(LOG) 크기를 축소하기 위한 쿼리문. 로그는 "데이터베이스명_LOG"으로 대부분 되어 있음. - 로그 백업 및 잘라내기 (잘라내기를 더 권장함) 1. BACKUP LOG 'DB명' TO '디바이스명(장치명)' -- 로그백업 2. BACKUP LOG 'DB명' WITH TRUNCATE_ONLY -- 로그 잘라내기 - 로그 축소하기(TRUNCATEONLY를 더 권장함)1. DBCC SHRINKFILE('로그파일명', 파일크기) -- 파일크.. 더보기 sqlserver Alias를 포함한 update/delete 예제에서 사용될 테이블들의 데이터는 아래와 같다.DEPT 테이블EMP 테이블 DELETE FROM DEPT D WHERE EXISTS (SELECT 1FROM EMP E WHERE E.DEPTNO = D.DEPTNO AND E.DEPTNO = '10')-- 에러 발생 // ALIAS 사용으로 인해 에러 발생. 아래와 같이 DELETE 다음에 ALIAS를 써줘보자. DELETE D FROM DEPT D WHERE EXISTS (SELECT 1FROM EMP E WHERE E.DEPTNO = D.DEPTNO AND E.DEPTNO = '10') -- (1개 행이 영향을 받음) UPDATE DEPT D SET D.LOC = 'VICTORIA'WHERE EXISTS (SELECT 1FROM EMP E WHERE.. 더보기 sql 중복되는 데이터 뽑기(partition by 이용) - SALES_NO 데이터가 중복이 되는 것이 있나 조회할 때 partition by를 이용하여 조회해본다. SELECT * FROM ( SELECT COUNT(1) OVER(PARTITION BY SALES_NO) AS DD FROM SALES_MST ) X WHERE DD > 1 더보기 mssql 0으로 나누기 오류가 발생했습니다. left outer join ㅇㅔ서 inner join으로 바꿔주었떠니 됐음.. 이거 추가시켜 주고 쿼리 돌리면 SET ANSI_WARNINGS OFF SET ARITHIGNORE ON SET ARITHABORT OFF null이어도 그냥 데이터 조회되는데 .. 여기서 뭐를 inner join으로 바꿔줘야될지 봐바 더보기 이전 1 2 다음