이 블로그 검색

2011년 4월 25일 월요일

mdf , ldf 파일 위치 변경

1. 사용자 DB
-- services restart
use DBNAME
-- 파일위치확인
exec sp_helpfile      
-- detach db
exec sp_detach_db 'DBNAME'

-- 변경하고자하는위치로mdf / ldf 파일이동

-- 변경한위치로경로변경 후 attach db
exec sp_attach_db @dbname ='DBNAME'
,       @filename1 = 'D:\MSSQL\DBNAME\DBNAME.mdf'
,       @filename2 = 'D:\MSSQL\DBNAME\DBNAME2.mdf'
,       @filename3 = 'D:\MSSQL\DBNAME\DBNAME3.mdf'
,       @filename4 = 'D:\MSSQL\DBNAME\DBNAME4.mdf'
,       @filename5 = 'D:\MSSQL\DBNAME\DBNAME_log.ldf'
...




2. TEMPDB
TEMPDB는 ALTER DATABASE명령으로 변경가능하다.
ALTER명령 후 서비스를 재시작 해야 해당위치에 새로운 MDF,LDF파일이 생성된다. 
--- tempdb 위치변경
use tempdb
exec sp_helpfile

USE master
ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'D:\MSSQL\DBNAME\tempdb.mdf' )
ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'D:\MSSQL\DBNAME\templog.ldf' )
-- services restart
use tempdb
exec sp_helpfile



3. MASTERDB
use master
-- 파일위치 확인
exec sp_helpfile


SQL Server Configuration Manager 실행
















서비스 중지 후 mdf/ldf파일 위치 이동 후 서비스 재시작.

2011년 4월 22일 금요일

메타데이터 관리자 오류 / Errors in the metadata manager.



>> 에러메세지 
메타데이터 관리자에서 오류가 발생했습니다. 트랜잭션의 작업으로 인해 ID큐브ID’이고 이름이 큐브명 CUBE() 무효화되었습니다.
Errors in the metadata manager. The cube with the ID of ‘CUBE_ID', Name of 'CUBE_NAME' was invalidated by operations in the transaction. 





이미 Processing이 완료된 차원의 특성관계(Attribute Relationships)를 수정하고 저장, 또는 처리시 위와같은 에러메세지를 띄우고 저장 및 처리를 하지 못한다.


이러한 경우 해당 차원파일을 삭제(또는 이름변경) 후 다시 저장하면 된다.
C:\Program Files\Microsoft SQL Server\MSAS10.MSSQLSERVER\OLAP\Data\DBName.0.db\
위의 위치에서 차원명과 동일한 xml 파일 , 폴더를 삭제또는 이름변경하고 차원을 저장 & 처리한다.
(보통 xml파일은  차원명.0.dim.xml  폴더명은 차원명.0.dim 와같은 형태임)

Development Edition에서 되었으나, Server Standard Edition에서는 가능하지 않았다.

2011년 4월 21일 목요일

SQL Server에서 특정 컬럼 Collation 변경


SQL Server 기본 Collation Korean_Wansung_CI_AS 구성되어 있다.
Korean / 한글
Wansung / 완성형
CI / Case Insensitive (대소문자 구분하지 않음)
AS / Accent Insensitive (악센트 구분하지 않음)

Korean_Wansung_CI_AS 구성에서는 Primary Key 컬럼에 NAME , name
데이터를  적재할 경우 PK중복 오류를 낸다.
오라클에서 데이터를 이관할때 대소문자 구분때문에 PK중복 오류를 많이 내기도 하는데
특정 컬럼만 대소문자 구분을 하도록 있다.

ALTER TABLE [TABLE_NAME] ALTER COLUMN [COLUMN_NAME] VARCHAR(16) COLLATE KOREAN_WANSUNG_CS_AS



2011년 4월 20일 수요일

sysobjects 의 xtype

 C  = CHECK 제약 조건
 D  =
기본 값 또는 DEFAULT 제약조건
 F = FOREIGN KEY
제약조건
 L  =
로그
FN =
스칼라 함수
 P  =
저장 프로시저
PK = PRIMARY KEY
제약 조건(유형은 K)
RF =
복제필터 저장 프로시저
 S  =
시스템 테이블
TF =
테이블 함수
TR =
트리거
 U  =
사용자 테이블
UQ = UNIQUE
제약 조건(유형은 K)
 V  =

 X  =
확장 저장 프로시저

임시테이블 존재여부 확인 후 삭제


테이블 존재여부 확인 후 삭제 

If Exists(Select Name From TempDB..SysObjects where name like '#TEMP_TABLE%' and type = 'u')
Begin  drop table #TEMP_TABLE End



2011년 4월 18일 월요일

0으로 나누기 오류로 인한 -1.#INF 값 표시하지 않기.



0으로 나누기 오류로 인해 그리드에 -1.#INF로 표시되는 데이터는
다음과 같이 처리한다.
EX) 매출수량에 0이 포함된 경우가 있을 경우.
IIF([Measures].[매출수량] = 0, Null,  [Measures].[매출금액]/[Measures].[매출수량])


2011년 4월 11일 월요일

Moving the tempdb


기본적으로 tempdb는 master의 위치와 동일한 곳에 생성되지만 퍼포먼스 향상을 위해 tempdb의 파일을 다른 물리드라이브로 변경시키기도한다. 변경사항은 서비스 재시작 후 적용된다.


-- 현재 tempdb파일 위치 확인
USE tempdb
EXEC sp_helpfile

-- 파일위치변경 
USE master
ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'D:\MSSQL\Data\tempdb.mdf')
ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'D:\MSSQL\Data\tempdb.ldf')