목록IT/mssql
바다토리 웨어하우스
개인정보 취급에 대해 사회적 이슈가 높아지면서, 전산관리자로써 관리할 것도 많아진 것도 사실일 것입니다. 관리적 보안부터 기술적 보안까지 여러 가지 신경을 써야 할 부분이 많아졌는데, 그중에서도 보안점검 시 기본 항목 중의 하나인 고유 식별정보 및 비밀번호 일방향 암호화하는 방법에 대해 살펴보고자 합니다. 그나마 편리하게 MSSQL에서는 일방향 암호화 함수를 기본 제공하고 있어, 편리하게 일방향 암호화를 할 수가 있습니다. 하지만 SQL 버젼에 따라서 지원하는 암호화 형식이 다르므로 확인을 해야 합니다. 지원하는 암호화 알고리즘은 크게 7가지가 있는데, MD2, MD4, MD5, SHA, SHA1, SHA2_256, SHA2_512 이렇게 7가지를 지원하게 됩니다. MSSQL의 일방향 암호화는 HashB..
DB를 운영하다 보면 누구나 한 번쯤은 예상치 못한 결과로 인하여 복구를 한번씩은 해야 할 경우가 있습니다. 그럴 때 백업본이 있다면 크게 문제가 되지 않지만, 백업본이 없다면, 그야말로 정말 눈앞이 캄캄한 일이 아닐 수가 없을 것입니다. 그래서 DB를 운영한다면 꼭 백업을 해야하며, 백업 또한 주기적으로 해주어야 하는 작업이기에 정기적으로 스케쥴을 걸어두고 진행해주면 편리합니다. 여기서 MSSQL 백업 스케줄 작성에 대해 살펴보겠습니다. 우선 SQL Management Studio를 실행 후 좌측 메뉴를 보면, 유지관리 계획이란 메뉴가 있습니다. 여기서 유지 관리 계획을 선택 후 오른쪽 버튼을 클릭하면 새 유지 관리 계획의 이름을 지정할 수 있는 칸이 나옵니다. 알아보기 쉽도록 명명 후, 확인을 누르면..
Database는 아무래도 방대한 많은 양의 자료가 있다 보니, DB를 다루다 보면 여간 신경이 곤두서는 게 아닐 수 없다. 특정 조건에 해당되는 데이터를 Update나 Delete를 하다 보면, 쿼리를 잘못 날려서 정말 내가 왜 이랬지 후회를 하며 머릿속이 하얘지는 경험은 한 번쯤은 있을 것이다. 실행을 하는 순간 뭔가 싸한 느낌. 그렇기 때문에 DB에 있어서 백업은 항상 필수이고, 아무리 강조해도 지나치지 않는다. 다음의 예를 보자. 테이블을 하나 만들고 데이터를 넣어 둔다. 조회를 해보면 5건의 데이터가 들어가 있는 것을 볼 수 있다. 백업을 주기적으로 잘하고 있다고 가정하고, 전체 Full 백업을 받는다. 잘 아시겠지만, 주 1회 전체 백업, 매일 차등 백업을 받도록 한다. 여기서 사용자가 실수로..
MSSQL을 사용하다 보면 보안 문제로 인하여 sa계정을 비활성화하는 경우가 많다. 그리고는 편의상 윈도우의 administrator 게정으로 윈도우 인증을 이용하여 사용하는 경우가 많은데, 그리 좋은 케이스는 아니지만, 혹 이렇게 사용하다가 administrator 계정을 삭제했을 때 더 이상 윈도우즈 administrator 계정으로 로그인을 할 수가 없게 된다. sa계정도 비활성화시켜 놓은 상태라 MSSQL에 관리자 계정으로 접속할 방법이 없어지게 된다. 이럴 때 당황스러웠던 적이 있는데, 해결법이 있기에 글을 적어 봅니다. 첫째. SQL 서버를 정지시킵니다. net stop mssqlserver 둘째. 단일 사용자 모드로 MSSQL서버를 시작합니다. net start mssqlserver /m 셋..
DB서버를 이전하게 되거나, 예기치 못한 장애로 인하여, 새로운 서버에 백업해둔 DB를 복구하거나 DB를 붙이게 되면, 동일한 계정이라 하더라도 로그인이 안 되는 경우가 있습니다. 똑같은 계정인데도 새로 복구한 서버에서 로그인이 안 되는 것은 새로운 서버와 기존 서버의 정보가 달라 같은 계정이라도 로그인이 안되는 문제가 발생합니다. 이런 경우에는 별도의 프로시저를 실행시켜주어야 하는데요. 바로 SP_CHANGE_USERS_LOGIN 프로시저 입니다. 사용자 계정을 맵핑해주는 프로시저로써 해당 프로시져에 기존 사용자의 계정을 넣어서 실행만 해주면 됩니다. USE TEMPDB --복원한 DB명 GO EXEC SP_CHANGE_USERS_LOGIN 'Update_one', 'olduser', 'newuser'..
근태관리 같은 업무를 개발하다 보면, 휴일 등록에 따른 근태를 관리해야 할 필요가 생긴다. 그런 경우, 휴일과 공휴일에 대한 정보를 별도의 DB로 관리를 주어야 하는데, 이럴 경우 1년 중 토요일과 일요일을 구분하여 휴일 처리해주고, 그 외 변동적인 공휴일은 관리자가 직접 수정하도록 해주면 된다. declare @i int set @i=0 while @i
테이블을 만들다 보면 어쩔 수 없이 칼럼을 많이 만들어야 할 때가 있을 것입니다. 쿼리의 효율성으로 보아서는 무작정 칼럼을 많이 만드는 것이 성능면에서 좋은 방식은 아니지만, 그럼에도 불구하고 칼럼을 나열하여 그걸 다시 가로로 변환하느니, 컬럼으로 만드는 것을 선호하는 사람도 있을 수도 있을 것입니다. MSSQL의 경우 칼럼을 아무리 많이 만들고 싶어도 DB 성능을 고려하여 1024개까지만 만들 수 있습니다. 1025개 이상은 만들고 싶어도 에러를 내뱉으며 만들 수가 없기 때문입니다. 그래서 1025개 이상의 컬럼을 만들기 위해서는 SPARSE 즉 스파스 열을 사용하면 가능해집니다. CREATE TABLE TBL( col1 varchar(4) SPARSE, col2 varchar(10) SPARSE, c..
상품권 코드나 Survey코드 등 중복되지 않는 고유하게 코드를 만들어야 할 때가 있습니다. 이런 경우, 별도로 코드를 생성하는 로직을 사용해야 하는데, 숫자와 영문자가 조합된 코드를 생성할 수 있는 스크립트를 만들어 보았습니다. 생성코드의 자리수와 또 개수를 임의로 지정하여 만들 수 있습니다. Declare @i bigint, @RndCode varchar(10), @chLen int, @RandCnt bigint /*생성할 변수 정보*/ Set @chLen = 5 -- 코드 길이수 Set @RandCnt = 100000-- 생성할 코드 수 Set @i=1 While @i