반응형
반응형
개요요구하는 서비스에 따라 가끔은 데이터베이스의 테이블을 수정해야하는 경우가 있다.특히 MS-SQL(SSMS)를 사용하면서 컬럼명을 추가/변경/삭제를 하게 되면 자주 볼 수 있는 오류인데,테이블의 구조를 변경할 수 없다는 내용이다.이번 글에서는 테이블 구조 변경 시 발생하는 오류가 왜 발생하는지의 원인과간단한 해결 방법을 다뤄보려 한다. Error 테이블의 구조를 변경하고 저장하려니 다음과 같은 오류가 발생한다.Saving changes is not permitted.The changes that you have made require the following tables to be dropped and re-created.You have either made changes to a table that ..
개요주기적으로 혹은 어쩌다가 한번씩 대량의 데이터를 입력하거나 수정해야 할 때가 있다.하지만 실제로 서비스 중인 데이터베이스 서버에 대량의 값을 넣으려면다량의 I/O 작업으로 인해 과부하가 발생되어 데이터베이스의 성능이 저하되므로 함부로 작업을 수행하기는 어렵다.이럴 때, 가능한한 서비스 사용자의 이용이 적은 시간대에 스케줄러를 이용하여대량의 데이터를 삽입하는 작업을 하면 서비스의 품질 불량을 최소화할 수 있다. 오늘은 스케줄러를 이용하여 일정을 정하고,정해진 일정에 입력된 작업을 데이터베이스에 수행되도록 하는 방법에 대해 알아본다. 참고 글스케줄러 생성에 관련하여 참고될만한 글 목록이다.자신의 상황과 같은 현상이 일어난다면 확인해보자. SQL Server Agent 가 없거나 중지 상태 일 경우 해결 ..
개요컬럼의 중복된 값을 조회하지 않기 위해 SELECT 구문에 DISTINCT 키워드를 추가하였다.그런데 다음과 같은 오류가 출력되었다.Msg 421, Level 16, State 1, Line 76ntext 데이터 형식은 비교할 수 없으므로 DISTINCT로 선택할 수 없습니다. 확인해보니 컬럼의 데이터타입이 ntext로 되어있다.이 오류가 왜 발생했고, 어떻게 해결하는지 알아보자. 발생 원인ntext 데이터타입은 SQL Server에서 직접적으로 비교하는 DISTINCT, GROUP BY와 같은 비교 연산자와UNION, EXCEPT 같은 집합 연산과 COUNT, SUM과 같은 집계 함수(집계 연산)을 수행할 수 없다. 집합 연산을 수행할 경우에는 다음과 같은 오류 메시지가 출력된다.Msg 5335, ..
SQL Server에서 저장 프로시저의 내용을 검색하는 방법에는주로 시스템 뷰인 sys.procedures와 sys.sql_modules를 사용한다. 시스템 뷰, 시스템 카탈로그 뷰란?우선 시스템 뷰에 대해 간단히 설명하고 넘어가보자.시스템 뷰란 데이터베이스와 관련된 다양한 메타데이터를 뷰 유형으로 제공한다.이 뷰들은 데이터베이스의 구조, 설정, 상태 등을 조회할 수 있는 정보를 제공하고,데이터베이스 관리자가 시스템을 모니터링하고 유지 관리하는데 도움을 주는 기능을 한다. [참고] 뷰에 대한 이해가 어렵다면, 아래의 페이지를 참고하는 것을 추천한다.MSSQL - View - 뷰의 개념과 사용 방법, 분할 뷰 사용법 저장 프로시저의 정보를 확인하기 위한 시스템 뷰는?저장 프로시저의 내용을 검색하려면 시스템..
개요가끔 SQL 쿼리를 보면 WHERE절 맨 앞에 1=1이 있는 것을 볼 수가 있다.SELECT * FROM t1 WHERE 1=1 AND col1 = 'eunbyeol' 처음 볼 때에는 이게 무엇인가 싶었는데,의미를 알고 사용하면 오히려 더 편하게 쿼리를 작성할 수도 있게 된다.오늘은 WHERE 1=1을 왜 사용하는지에 대한 사용 이유에 대해 알아보도록 한다. WHERE 1=1 사용 이유, 왜 사용할까?동적 쿼리 조건 구성의 단순화결론부터 말하자면, WHERE 1=1 은 주로 동적 쿼리를 작성할 때 많이 사용한다.특정 조건에 따라 동적으로 추가되거나 제거되는 조건절을 위한 기본 쿼리 구조로 많이 사용된다.SELECT * FROM t1 WHERE 1=1 위의 예시 쿼리는 동적 쿼리의 기본 구조를 심플하게..
테이블 변수 임시 테이블 선언 DECLARE 키워드 사용, @를 이용한 변수의 형태의 이름을 가짐 CREATE TABLE 키워드 사용, #로 시작하는 테이블 이름을 가짐 데이터 저장 메모리 내에서만 저장 시스템 데이터베이스 TempDB에 저장 I/O 연산 메모리를 사용하기 때문에 빠름 주로 디스크를 사용하기 때문에 비교적 느림 사용 범위 선언된 루틴(프로시저, 함수) 내에서만 사용 사용 가능한 모든 세션에서 사용 생명 주기 정의된 함수 및 프로시저 및 일괄 처리가 끝나면 자동으로 정리 세션이 종료되거나 SQL Server가 종료될 때까지 유지, 혹은 명시적으로 삭제될 때까지 유지 사용 키워드 SELECT, INSERT, UPDATE, DELETE문 사용 SELECT, INSERT, UPDATE, DELE..