본문 바로가기

SQL

(39)
[Sequel Safe] SQL 서버 Login 권한 정책 및 물리 모델 변경 제약 I. Sequel Safe에서 DBA로 지정된 사용자만이 모델을 수정할 수 있습니다. 먼저 Sequel Safe에 국한하여 다음과 같이 용어를 재 정의합니다. DBA SQLSafe.dbo.DBAs 테이블에 등록되어 있는 Login을 말합니다. 모델러 & SQL개발을 담당하는 sysadmin에 속한 사람을 등록합니다. SQLDeveloper 개발 네트워크의 개발 DB에 추가되어 있는 DB Role입니다. 개발 DB에 대해 db_owner 역할에 속하지만, 테이블과 뷰를 생성할 권한은 없습니다. SQL개발을 담당하는 사람이 이 Role에 속합니다. Developer 개발, 테스트 & QA 네크워크의 DB에 추가되어 있는 DB Role입니다. db_datareader와 db_datawriter 역할에 속합니다..
[Sequel Safe] Programmability 버전 관리 저장 프로시저를 조회하고 수정할 때 어떻게 하시는지요? 아마 대다수의 개발자 분들이 아래 스샷의 방법을 사용하고 있으리라 생각합니다. 저도 현업에 발을 들인 이후 한참 동안이나 이런 방법을 사용해 왔습니다. 그러다 모듈 별로 버전 관리가 필요하다는 걸 느꼈고, 당시 선택했던 방법은 Visual Source Safe 사용이었습니다. 모듈 하나 하나를 파일로 만들어 관리했죠. 그런데, 이 방법에도 문제가 있었습니다. 아무리 주의를 기울여도... 개발 DB와 소스 파일의 싱크가 어긋나는 일이 발생하더군요. 한 100개에 1개 정도? 그러던차에 SQL 2005를 접했고, DDL트리거를 사용해 보기로 했고... 그 산출물이 지금 강좌를 진행하고 있는 Sequel Safe입니다. 각설하고... 몇 가지 이유로 인해..
[Sequel Safe] 발판 코드 or CRUD 코드를 이용하여 SP작성하기 테이블의 레이아웃 정보를 이용하여 CRUD용 SP 코드를 자동 생성해 주는 기능입니다. 참고로 CRUD란... Create Retrieve Update Delete의 머리 글자에서 따온 용어입니다. 발판 코드의 잇점을 나열하면 이렇습니다. 1. 테이블 별로 INSERT, SELECT, UPDATE, DELETE 작업을 수행하는 SP를 빠르게 작성할 수 있다. 2. 주석, 변수 명명, 에러 핸들링과 같은 코딩 규칙을 통일 할 수 있다. 3. 테이블의 컬럼 정의를 SP의 파라미터 정의에 재활용하여 주석 작성 시간을 줄여준다. 제 경험으로보면, 통상 테이블 수의 3 ~ 4배 가량의 Stored Procedure가 만들어집니다. (그 이상이라면 SP가 적절히 추상화되지 못했기 때문일 겁니다.) 그 중 50% 이..
[Sequel Safe] SP 작성 규칙 주석 작성 규칙 상단 주석 작성 방법 작성자, 작성일자, 내용, 리턴값을 기입합니다. 모든 SP는 int 타입의 값을 리턴합니다. 만약, 정의하지 않는다면 암묵적으로 0이 반환되는데... 이 값을 SP의 실행 결과 또는 에러 번호로 활용하는 것이 좋습니다. description 항목은 SP가 CREATE될 때, DDL트리거에 의해 확장 속성으로 자동 추가됩니다. /** author : doeyull.kim e-mail : purumae@gmail.com created date : 2009-03-31 description : 기사카테고리를추가합니다. return value : 0 = 에러가없습니다. 1 = 트랜잭션을Commit할수없는상태입니다. 트랜잭션을Rollback합니다. 100 = 시스템에러가발생하였..
[Sequel Safe] 테이블 명세 & 모듈 명세 개요데이터베이스와 연동하여 개발할 때, 개발자가 필요로하는 정보에는 이런 것들이 포함됩니다.데이터베이스 연결 정보 : 호스트 이름 (또는 IP주소), 포트 번호, 로그인 계정 및 패스워드ERD테이블 명세서모듈 명세서 (Stored Procedure, User Defined Function 등) 위에 나열한 정보 중 업데이트 주기는 이런 순서라고 보입니다.D > C = B > A그런데, 업데이트가 비교적 빈번한 C와 D항목을 사람이 일일이 수작업으로 문서화 하기는 어렵습니다. 이것이 가장 흔한 문제이면서 또한 가장 심각한 문제인데요. 즉, 시스템과 문서의 버전이 일치하지 않는다는 점입니다.회사마다 문서 관리 시스템이 상이하기 때문에 어떻게 문서를 관리하는 것이 정답이다라고 말할 수는 없습니다.다만, 제 경..
[Sequel Safe] 설치 및 개발 환경 셋업 Sequel Safe 설치다음 2개의 데이터베이스를 생성합니다.DBDailyBuild DB SQLSafe DB (2009.07.03 현재 최신 버전은 build 14입니다.)SQLSafe DB에서 다음 Query를 실행합니다. 12INSERT dbo.DBAs (loginName, registerDate)VALUES (ORIGINAL_LOGIN(), GETDATE());csmaster DB에서 아래 script를 실행합니다. History 2013.09.27 - 발판 코드로 생성한 SP가 SQL Server 2012에서 에러를 정상적으로 처리하지 못하는 오류 수정 - master 데이터베이스에서 master.sql을 실행해야합니다. 2009.10.23 - 개발 DB에서 SQL Agent에 의해 실행되는 D..
[Sequel Safe] 개요 데이터베이스에서 버전 관리의 대상이 되는 것은 무엇일까요? 1. Stored Procedure 2. User Defined Function 3. Trigger 4. DATABASE Snapshot 그러나 현업에서 상기의 요소들에 대해 버전 관리가 체계적으로 이뤄지는 경우는 많지 않습니다.SQL Server 개체에 대한 버전 관리의 필요성을 인식하지 못하거나, 필요성을 느끼더라도 마땅한 방법을 찾지 못했기 때문이겠죠.개발자로부터 DB에 대한 이런 불만을 들으면서, 필요성에 대해서는 확실히 인지할 수 있었습니다. "내가 작성한 소스 코드는 빌드 과정을 통해 버전 관리를 하고 있는데, DB는 빌드라는 개념이 없다보니 배포할 때 항상 불안하다. 심지어 DB가 누군가에 의해 수정되더라도 그 사실을 알아챌 수 없더..