목록SQLServer (16)
Data Modeling Evangelist Kaien Kim's Blog
오라클에서는 TRUNC함수로 소수점 이하 자리 절삭을 하는데, SQLServer에서는 TRUNC함수가 없다. 그러면 어떻게 해야하는가? 이렇게 하면 된다. SELECT ROUND(150.75665, 2, 1) > 150.75000 SELECT ROUND(150.75665, 2, 0) > 150.76000 정리하면... ROUND ( numeric_expression, length [ , function ] ) numeric_expression 정확한 숫자 데이터 형식 또는 근사 숫자 데이터 형식이나 암시적으로 float로 변환할 수 있는 형식의 식입니다. length numeric_expression을 반올림할 전체 자릿수입니다. length가 양수이면 numeric_expression은 length에 ..
비투엔컨설팅의 프로마스터(ProMaster) 시리즈 3번째 이고, 우연히 "괜찮은 책 나온게 있나?"하고 서점 웹사이트를 보다 발견한 책이다. Oracle관련 괜찮은 책은 국내에 많이 있지만 MicroSoft사의 SQLServer관련 좋은 서적은(특히 번역본이 아닌 순수 국내서로는) 찾아보기 힘들다. 가뭄속 단비라 할 정도로 이 책은 보기드문 수작이다. 거의 모든 설명이 실습예제와 함께있기에 좋다는 생각이 든다. 단순한 예제가 아닌 저자의 고민이 담긴 훌륭한 예제라 더욱... 근 1년 사이에 비투엔에서 나온 3권의 책은 꽤 오랜기간 이 분야의 필독서가 될 듯 하다. 내 주관심 분야인 모델링 책도 출간할 예정이라 들었는데, 많이 기대가 된다. 반면에 데이터베이스 분야의 베스트 셀러를 줄줄이 출간했던 엔코아..
1. 특정 문자가 포함된 SP 검색 SELECT A.NAME FROM SYSOBJECTS A, SYSCOMMENTS B WHERE A.ID = B.ID AND B.TEXT LIKE '%' + '김승태' + '%' 2. 특정 이름의 SP 검색 SELECT A.NAME FROM SYSOBJECTS A, SYSCOMMENTS B WHERE A.ID = B.ID AND A.NAME LIKE '%' + @sp_name + '%'
/* 동적 쿼리의 해결사 sp_executesql vs. exec 소개. Visual Basic, ASP, VB.NET에서 ADO, ADO.NET을 이용한 Database 프로그램을 개발하는 경우 프로그램내에 SQL 구문을 문자열로 연결한 후, 실행하도록 구성한 코드를 많이 보게 된다. 이러한 코드 구성을 일반적으로 '동적 쿼리', '하드 코딩된 쿼리'라고 부른다. ex. vb의 경우 Dim strSQL As String strSQL="select orderid, orderdate, employeeid from orders" strSQL=strSQL+" where orderid=" & txtOrderID cnn.Execute strSQL 그러나, 이러한 동적 쿼리의 사용은 가능한 배제하는 것이 권장 사항..
TRY..CATCH를 이용한 중첩 트랜잭션 예외처리. 개요. TRY .. CATCH 구문 내에서의 트랙잭션 처리에 대해 어떻게 구현되는지 알아보는 것과 트랜잭션으로 처리하는 프로시저 내에서 다시 트랜잭션으로 처리하는 프로시저를 호출 시 제대로 작동하는지 확인하는 것이 이 문서의 목적입니다. 테스트 샘플. 테스트 샘플은 분모를 파라미터로 받아서 0을 제외한 값은 에러가 나지 않고 0인 값은 에러가 나는 예제입니다. 1. 테스트 테이블 생성 CREATE TABLE TryTest ( id1 int, id2 int ) 2. 부모 프로시저 작성. CREATE PROCEDURE ParentTest ( @bunmo int ) AS BEGIN SET NOCOUNT ON; BEGIN TRY BEGIN TRAN Paren..
1. DB 생성시 주의사항 1) DB 명칭은 해당 서비스를 파악할 수 있도록 명명한다. 2. USER 생성시 주의사항 1) USER ID는 유관 서비스를 파악할 수 있도록 명명한다. 2) Password는 운용팀 DBA의 생성규칙을 따른다. 3. 테이블 생성시 주의사항 1) Table Column 길이의 합이 8K를 넘지 않도록 할 것 2) Table 및 Column 이름은 일관성 있게 줄 것 (예: TB_, str_) 3) PK / FK Column은 고정길이 형식을 사용할 것 (예: CHAR Type) 4) Trigger의 사용을 자제 5) Table의 소유자는 항상 ‘DBO’가 되도록 한다 4. 인덱스 생성시 주의사항 1) Where 절에서 많이 사용하는 경우 생성 2) Covered Index인 ..
USE AdventureWorks GO EXEC sp_helpfile -------- 1) EXEC sp_spaceused -------- 2) DBCC sqlperf(logspace) -------- 3) ALTER DATABASE AdventureWorks MODIFY FILE ( NAME = AdventureWorks_Data, SIZE = 500 ) EXEC sp_helpfile -------- 4) ALTER DATABASE AdventureWorks MODIFY FILE ( NAME = AdventureWorks_Data, FILEGROWTH = 100, MAXSIZE = 500 ) GO -------- 5) ALTER DATABASE AdventureWorks MODIFY FILE ( NAM..
SQL Server에서 컬럼 값의 길이를 가져와야 할 경우, 크게 - 그냥 길이 - byte수 로 구분할 수 있다. 오라클에서는 1) SELECT LENGTH('모델링월드') FROM DUAL; 2) SELECT LENGTHB('모델링월드') FROM DUAL; 일 경우 1)은 5, 2)는 10을 리턴한다. 이건 이전 부터 알고있었는데, 요걸 SQLServer에서 사용할 일이 생겼다. 열심히 찾아 보았다. ^^; 역시 있었다. 문법도 오라클과 동일하다. DATALENGTH ( expression ) -인수 expression 임의 데이터 형식의 식입니다. -반환 값 int 1) SELECT LEN('모델링월드') 2) SELECT DATALENGTH('모델링월드') 일 경우 1)은 5, 2)는 10을 리..
DATEADD(hh, 9, DATEADD(s, regdate, '1970-01-01'))
SQLServer2005설치 후 잘 설치가 되었는지 확인해보자. 1. 실행 에서services.msc입력 후 확인 2. 서비스 창에 - SQL Server(ADMIN1) - SQL Server Agent(ADMIN1) - SQL Server Analysis Services(ADMIN1) - SQL Server FullText Search(ADMIN1) 등 의 서비스가 "시작됨"으로 되어있으면 정상적으로 설치된것이다. "ADMIN1"은 명명된 인스턴스로 설치했을 경우 입력한 이름입니다. 혹! 틀린부분이 있다면 의견 바랍니다~^^