NUL Device 를 통해서 로그백업이 가능하다. BACKUP LOG TD TO DISK = 'NUL' Q. 언제 사용할까? A. 로그백업할 디스크 공간이 없을 때 사용하며, 로그파일의 크기가 너무 커서 로그 트랜잭션을 truncate 효과를 보기 위해서 사용해야 한다. 단, 주의해야한다. 해당 백업도 LSN 에 영향을 주기 때문에 해당 작업을 한 후 전체백업 및 로그백업을 반드시 수행해야 한다. [데모]-- 환경 구성하기 -- use master GO IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'BACKUPTEST') DROP DATABASE BACKUPTEST GO CREATE DATABASE BACKUPTEST GO USE..
SQL Server Express 버전은 무료이기에 많이 사용한다. 대용량이 아닌 경우에 간단한 데이터 저장용으로 사용하면 좋을 것 같다. 보통 솔루션의 Embeded 된 SQL을 설치하여 사용시에 고려하면 좋을 것 같다.하지만 데이터베이스 크기의 제한이 있다.SQL server Desktop Engine(MSDE) - 2GB SQL Server 2005 Express Edition - 4GB SQL Server 2008 + Express - 10GB 이 크기는 모든 데이터베이스의 합이 아닌 단일 데이터베이스당 제한크기이다. 혹 데이터파일을 추가하여 사용한들 하나의 데이터베이스당 제한이므로 필요가 없다. [참고링크] http://www.microsoft.com/ko-kr/server-cloud/produ..
인덱스된 뷰(INDEXED VIEW)를 생성시 다른 데이터베이스의 테이블을 참조하여 생성을 하려고 하면 오류가 발생이 된다. By Design 이므로 생성할 수 없는 듯 싶다. 오류문구를 자세히 보면 "이름은 두 부분으로 구성되어야 하며 개체는 자체 참조할 수 없습니다 " Two-part만 가능하다는 것으로 보인다. 아래 예제로 확인하면 된다. -- Create DB USE MASTER GO CREATE DATABASE TD1 CREATE DATABASE TD2 GO USE TD1 GO CREATE TABLE TBL1 (COL1 INT) GO USE TD2 GO CREATE TABLE TBL2 (COL1 INT) GO USE TD1 GO -- Create View CREATE VIEW CrossDBVie..
SSMS에서 쿼리를 수행할 때 결과탭과 메시지 탭이 같이 출력이 된다. 실제 쿼리가 수행되지 않고 구문검사만 수행을 하고 싶을 경우에 아래와 같이 세션옵션을 변경하여 수행하면 된다. SET OPTION을 쓰거나 SSMS쿼리옵션에서 설정이 가능하다. SET PARSEONLY ON -- without Results, 구문검사만 수행한다. select * from [HumanResources].[Department] SET PARSEONLY OFF -- wit Results, 구문검사 및 결과셋도 출력한다. (기본값)select * from [HumanResources].[Department] 기본값 : UnChecked, 설정적용하려면 Checked 하면 된다.
현재 오픈된 트랜잭션이 어느 데이터베이스에 있는지 찾는 방법은 여러 가지 있다. 이 활성화된 세션을 찾아야 블로킹세션을 찾을 수 있다. 아래와 같이 세션 2개를 열어서 확인해보자 -- session #1 tempdb 를 열고 실제 데이터베이스는 TD 에 있는 테이블을 업데이트 하고 있다. use tempdb go begin tran update A set diff = '1' from td.[dbo].[results] a -- rollback -- session #2 use tempdb go DBCC OPENTRAN 세션#1에서 tempdb를 오픈하고 Update를 하지만 실제는 TD 를 하고 있는 것을 찾아야 된다. SELECT spid, dbid FROM SYS.SYSPROCESSES WHERE OPE..
/* 다양한 와일드카드와 LIKE 연산자의 쓰임새*/ use AdventureWorks2014 go sp_helpindex [HumanResources.Department] /* AK_Department_Name nonclustered, unique located on PRIMARY Name PK_Department_DepartmentID clustered, unique, primary key located on PRIMARY DepartmentID */ -- p 로 시작하는 문자열 검색 SELECT name from HumanResources.Department WHERE Name LIKE 'p%'; -- index seek SELECT name from HumanResources.Department ..
-- 시나리오 전체백업 + 전체백업 with copy_only + 로그백업 + 로그백업 with copy_only + 로그백업 with copy_only 백업파일이 존재한다. 여기서 복원시 전체백업 with copy_only + 마지막 로그백업 with copy_only 까지 전체복원이 되는가? 결론 : 잘된다. [로그백업 with copy_only] 이후의 로그백업을 순차적으로 복원하면 가능하다. with copy_only는 이전 정상백업과 연관이 되어 있으며 차등백업과 같은 변경점은 바로 직전의 로그백업 또는 전체백업 이후 변경점부터 모두 백업하게 된다. use master GO IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'B..
-- 시나리오 전체백업 + 전체백업 with copy_only + 로그백업 ..... + 로그백업 백업파일이 존재한다. 여기서 복원시 전체백업 with copy_only + 마지막 로그백까지 전체복원이 되는가? 결론 : 잘된다. [로그백업 with copy_only] 이후의 로그백업을 순차적으로 복원하면 가능하다. use master GO IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'BACKUPTEST') DROP DATABASE BACKUPTEST GO CREATE DATABASE BACKUPTEST GO USE BACKUPTEST GO --drop table TBL IF OBJECT_ID('dbo.TBL') IS NOT NUL..
-- 시나리오 전체백업 + 로그백업 ..... + 로그백업 with copy_only 백업파일이 존재한다. 여기서 복원시 전체백업 + 로그백업 with copy_only 하면 전체복원이 되는가? 결론 : 실패 왜? [로그백업 with copy_only] 이전의 로그백업이 존재하기에 이전 로그백업을 모두 복원 후 최종으로 [로그백업 with copy_only] 을 복원하면 가능하다. use master GO IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'BACKUPTEST') DROP DATABASE BACKUPTEST GO CREATE DATABASE BACKUPTEST GO USE BACKUPTEST GO --drop table ..
SQL Server Full Backup은 무조건 해주고 시작하는것이 좋을 것 같다. 전체백업 with COPY_Only 로 백업 후 트랜잭션로그백업을 받으면 아래와 같이 오류다. 중요한 포인트이다. 왜 ? 가용성그룹의 백업정책과 밀접한 관계가 있다. use master GO IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'BACKUPTEST') DROP DATABASE BACKUPTEST GO CREATE DATABASE BACKUPTEST GO USE BACKUPTEST GO --drop table TBL IF OBJECT_ID('dbo.TBL') IS NULL drop table TBL GO CREATE TABLE TBL(COL..
- Total
- Today
- Yesterday