반응형
반응형
개요요구하는 서비스에 따라 가끔은 데이터베이스의 테이블을 수정해야하는 경우가 있다.특히 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 ..
데이터베이스의 용량을 축소하려면 크게 두 가지의 구문으로 나뉜다.이는 사용자의 선택에 따라 사용하면 될 듯하다. DBCC SHRINKDATABASE 구문DBCC SHRINKDATABASE(데이터베이스명, 여유공간사이즈)데이터베이스의 파일(데이터, 로그)을 축소하여 디스크 공간을 회수하는 데 사용하는 명령어첫 번째 파라미터 : 축소하려는 데이터베이스의 이름을 입력두 번째 파라미터 : 선택사항, 데이터베이스 파일 내에서 남겨둘 여유 공간의 비율 입력예시1) 만약 '10'의 값을 입력할 경우에는 10% 여유 공간을 남김예시2) 파라미터의 값을 입력하지 않으면 여유 공간 없이 축소 진행 DBCC SHRINKFILE 구문DBCC SHRINKFILE (파일이름, 축소할용량);특정 파일의 크기를 축소하여 사용하지 않..
특정 데이터베이스 디스크 용량 확인 쿼리데이터베이스 행 데이터 확인 쿼리데이터베이스의 용량을 확인할 수 있는 쿼리이다.DB_ID() 괄호 사이에는 데이터베이스의 이름을 넣어주면 된다. ✨ 메가 바이트 단위로 데이터베이스의 용량을 조회하는 쿼리SELECT name AS logical_name, size * 8.0 / 1024 AS size_in_mbFROM sys.master_filesWHERE database_id = DB_ID('데이터베이스_이름'); 용량이 클 경우, GB(기가바이트) 단위로 조회하고 싶으면 1024를 또 나누면 된다.✨ 기가 바이트 단위로 데이터베이스의 용량을 조회하는 쿼리SELECT name AS logical_name, size * 8.0 ..
개요A테이블의 id컬럼을 참조하는 B테이블이 있다.여기서 A테이블의 id컬럼 값을 변경하려고 할 때,데이터 일관성을 유지해야하기 때문에 참조 무결성의 제약 조건으로 업데이트를 할 수 없다.하지만 가끔 잘못 넣은 값을 다른 값으로 업데이트해주어야 할 때가 있는데,FK 때문에 참조 관계로 엮여있어서 계속 오류가 발생하여 값을 업데이트하지 못한다.발생되는 오류는 다음과 같다.Error Code: 1451.Cannot delete or update a parent row: a foreign key constraint fails (`database`.`FK table`, CONSTRAINT `FK Name` FOREIGN KEY (`id`) REFERENCES `table` (`id`)) ON UPD..
개요데이터베이스의 데이터 모델링 설계 시,설계된 데이터 테이블의 설계도를 시각화해야할 때가 있다. ERD(Entity Relationship Diagram)은데이터베이스에서 모델링된 요소들의 관계를 시각적으로 보여주는 엔터티 관계 다이어그램인데,주로 데이터베이스의 설계된 모델을 시각적으로 표현하고 관계를 설명할 때 사용된다. 이번 포스팅에서는 ERD를 직접 그리는 방법보다는실제로 MySQL 데이터베이스 내에 설계되어 있는 데이터 테이블을 추출하여ERD로 자동으로 그려주는 방법에 대해 설명하고자 한다. 이 글은 MySQL Workbench의 기능을 이용하여 ERD를 그리는 것을 목적으로 한다. 실제 데이터베이스의 테이블을 ERD로 그리기우선, MySQL Workbench를 실행한다. 워크벤치 상단 메뉴에서..
개요주기적으로 혹은 어쩌다가 한번씩 대량의 데이터를 입력하거나 수정해야 할 때가 있다.하지만 실제로 서비스 중인 데이터베이스 서버에 대량의 값을 넣으려면다량의 I/O 작업으로 인해 과부하가 발생되어 데이터베이스의 성능이 저하되므로 함부로 작업을 수행하기는 어렵다.이럴 때, 가능한한 서비스 사용자의 이용이 적은 시간대에 스케줄러를 이용하여대량의 데이터를 삽입하는 작업을 하면 서비스의 품질 불량을 최소화할 수 있다. 오늘은 스케줄러를 이용하여 일정을 정하고,정해진 일정에 입력된 작업을 데이터베이스에 수행되도록 하는 방법에 대해 알아본다. 참고 글스케줄러 생성에 관련하여 참고될만한 글 목록이다.자신의 상황과 같은 현상이 일어난다면 확인해보자. SQL Server Agent 가 없거나 중지 상태 일 경우 해결 ..