728x90

SQL Server 2005 Cluster 설치를 하였으나 SQL Server Agent Service 가 실행되지 않는 문제가 발생하였습니다.
누적 패치 적용 후 이와 같은 문제가 발생할 수 있음을 확인하였으며 Agent Service 계정에 대해 도메인 계정
설정을 변경하여 문제를 해결할 수 있습니다.


[환경]
SQL Server 2005 Cluster SP2 + CU6 (Build 3228)


[현상]
SQL Server 2005 클러스터 환경에서 SQL Agent Service가 SQL Server service에 연결 실패하여
Agent Service 가 실행되지 않음


[원인]
SQL Server Agent 서비스는 시작할 때, SQL Server Service 에 연결합니다.
SQL Server Agent 서비스는 xp_sqlagent_notify 내장 프로시저를 실행하는 동안 crytographic API 호출이
실패하여 SQL 에이전트 서비스가 SQL 서버 서비스에 연결하지 못해 발생합니다.
이는, SQL Server build 3179 이후(Cumulative Update 3 포함) 버전에서 이와 같은 증상이 발견 되었습니다.


[해결방법]
Active Directory 사용자 및 컴퓨터에서, SQL Server Service 계정에 대해서 'Account is trusted for delegation'을 설정합니다.

사용자 삽입 이미지





























또는 Delegation(위임) 탭을 선택하여 "Trust this user for delegation to any service(Kerberos only)" 항목을
선택합니다.


[참고자료]
You cannot start the SQL Server Agent service of a failover cluster of SQL Server 2005 if the build of SQL Server is 3179 or a later build
http://support.microsoft.com/?id=943525

Allow a user to be trusted for delegation
http://technet2.microsoft.com/WindowsServer/en/library/bef202b0-c8e9-4999-9af7-f56b991a4fd41033.mspx?mfr=true


작성자 : Lai Go / 작성일자 : 2008.06.15
728x90

ALTER DATABASE 재배치 프로시저를 사용하여 사용자 데이터베이스를 이동하는 방법을 정리하였습니다.

일반적으로 동일한 SQL Server 인스턴스 내에서 파일 이동이 필요할 경우에 이 방법을 사용하며,
만약 다른 인스턴스나  다른 SQL Server로 이동한다면 분리 및 연결(sp_attach_db, sp_detach_db 시스템 저장
프로시져) 방법 또는 백업 및 복원 방법을 이용하면 됩니다.


[시나리오]
1. 데이터베이스명 : LAIGO

2. 변경 전 파일 경로
   1) C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\LAIGO.mdf
   2) C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\LAIGO_log.ldf

3. 변경 후 파일 경로
   1) D:\Data\laigo.mdf  
   2) D:\Data\laigo_log.ldf


[작업절차]

USE MASTER
GO

-- 1. 파일의 논리 이름을 확인합니다.
SELECT file_id, name, physical_name  FROM sys.master_files WHERE database_id = db_id('LAIGO');
/* LAIGO, LAIGO_LOG */

-- 2. 30초 후 모든 작업을 롤백하고 단일 사용자 모드로 전환합니다.
ALTER DATABASE LAIGO SET SINGLE_USER WITH ROLLBACK AFTER 30


-- 3. LAIGO 데이터베이스 오프라인 상태로 전환합니다.
ALTER DATABASE LAIGO SET OFFLINE


-- 4. mdf,ldf 파일 위치를 변경합니다.


-- 5. mdf 파일 위치 정보를 변경합니다.
ALTER DATABASE LAIGO MODIFY FILE (NAME=LAIGO, FILENAME='d:\data\laigo.mdf')


-- 6. ldf 파일 위치 정보를 변경합니다.
ALTER DATABASE LAIGO MODIFY FILE (NAME=LAIGO_LOG, FILENAME='d:\data\laigo_log.ldf')


