달력

12

« 2018/12 »

  •  
  •  
  •  
  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  
  •  

The backup of full-text catalog 'DB_NAME' is not permitted because it is not online.

Check errorlog file for the reason that full-text catalog became offline and bring it online.

or BACKUP can be performed by using the FILEGROUP or FILE clauses to restrict the selecrion to include only online data.

디비 백업시 이런 에러가 생기는 경우가 있다.

풀텍스트 인덱스 생성후 삭제한 디비가 있으면 그럴 수 있다.


그럴때에는

1. 서비스 SQL Server FullText Search 중지.

2. C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\FTData 디렉토리명 이름 변경. (즉, 백업 후 삭제함)

3. 서비스 SQL Server FullText Search 시작.

4. 이제 백업이 가능.



Posted by 멋지다마라송
2014.10.30 12:09

테이블별 용량 및 로우수 확인 Tech/MSSQL2014.10.30 12:09

테이블별 용량 

SELECT
  t_name = convert(varchar(50), min(o.name)), 
  T_sz = ltrim(str(sum(reserved) * 8192 / 1024 / 1024.,15,0) + 'MB') 
FROM
  sysindexes i inner join sysobjects o on (o.id = i.id) 
WHERE
  i.indid in (0, 1, 255) 
  AND o.xtype = 'U' 
GROUP BY i.id 
ORDER BY t_name asc

테이블별 로우수
SELECT 
  o.name, i.rows 
FROM 
  sysindexes i INNER JOIN sysobjects o ON i.id = o.id 
WHERE 
  i.indid < 2 
  AND o.xtype = 'U' 
ORDER BY o.name


Posted by 멋지다마라송
2014.10.21 16:05

LDF 파일 용량 줄이기 Tech/MSSQL2014.10.21 16:05

버전별로 이것저것 신경쓸 필요 없이 아래 스크립트 하나면 거의 다 됨.


USE [YOUR_DB_NAME] -- 적용할 디비명, 여기하고 아래 LDF 파일 사이즈 부분만 수정하면 됨.
------------------------------------------------------------------------------
-- Do Not change anything below this line.
------------------------------------------------------------------------------
GO
-- Declare variables
DECLARE @SqlStatement as nvarchar(max)
DECLARE @LogFileLogicalName as sysname
 
-- Alter the database to simple recovery
SET @SqlStatement = 'ALTER DATABASE ' + DB_NAME() + ' SET RECOVERY SIMPLE' 
EXEC ( @SqlStatement )
 
-- Make sure it has been altered
SELECT [name], [recovery_model_desc] FROM sys.databases WHERE [name] = DB_NAME()
 
-- Set the log file name variable
SELECT @LogFileLogicalName = [Name] FROM sys.database_files WHERE type = 1
 
-- Shrink the logfile
DBCC Shrinkfile(@LogFileLogicalName, 100) -- 여기 적절하게 수정. 100 = 100MB 로 만들기.
 
-- Alter the database back to FULL
SET @SqlStatement = 'ALTER DATABASE ' + DB_NAME() + ' SET RECOVERY FULL' 
EXEC ( @SqlStatement )
 
