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

sysadmin이 아닌 일반 사용자 계정으로 OPENROWSET 쿼리를 사용하여 원격 데이터 엑세스를 시도하였을 때
엑세스 거부와 관련하여 아래와 같이 정리하였습니다. 보안을 위해 사용하지 않는 것을 권장합니다.


[환경]
SQL Server 2000 SP4

 
[현상]
사용자 계정으로 OPENROWSET 쿼리를 사용하여 원격 데이터 엑세스 할 때 오류 발생  

SELECT * FROM  
  OPENROWSET ('MSDASQL', 'Driver={Microsoft Excel Driver (*.xls)};
  DBQ=D:\DATA;', 'SELECT * from SELECT * from member.txt')

서버: 메시지 7415, 수준 16, 상태 1, 줄 1
OLE DB 공급자 'MSDASQL'에 대한 임의 액세스가 거부되었습니다. 연결된 서버를 통해 이 공급자에 액세스해야 합니다.

 
[원인]

이 방법은 OLE DB를 사용하여 원격 데이터에 연결하고 액세스하는 일회성의 임시 방법이며 연결된 서버에서
테이블을 액세스하는 방법의 대안입니다. OLE DB 데이터 원본을 자주 참조하려면 연결된 서버를 사용합니다.
지정한 공급자에 대해 DisallowAdhocAccess 레지스트리 옵션을 명시적으로 0으로 설정하고
Ad Hoc Distributed Queries 고급 구성 옵션을 활성화한 경우에만 OPENROWSET를 사용하여 OLE DB
데이터 원본의 원격 데이터에 액세스할 수 있습니다.
임시 이름 사용을 설정하면 SQL Server 2000에 대한 모든 인증된 로그인에서 공급자에 액세스할 수 있습니다.

SQL Server 관리자는 모든 로컬 로그인에서 액세스해도 안전한 신뢰할 수 있는 공급자에 대해서만
이 기능을 설정해야 합니다.
만약 원격 엑세스 허용이 필요하다면 아래 방법으로 연결을 허용할 수 있습니다.

 
[조치방법]
레지스트리를 편집하여 DisallowAdHocAccess Value를 추가합니다.

[시작] - [실행] - REGEDIT.EXE
 
1. MSDASQL

  Locate, and then click the following key in the registry:
  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\MSDASQL

  On the Edit menu, click Add Value, and then add this registry value:

 Value name: DisallowAdHocAccess
 Data type:  REG_DWORD
 Radix:      Hex
 Value data: 0



2. Microsoft.Jet.OLEDB.4.0

  Locate, and then click the following key in the registry:
  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\Microsoft.Jet.OLEDB.4.0
 
  On the Edit menu, click Add Value, and then add this registry value:

Value name: DisallowAdHocAccess
Data type:  REG_DWORD
Radix:      Hex
Value data: 0



[참고자료]
OPENROWSET(T-SQL)
http://msdn.microsoft.com/ko-kr/library/ms190312.aspx
 
HOW TO: Use the DisallowAdHocAccess Setting to Control Access to Linked Servers
http://support.microsoft.com/kb/327489


작성자 : 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


+ Recent posts