MSSQL에서 날짜+시간을 나타내는 데이터형식은 데이트타임(datetime)과 스몰데이트타임(smalldatetime) 이 두 가지가 있습니다. ( 참고 : MS Learn - 날짜 및 시간(Transact-SQL) ) 날짜, 시간 관련 데이터 형식이라고 구분한다면 날짜만 나타내는 '데이트(date)'타입도 있습니다. 1. 차이 이 두 가지의 큰 차이는 datetime smalldatetime 정확도 1/100초(3.33밀리초) 1분 저장 공간 8 byte 4 byte 범위 1753년 1월 1일부터 9999년 12월 31일까지 1900년 1월 1일부터 2079년 1월 6일까지 2. 사용 시 알고 있어야 할 내용들 스몰데이트타임은 사용할 때 바로 변환이 되지 않는 경우가 꽤 있습니다. 예를 들면 'ToSt..
이전 글에서 테이블 변수에 관해서 이야기했었습니다. 임시 테이블과 테이블 변수는 사용하는 방법 면에서는 별 차이가 없으나 성능상 차이가 있다고 합니다. 테이블 변수가 성능 면에서 더 유리하다고 하는데....직접 비교는 해보지 않아서 잘 모르겠습니다 ㅎㅎㅎ (참고 : [MSSQL] 저장프로시저에서 테이블(Table) 변수 사용하기 ) 1. 선언 선언 임시테이블이므로 크리에이트 테이블(Create Table)로 생성하면 됩니다. --리턴값을 받기위한 임시 테이블 --Create Table [생성할 테이블 이름] ( [컬럼명] [데이터형], ... , [컬럼명] [데이터형] ) Create Table #Result ( nIndex int , sName varchar(16) , sID varchar(16)) 2..
테이블 변수라는 것은 변수로 선언된 테이블을 말합니다. 셀랙트(Select)하여 받아온 데이터를 저장 프로시저(stored procedure)에서 처리할 때 사용합니다. 1. 선언 선언은 'table'로 하면 됩니다. Declare @Table table ( nIndex int , sName varchar(16) , sID varchar(16)) 2. 입력 입력은 인서트(Insert)를 이용하면 됩니다. Insert @Table Select * From tb_WebServiceTest Where intIndex = 45 이렇게 하면 셀랙트의 결과가 테이블 변수로 들어가게 되죠. 3. 사용 사용은 일반적인 테이블처럼 사용할 수 있습니다. 셀랙트뿐만 아니라 4대 천황도 사용할 수 있습니다. Select * ..
저장프로시저를 만들고 테스트해보면 메시지 "(1개 행이 영향을 받음)" 이런 메시지를 볼수 있습니다. 말그래로 저장프로시저 안에서 테이블에 영향을 주면(4대 천황같은 것을 사용하였을때) 출력됩니다. 만약 여러번 영향을 주면(select를 여러번 한다던가)하면 여러줄이 나옵니다. 그런데 이런 메시지가 서버에 부하를 준다는 군요 ㅡ.-; 그렇기 때문에 'Set Nocount on' 사용을 권장하고 있습니다. 저장프로시저의 시작점에 'Set Nocount on'를 적어 주시면 됩니다. (참고 : MSDN - SET NOCOUNT(Transact-SQL)) 예를 들면 아래와 같습니다. ALTER PROCEDURE [dbo].[TestSelect] As BEGIN Set Nocount on Select * Fro..
마이크로 소프트 오피스에 비지오(Visio)라는 프로그램이 포함되어 있습니다. (라이센스에 따라 없을수 있음.) 하지만 따로 설치 해야 하죠 ㅡ.-; 비지오는 강력한 다이어그램 작성툴로 마이크로 소프트 오피스계열과도 궁합이 잘맞는 편입니다. (이전버전들의 경우 좀 궁합이 안맞긴 했습니다만...지금은 괜찬은듯 하네요.) ERD라는 것은 개체-관계다이어그램(Entity-Relationship Diagram)을 말합니다. (참고 : 위키백과 - 개체-관계 모델 ) 이미 만들어진 데이터베이스의 ERD를 생성하는 툴은 몇가지가 있지만 비지오는 평상시에도 많이 사용하므로 비지오를 이용하여 생성하는 방법을 다루겠습니다. 여기서 사용된 비지오 버전은 'Miocrosoft Visio 2010' 입니다. 1. 템플릿 생성..
DB를 사용하기 위해 ODBC를 설정하곤 합니다. (참고 : ODBC ) 다른 운영체제는 모르겠지만 윈도우환경에서 은근히 많이 사용합니다. 그런데 DB좀 만져봤다는 녀석이 ODBC라는 소리를 들었을 때 멍때리면..... 물론 농담이고 모를 수도 있습니다 ㅎㅎㅎ 어찌됬건 ODBC를 설정해 봅시다. 1. 데이터 원본(ODBC) 찾기 ODBC는 제어판 > 관리 도구 > 데이터 원본(ODBC) 로 들어가면 됩니다. 2. 추가 'ODBC 데이터 원본 관리자'가 실행되면 추가를 눌러 줍니다. '새 데이터 원본 만들기' 창에서 우리가 사용할 DB형식은 MSSQL이므로 'SQL Server'을 선택하고 마침을 누릅니다. 'SQL Server에 새로운 데이터 원본 만들기'의 내용을 채웁니다. 이름 : 외부에 노출될 이름..
기본키를 왜 여러 개 지정해야 하는지 모르겠습니다만..... 누가 만들어놓은 테이블을 옮겨야 하는데 기존 테이블과 합쳐야 해서 보니.... 키가 여러개네? 1. 쿼리로 생성 그래서 검색해보니.... 쿼리로 하는 방법이 있네요. create table #t1( comID int not null, projID int not null, projPart varchar(10), PRIMARY KEY CLUSTERED ( comID, projID ) ) 2. UI로 생성 매니지먼트 스튜디오 상에서 할 수 있는 방법이 있을 거라는 생각했는데.... 안 나옵니다?? 그래서 키 쪽 보면 뭔가 있을까 해서 보니..있네요. 해당 테이블 오른쪽클릭 > 디자인(수정) > 테이블 디자인에서 오른쪽 클릭 > 인덱스/키 를 누른 후..
이것도 누가 물어봐서 찾아봤는데..... 이건 정말 어디에 쓰는 건인지 모르겠네요 ㅡ.-; 여튼 MSSQL에 해당 디비에 저장 프로시저 목록을 보것이 가능 합니다. 쿼리 INFORMATION_SCHEMA.ROUTINES 를 조회하면 됩니다. 테스트 이름만 필요하다면 ROUTINE_NAME 만 출력하면 됩니다. Select ROUTINE_NAME From INFORMATION_SCHEMA.ROUTINES Where ROUTINE_TYPE='PROCEDURE' Order By ROUTINE_NAME 전체 컬럼을 출력해보면 알겠지만 내용이 많습니다 ㅋㅋㅋㅋ 그런데 시스템 프로시저도 출력이 되는군요. 덕분에 결과가 더 복잡해!!! 마무리 그런데 여전히 이건 어디에 쓰는 건인지 모르겠습니다 ㅡ.-;; 문서 만들 ..
1. 필요한가? 언제 필요한 것인지는 모르겠으나 누가 필요하다고 해서 찾아봤습니다 ㅡ.-;; 예전에 저장 프로시저 찾기 귀찮아서 한번 써본 기억이 있지만 자주 쓰는 것이 아니다 보니 기억이 잘-_-a 저장 프로시저의 개수가 많다거나 프로그램에서 호출되는 이름만으로 찾을 목적이라면 도움이 되긴 합니다. 2. 방법 "SP_HELPTEXT"를 사용하면 됩니다. -- 저장 프로시저 내용 exec SP_HELPTEXT [프로시저 이름] 마무리 쉽습니다 ㅋㅋㅋ 근데 이걸 쓸 일이 있겠느냐? 한다면.....
DB를 다른 드라이버로 옮기고 연결했더니.... 복구한 DB가 '읽기 전용'인 경우는 처음 봐서 당황했습니다 ㅎㅎㅎ 이런 경우가 2가지 경우가 있는데. 1. DB 파일이 읽기전용인 경우 2. 파일시스템에 권한이 없는 경우 1. DB 파일이 읽기 전용인 경우 당연히 파일 자체가 읽기 전용인 경우 '읽기 전용'으로 열립니다. 그런데 옛날부터 있던 버그가 있죠. 읽기전용이 아닌데 읽기 전용인 경우가 있습니다. 이럴 때는 읽기전용을 걸어주시고 '적용'하신 후 '확인'을 눌러 창을 닫고 다시 속성을 열고 읽기전용을 풀어주고 '적용' -> '확인'하시면 됩니다. 2. 파일 시스템에 권한이 없는 경우 이건 또 2가지 경우로 나눌 수 있는데 '지금 로그온되어있는 계정의 권한 문제'와 'SQL 서버 매니지먼트 스튜디오(..