-- Make sure it has been changed back to full
SET @SqlStatement = 'SELECT [name], [recovery_model_desc] FROM ' + DB_NAME() + '.sys.databases WHERE [name] = ''' + DB_NAME() + '''' 
EXEC ( @SqlStatement )



 여기까지. 아래는 참고용.


* MSSQL 2008 의 경우

 
USE [DataBase];
GO
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE [DataBase] SET RECOVERY SIMPLE;
GO

-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE ([DataBase_Log], 1);
GO

-- Reset the database recovery model.
ALTER DATABASE [DataBase] SET RECOVERY FULL;
GO

 

* MSSQL 2005 의 경우


use [DB명];
sp_helpfile;                                       <- 로그파일 정보 확인

backup log [DB명] with no_log;
dbcc shrinkfile ([로그파일명], 10);          <- [로그파일명]을 10MB로 축소

 

* MSSQL 2000 의 경우


use [DB명];
sp_helpfile;                                       <- 로그파일 정보 확인

backup log [DB명] with truncate_only;
dbcc shrinkfile ([로그파일명], 10);          <- [로그파일명]을 10MB로 축소

===================================================================
### 로그파일의 정보를 확인합니다.
dbcc loginfo
 
### 현재 지정된 디비가 사용하는 mdf 및 ldf파일의 경로, 이름 및 크기를 확인합니다.
exec sp_helpfile

### 위에서 정해준 디비의 로그를 백업해 줍니다.
backup Log testdb to disk=’d:\dbbackup\temp\testdb.bak’
go

### 트랜잭션 로그파일을 최소의 단위로 축소합니다.
backup log testdb with truncate_only

### 트랜잭션 로그파일을 삭제합니다.
backup log testdb with no_log

### 트랜잭션 로그파일을 10메가로 생성합니다.
dbcc shrinkfile (testdb_log, 10)

### mdf와 ldf파일이 제대로 잘 리사이징 되었는지 확인합니다.
exec sp_helpfile

모든 작업이 잘 마무리 되었다면, 이제는 갑작스런 트랜잭션로그의 증가로 문제가 되는 것을 방지하기 위해 트랜잭션로그파일의 최대크기를 지정해놓는 방법도 좋습니다.
alter database testdb
modify file ( name = testdb_log, maxsize = 200 mb )
go
위 의 과정을 진행하시면 트랜잭션로그는 위에서 지정한데로 200메가를 한계치로 생성 삭제 됩니다. 트랜잭션로그의 용량은 데이터의 중요도 및 규모에 따라 정책적으로 유지하셔야 하는 부분입니다. 200메가는 예제로 적어놓은 사이즈입니다.
또한 위의 과정 중 축소와 삭제는 둘 중 원하시는 방법을 선택적으로 사용하시면 됩니다.


출처 : http://blog.naver.com/PostView.nhn?blogId=superxt&logNo=120211878027

'Tech > MSSQL' 카테고리의 다른 글

컬럼 수정시 Saving changes is not permitted 에러  (0) 2017.02.08
테이블별 용량 및 로우수 확인  (0) 2014.10.30
LDF 파일 용량 줄이기  (0) 2014.10.21
MDF 파일 용량 줄이기  (0) 2014.10.21
MSSQL - Convert, Substring  (0) 2014.07.22
MSSQL - csv 파일 넣기  (0) 2014.07.22
Posted by 멋지다마라송
2014.10.21 12:38

MDF 파일 용량 줄이기 Tech/MSSQL2014.10.21 12:38

* MSSQL 디비 데이터 파일 MDF 파일용량 줄이기
** mdf 파일이 크지만, 실제 사용하는 공간이 얼마 안된다면 크기를 줄일 수 있다.


USE GameDB11

DBCC SHOWFILESTATS
total = 370000
used = 27000

DBCC SHRINKFILE(GameDB11_Data,5000) <- 5GB 로 만들기
total = 80000
used = 27000

위의 단위는 Extents 카운트이며, 1MB = 16 Extents 이다.
즉, 80000 = 80000 / 16 = 5 GB


참조 URL : http://hwoarang757.tistory.com/67

'Tech > MSSQL' 카테고리의 다른 글

컬럼 수정시 Saving changes is not permitted 에러  (0) 2017.02.08
테이블별 용량 및 로우수 확인  (0) 2014.10.30
LDF 파일 용량 줄이기  (0) 2014.10.21
MDF 파일 용량 줄이기  (0) 2014.10.21
MSSQL - Convert, Substring  (0) 2014.07.22
MSSQL - csv 파일 넣기  (0) 2014.07.22
Posted by 멋지다마라송
2014.07.22 17:49

MSSQL - Convert, Substring Tech/MSSQL2014.07.22 17:49

select substring(convert(char(10), login_date, 120),1,4) as login_year, count(*) as cnt

 

날짜변환 : 2017-03-01 00:00:00 이런 형태로 변경할때.

ISNULL(convert(varchar(10), reg_date, 120)+' '+convert(varchar(8), reg_date, 108), '0000-00-00 00:00:00') as regdate,

 

MSDN : http://msdn.microsoft.com/ko-kr/library/ms187928.aspx

 

'Tech > MSSQL' 카테고리의 다른 글

컬럼 수정시 Saving changes is not permitted 에러  (0) 2017.02.08
테이블별 용량 및 로우수 확인  (0) 2014.10.30
LDF 파일 용량 줄이기  (0) 2014.10.21
MDF 파일 용량 줄이기  (0) 2014.10.21
MSSQL - Convert, Substring  (0) 2014.07.22
MSSQL - csv 파일 넣기  (0) 2014.07.22
Posted by 멋지다마라송


티스토리 툴바