본문 바로가기

DBMS

(116)
[SQL Server] 테이블 단위 백업 보통 SQL Server는 테이블 백업이 안되는 것으로 알고 있는데 가능하다. 먼저 백업할 테이블이 있는 DB를 선택 후 태스크 → 스크립트 생성 백업하고 싶은 개체 선택 (테이블, 뷰, 저장 프로시저 등...) 백업할 테이블을 선택 스크립팅 옵션 설정에서 고급을 클릭 고급 옵션에서 스크립팅할 테이터 형식을 스키마 및 데이터로 변경한다. (처음엔 스카미로 되어있다.) 스크립트를 저장할 방법을 지정한다. 스크립트 저장 성공 확인 확인해보면 스키마 뿐 아니라 데이터를 저장하는 INSERT 문도 같이 포함된 것을 확인할 수 있다. ※ 100만건의 데이터가 든 테이블을 새 쿼리창에 저장하였을 때 오류가 발생하였다. 하지만 파일로 저장하면 오류 없이 잘 저장된다. 데이터가 많을 때는 파일로 저장하여 백업하자.
[SQL Server] TOP 절에 변수 사용하기 TOP 10 이라고 선언하면 10개의 행만, TOP 15 라고 선언하면 15개의 행만 반환된다. 그렇다면 TOP 절에 변수를 사용할 수 있을까? SQL Server 2005 부터 TOP 절에 변수를 사용할 수 있다. 2000 버전에서 TOP 절에 변수를 사용해보면 오류가 나는 것을 확인할 수 있다. 2005 버전에서 변수를 사용하면 잘 실행된다. 단, TOP (@TOPNUM) 을 선언할 때 ( ) 는 꼭 사용해야 한다. USE PUBS GO DECLARE @TOPNUM INT SET @TOPNUM = 15 SELECT TOP(@TOPNUM) * FROM AUTHORS GO
[SQL Server] SET NOCOUNT ON SET NOCOUNT ON - Transact-SQL 문 또는 저장 프로시저의 영향을 받은 행 수를 나타내는 메시지가 결과 집합의 일부로 반환되지 않도록 한다. SET NOCOUNT 문이 OFF인 상태일 때 SELECT, INSERT, UPDATE, DELETE 의 명령을 실행하면 아래와 같이 영향 받은 행 수를 나타낸다. SET NOCOUNT 문이 ON이면 영향 받은 행 수를 나타내는 메시지가 반환되지 않는다. Transact-SQL 루프가 포함된 프로시저의 경우 SET NOCOUNT를 ON으로 설정하면 네트워크 트래픽이 크게 줄기 때문에 성능이 눈에 띄게 향상된다. 그리고 ON/OFF 둘다 @@ROWCOUNT 함수는 업데이트 된다. 그러므로 프로시저를 생성할 때 습관적으로 SET NOCOUNT ON을..
[SQL Server] 특정 문자열이 포함된 프로시저 찾기 다른 팀에서 자신들의 프로시저를 우리쪽 프로시저 안에서 호출하는지 확인 요청이 왔다. 그 많은 프로시저를 일일이 까보면서 다른 팀의 프로시저를 확인해야 할까... 프로시저 안에서의 프로시저명은 문자열로 취급되고, 아래의 쿼리로 찾을 수 있다. SELECT ROUTINE_NAME FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'PROCEDURE' AND ROUTINE_DEFINITION LIKE '%문자열%' ORDER BY ROUTINE_NAME SELECT A.NAME FROM dbo.SYSOBJECTS AS A INNER JOIN dbo.SYSCOMMENTS AS B ON A.ID = B.ID WHERE A.TYPE = 'P' AND B.TEXT LI..
[SQLite] SQLite 란? SQLite는 MS SQL Server나 Oracle, MySQL과 같은 데이터베이스 관리 시스템이지만, 서버가 아니라 응용 프로그램에 넣어 사용하는 비교적 가벼운 데이터베이스이다. 일반적인 RDMS에 비해 대규모 작업에는 적합하지 않지만, 중소 규모라면 속도에 손색이 없다. 또 API는 단순히 라이브러리를 호출하는 것만 있으며, 데이터를 저장하는데 하나의 파일만 사용하는 것이 특징이다. 구글 안드로이드 운영체제에 기본 탑재된 데이터베이스이기도 하다. 무료로 사용할 수 있으며, 가볍고 속도가 빠르며 사용하기 쉬워 모바일 기기에 적합한 환경을 제공한다. 참고 : http://ko.wikipedia.org/wiki/SQLite
[SQL Server] 로그 파일 크기 축소하기 로그 파일이 급격하게 증가하였을 경우, 로그 파일을 축소하기 위해 DBCC SHRINKFILE 문을 사용하면 된다. 예를들어 TestDB 라는 데이터베이스의 Test_LOG 라는 로그 파일이 현재 3GB이다. 이 로그 파일을 500MB로 축소하기 위해 다음과 같이 실행하면 된다. USE TestDB DBCC SHRINKFILE (N'Test_LOG', 500) 그런데 파일 크기가 축소되지 않는 경우가 있다. 이럴 때는 RECOVERY 모드를 SIMPLE로 변경하여 문제를 해결할 수 있다. -- SIMPLE 모드로 변경 ALTER DATABASE TestDB SET RECOVERY SIMPLE -- 로그 파일 축소 DBCC SHRINKFILE (N'Test_LOG', 500) -- FULL 모드로 변경 A..
[SQL Server] MDF, LDF 파일을 이용한 데이터베이스 복구 데이터베이스를 복구하는 방법은 여러가지가 있다. 백업 파일로 복구하는 방법도 있지만 백업 파일이 없을 경우 MDF, LDF 파일로 복구가 가능하다. 여기서 MDF 파일은 필수적으로 있어야 하지만 LDF 파일은 없어도 복구가 가능하다. MDF, LDF 파일을 이용해서 복구할 때 2가지 방법이 있다. sp_attach_db 시스템 프로시저를 이용하거나 CREATE DATABASE...FOR ATTACH 구문을 사용할 수 있다. 시스템 프로시저를 사용하여 ATTACH 하는 구문 sp_attach_db [ @dbname= ] 'dbname' , [ @filename1= ] 'filename_n' [ ,...16 ] DDL문을 사용하여 ATTACH 하는 구문 CREATE DATABASE database_name ..
[SQL Server] COUNT(*) vs COUNT(컬럼) COUNT(*) 과 COUNT(컬럼) 은 NULL을 포함할 때 다른 결과를 반환한다. COUNT(*) 은 NULL을 포함한 개수를 반환하지만 COUNT(컬럼)은 NULL을 제외한 개수를 반환한다. -- 테스트용 테이블 생성 CREATE TABLE COUNT_TEST ( COL1 INT IDENTITY(1,1) , COL2 INT ) GO -- 데이터 삽입 INSERT INTO COUNT_TEST(COL2) VALUES (1) INSERT INTO COUNT_TEST(COL2) VALUES (NULL) INSERT INTO COUNT_TEST(COL2) VALUES (7) INSERT INTO COUNT_TEST(COL2) VALUES (NULL) INSERT INTO COUNT_TEST(COL2) VAL..