-- 7. 데이버테이스를 온라인 상태로 전환합니다.
ALTER DATABASE LAIGO SET ONLINE


--8. 멀티 사용자 모드로 변경합니다.
ALTER DATABASE LAIGO SET MULTI_USER


-- 9. 정상적으로 변경되었는지 확인합니다.
SELECT  name, physical_name  AS CurrentLocation, state_desc  FROM  sys.master_files
WHERE  database_id  = DB_ID(N'LAIGO');


[참고자료]
사용자 데이터베이스 이동
http://msdn.microsoft.com/ko-kr/library/ms345483.aspx

방법: 분리 및 연결을 사용하여 데이터베이스 이동(Transact-SQL)
http://msdn.microsoft.com/ko-kr/library/ms187858.aspx

시스템 데이터베이스 이동
http://technet.microsoft.com/ko-kr/library/ms345408.aspx


작성자 : Lai Go / 작성일자 : 2008.07.29


728x90

SQL Server 2005 시스템 데이터베이스 중 msdb, model, tempdb 에 대해서 데이터 파일과 로그 파일을 이동하는
방법을 아래와 같이 정리하였습니다. (master 및 리소스 데이터베이스는 별도 포스팅할 계획입니다)

msdb, model, tempdb 의 데이터, 로그 파일을 변경하는 방법은 동일합니다.



[msdb 데이터베이스 이동]

1. 데이터베이스 파일의 논리 이름을 확인합니다.

SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files
WHERE database_id = DB_ID(N'msdb');


2. mdf, ldf 파일 위치 정보를 변경합니다.

ALTER DATABASE msdb MODIFY FILE (NAME=MSDBData, FILENAME='D:\Data\msdbdata.mdf')
ALTER DATABASE msdb MODIFY FILE (NAME=MSDBLog, FILENAME='D:\Data\msdblog.ldf')


3. SQL 인스턴스를 중지한 후 파일을 새 위치로 이동합니다.


4. SQL 인스턴스를 시작합니다.


5. 1번에서 사용한 쿼리를 실행하여 변경된 정보를 확인합니다.



[model 데이터베이스 이동]

1. 데이터베이스 파일의 논리 이름을 확인합니다.

SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files
WHERE database_id = DB_ID(N'model');


2. mdf, ldf 파일 위치 정보를 변경합니다.

ALTER DATABASE model MODIFY FILE (NAME=MSDBData, FILENAME='D:\Data\model.mdf')
ALTER DATABASE model MODIFY FILE (NAME=MSDBLog, FILENAME='D:\Data\modellog.ldf')


3. SQL 인스턴스를 중지한 후 파일을 새 위치로 이동합니다.


4. SQL 인스턴스를 시작합니다.


5. 1번에서 사용한 쿼리를 실행하여 변경된 정보를 확인합니다.



[tempdb 데이터베이스 이동]
 

1. 데이터베이스 파일의 논리 이름을 확인합니다.

SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files
WHERE database_id = DB_ID(N'tempdb');


2. mdf, ldf 파일 위치 정보를 변경합니다.

ALTER DATABASE tempdb MODIFY FILE (NAME=MSDBData, FILENAME='D:\Data\tempdb.mdf')
ALTER DATABASE tempdb MODIFY FILE (NAME=MSDBLog, FILENAME='D:\Data\templog.ldf')


3. SQL 인스턴스를 중지한 후 다시 시작합니다.
   (SQL Server 인스턴스를 시작할 때마다 tempdb는 자동 생성되므로 파일을 이동할 필요가 없습니다)


4. 1번에서 사용한 쿼리를 실행하여 변경된 정보를 확인합니다.


5. tempdb.mdf, templog.ldf 파일을 원래의 위치에서 삭제합니다.


[참고자료]
시스템 데이터베이스 이동
http://technet.microsoft.com/ko-kr/library/ms345408.aspx


작성자 : Lai Go / 작성일자 : 2008.07.29

+ Recent posts