'SQL Server 및 Windows 인증 모드'를 활성화하는 방법을 알아봅시다. 1. 에러의 발견 MSSQL에 로그인하려는데 다음과 같은 에러가 발생했습니다. exception code = '0xe0434352'. First 30KB characters of captured stdout and stderr logs: Unhandled exception. Microsoft.Data.SqlClient.SqlException (0x80131904): 사용자 '[MSSQL 로그인 계정]'이(가) 로그인하지 못했습니다. ***** 진짜 에러 내용 ***** 사용자 '[MSSQL 로그인 계정]'이(가) 로그인하지 못했습니다. 이유: SQL 인증을 사용하여 로그인하지 못했습니다. 서버가 통합 인증만 사용하도록 구..
DB에 있는 데이터를 모두 옮기는 것이 아니라 일부 데이터만 옮겨야 할 때 쓸 방법의 하나가 'BCP'를 이용하는 방법입니다. ( 참고 : bcp 유틸리티 ) 윈도우 인증만 되어있다면 콘솔 창 열고 명령어만 날려주시면 됩니다. 1. 'Select' 하여 내보내기 여기에는 전체를 내보낼 수도 있겠지만 우리는 원하는 결과만 잘라서 내보내겠습니다. 예를 들면 콘솔에 다음과 같이 넣습니다. bcp "SELECT * FROM TestDB.dbo.tb_BigData1 where nIndex > 10 And nIndex < 50" queryout d:\Contacts.txt -c -T TestDB : 데이터베이스명 Tb_BigData1 : 테이블명 이제 'D'드라이브로 가시면 'Contacts.txt'라는 파일이 생..
MSSQL 저장 프로시저는 변경 이력 관리가 힘듭니다. 보통 테스트용 DB에서 테스트가 끝나면 실 DB로 옮기는 작업을 해야 하는데 버전 관리가 안 된다는 건 힘든 일이죠. 물론 툴이 있긴 합니다. ( 참고 : SQL Source Control, sourcegear - vault ) 무료 툴이 있는지는 모르겠습니다 ㅡ.-;;;;; 그런데 르매님이 만드신 트리거가 있습니다. (참고 : MS SQL/Sequel SAFE for MS-SQL - 르매의 SQL 이야기) 무료로 쓸 수 있고 편리성도 좋습니다 ㅎㅎㅎ 근데 각 잡고 쓸 때는 좋은데 가볍게 쓸 때는 손이 좀 갑니다. 마침 다른 분이 간단하게 쓸 때 사용하는 트리거를 공개하셨네요. ( 참고 : SQLER.com - SVN에서 소스를 관리 하듯이 저장 프..
이전 글에서 'Row_Number'를 이용하여 검색된 결과에 순서대로 번호를 부여한 후 이 번호를 기반으로 'bettwen'으로 필요한 범위를 잘라내는 방법을 설명하였습니다. 동적 코드 없이도 코드가 깔끔하지만 속도가 너무 안 났고 그 원인을 분석해보니 셀랙트 부분에 있는 'Case'문이 문제였습니다. (참고 : [MSSQL] MSSQL의 페이징 쿼리 고찰 - 1. Row_Number + bettwen) 이 문제를 해결할 수 있도록 튜닝해 봅시다. *글을 읽기전에 이전글( [MSSQL] MSSQL의 페이징 쿼리 고찰 - 0. 테스트 환경 만들기(클릭) )을 보고 오시는 것이 좋습니다.* 연관글 영역 1. 사용 방법 사용 방법은 다음과 같습니다. Select Row_Number() Over ( Order ..
동적쿼리를 덜 사용하기 위해서 이짓저짓하다 보면 끝 자락쯤에서 생기는 문제가 오더바이(Order by)절입니다. 오더바이절에서도 선택문을 제한적이지만 사용은 가능합니다.(몇 버전부터 가능한지는 모르겠습니다.) (참고 : MSDN - ORDER BY 절(Transact-SQL)) 연관글 영역 1. 사용 방법 사용 방법은 크게 2가지가 있습니다. 일반적인 케이스문처럼 사용하는 방법과 콤마(,)를 이용하여 여러 조건을 주는 것이죠. Declare @nOrderColumn int = 1; Select * From tb_BigData1 Order by (case @nOrderColumn when 1 Then Data1 when 2 Then Data2 when 3 Then Data3 when 4 Then Data4..
'Row_Number'를 이용하려면 'MSSQL 2005'이상에서 사용 가능한 방법입니다. 'Row_Number'를 이용하여 검색된 결과에 순서대로 번호를 부여한 후 이 번호를 기반으로 'bettwen'으로 필요한 범위를 잘라내는 방법입니다. 동적 쿼리를 전혀 사용하지 않아도 중복되는 코드 없이 깔끔하게 코드를 만들 수 있다는 장점이 있습니다. *글을 읽기전에 이전글( [MSSQL] MSSQL의 페이징 쿼리 고찰 - 0. 테스트 환경 만들기(클릭) )을 보고 오시는 것이 좋습니다.* 연관글 영역 1. 사용 방법 사용 방법은 다음과 같습니다. Select ( Row_Number() Over ( Order By [정렬 기준 컬럼] [정렬 방향] )) as [Row_Number()로 만든 순서 컬럼명], [출..
MSSQL에서 페이징 처리는 여러 가지로 귀찮습니다. MSSQL 2012버전부터는 어느 정도 간단하게 처리할 수 있도록 오프셋(OFFSET)을 지원하긴 하는데....성능이-_-; 어찌 됐건 예전에 만들어둔 페이징 쿼리가 너무 느려 이상해서 이것저것 테스트하다 보니 이 기회에 정리 좀 해야겠다 싶어 포스팅을 시작합니다. ㅎㅎㅎ MSSQL에서 사용할 수 있는 페이징 쿼리를 소개하고 속도, 유지 보수성 등의 몇 가지 중요하다고 생각되는 요소를 주관적으로 평가해보겠습니다. 연관글 영역 1. 테스트 DB 만들기 테스트를 위해 테스트용 DB를 만들겠습니다. 1-1. DB 생성 테스트용 DB의 이름은 'TestDB'입니다. 1-2. 테이블 생성 테이블은 2개를 생성합니다. SET ANSI_NULLS ON GO SET..
별생각없이 Select TOP @nTemp From @table; 이렇게 작성 했더니 '[변수]'근처의 구문이 잘못되었습니다. 필요 REAL, INTEGER, NUMERIC 또는 '('. 이런 에러가 ㅡ,.ㅡ;; 에라이~ 1. 'TOP'에 변수를 사용할 수 있다.'TOP'에 변수를 사용할 수 있게 된것이 'MSSQL 2005'부터 입니다. 그래서 그런지 가끔 'TOP'에는 변수를 쓸 수 없다고 생각하는 사람들이 있습니다. 하지만 가능합니다! (참고 : MSDN - TOP(Transact-SQL)) MSDN에 보면 '2.TOP에 변수 사용'에서 변수를 소괄호(())로 감싸서 사용하는 것을 알수 있죠. 2. 'TOP'에 변수 사용하기그냥 괄호만 추가 하면 됩니다. Select TOP (@nTemp) From..
흠.... 간만에 서버에 MSSQL설치해야 해서 IDC센터에서 다해준다길례 해달라고 했습니다. 그런데..... 1.문제 'sa'계정으로 연결하려고 하니 앵? 윈도우 인증은 되는데 'SQL Server'인증이 안되는 겁니다 ㅡ,.ㅡ;;;;; 비밀번호를 내가 직접 넣었는데? 2. 해결 방법 로그인 안되는 것에 이유가 많습니다. 보통은 TCP가 허용됬는지 확인하고 방화벽을 열면되죠. 우리가 흔이 아는 이 내용은 물론 다 적용이 되어 있습니다. 보통 '윈도우 인증'은 되는데 'SQL 서버 인증'이 안된다면 원인은 한가지죠. 로그인의 '혼합 인증 모드'가 꺼저 있다는 것입니다!!!! 아..... 저는 MSSQL을 설치할때 혼합모드로 설정하고 설치하기 때문에 이런 문제를 볼 수 없던 것입니다-_-;; 다른 사람이 ..
데이터베이스는 버전 관리가 쉽지 않다는 문제가 있습니다. (물론 몇 가지 방법을 쓰면 불가능한 건 아닌데 일반적인 프로젝트 관리에 비하면....-_-;) 그래서 테스트DB와 실제DB와 차이가 크게 날 경우 저장 프로시저 같은 것들은 싹 날리고 생성하는 게 편합니다. 그 외에도 여러 가지 용도로 테이블이나 함수, 뷰 같은 것을 한 번에 지우기도 합니다. 1. 명령어 생성 저번 글에서 저장 프로시저나 테이블 같은 구성요소를 검색하는 방법을 알아봤습니다. (참고 : [MSSQL] MSSQL의 여러 구성요소 검색하기 - 'sys.objects') 검색 결과를 보면 이름이 출력되죠, 그러니 앞뒤로 쿼리를 붙여주면 우리가 원하는 동작을 하는 쿼리를 만들 수 있습니다. 예를 들면 테이블의 경우 'Drop Table'..