DB 57

타 DB의 master를 복사하여 그대로 복구한 이후 SQLAgent 실행시 "SQLServerAgent could not be started" 오류 발생

원본 DB와 동일한 DB로 복구하기 위하여 원본 DB의 master 백업본으로 대상 DB에서 그대로 복원하였더니, SQL Agent를 시작하면 다음과 같은 오류가 발생하며 서비스 시작이 실패하는 문제가 발생하였습니다. 이벤트 형식: 오류 이벤트 원본: SQLSERVERAGENT 이벤트 범주: Service Control 이벤트 ID: 103 날짜: 2009-10-26 시간: 오후 4:18:14 사용자: N/A 컴퓨터: target 설명: SQLServerAgent could not be started (reason: 서버 '(local)'에 연결할 수 없습니다. SQLServerAgent을(를) 시작할 수 없습니다.). 자세한 정보는 http://go.microsoft.com/fwlink/events.a..

DB/MS-SQL 2009.10.26

MS-SQL 2005에서 백업 받은 DB를 복구한 이후 발생하는 로그인 불일치(Orphaned Users) 문제 해결 방법

원본 DB에서 백업 받은 파일을 다른 DB에서 복구할 경우, 원본 DB에서 설정된 로그인과 복구한 서버에서의 로그인(Login)과 복구한 DB의 사용자(User)이 서로 일치하지 않아서, 복구한 DB를 사용할 수 없는 문제가 발생합니다. 이런 경우(Orphaned Users) 2000에서는 해결 방법이 복잡하였으나, 2005부터는 간단히 해결을 할 수 있게 되었습니다. 먼저 로그인(Login)과 이름은 같지만 DB를 사용할 수 없는 사용자(User)들를 아래와 같이 찾습니다. USE ; GO; sp_change_users_login @Action='Report'; GO; 로그인과 일치하지 않는 사용자 문제를 아래와 같이 해결합니다. 물론 서로 일치하지 않는 로그인 및 DB 사용자가 동일하게 존재해야 합니..

DB/MS-SQL 2009.08.13

Owner 속성 오류로 데이터베이스(DB) 속성창이 열리지 않는 문제.

데이터베이스를 다른 장비로 그대로 이전한 이후에, SSMS에서 특정 DB의 속성창을 보려고 했더니, 다음과 같은 오류가 발생하였습니다. 제목: Microsoft SQL Server Management Studio ------------------------------ 요청한 대화 상자를 표시할 수 없습니다. ------------------------------ 추가 정보: 요청한 대화 상자를 표시할 수 없습니다. (SqlMgmt) ------------------------------ 데이터베이스 '[GatheringData_TEST]'에 속성 Owner을(를) 사용할 수 없습니다. 이 속성이 이 개체에 대해 존재하지 않거나 액세스 권한이 부족하여 검색하지 못할 수 있습니다. (Microsoft.Sql..

DB/MS-SQL 2009.07.09

OR 연산자 대신 IF을 사용하기

저장 프로시저내에 다음과 같은 쿼리가 있었습니다. 하지만, 특이하게도 특정한 경우에 부하가 많이 걸려서 성능이 제대로 나오지 않는 경우가 있었습니다. DECLARE @ISN INT, @parent_ISN INT SET @ISN = 123142 SELECT @parent_ISN=ISN FROM TEST_DB.dbo.test WITH (NOLOCK) WHERE 1 = 1 AND (linked_isn1 = @ISN OR linked_isn2 = @ISN) linked_isn1과 linked_isn2 각각의 컬럼에 독립적으로 인덱스가 잡혀 있었는데, 어느 때는 읽기 수가 1000이상이 나오면서 갑작스럽게 느려졌었습니다. 그래서 결국은 아래와 같이 IF문 형태로 코드를 변경하였습니다. 그랬더니, 이전과 같은 문제..

DB/MS-SQL 2009.06.06

분산 트랜잭션 설정

다음과 같이 분산 트랜잭션을 응용하여 저장 프로시저의 결과를 임시 테이블 변수에 집어 넣는 예제입니다. CREATE TABLE dbo.EMPLOYEE_SALES ( data_source VARCHAR(20) NOT NULL, employee_id VARCHAR(11) NOT NULL, last_name VARCHAR(40) NOT NULL, sales_dollars MONEY NOT NULL ); INSERT EMPLOYEE_SALES EXECUTE SOURCE.PUBS.dbo.usp_get_employee_sales DTC가 제대로 설정되어 있지 않으면, 다음과 같은 오류가 발생합니다. 연결된 서버 "SOURCE"의 OLE DB 공급자 "SQLNCLI"이(가) 메시지 "활성 중인 트랜잭션이 없습니다."..

DB/MS-SQL 2009.04.04

AWE(Address Windowing Extension)의 사용(MS-SQL 2005)

32비트 윈도우즈 운영체제는 기본적으로 32비트 주소체계를 사용하므로 4GB까지의 메모리를 사용할 수 있으나, 2GB는 운영체제를 위하여 예약되어 있고, 실제 응용 프로그램에서는 2GB까지 사용할 수 있습니다. AWE(Address Windowing Extensions)는 MS-SQL에서 4GB의 한계를 넘어서는 물리 공간을 직접 사용할 수 있도록 하는 기능으로 요즘과 같이 메모리 가격이 싸고 대용량의 메모리로의 확장이 쉬운 환경에서는 자주 접하게 되는 기능입니다. 그러나 AWE는 MS-SQL Server 2005의 Enterprise 버전과 Developer 버전에서만 지원합니다. AWE의 사용은 운영체제와도 관련이 깊은데, 윈도우즈 2003의 버전에 따라 지원하는 메모리의 크기가 달라집니다. Wind..

DB/MS-SQL 2009.03.17

Lock Pages in Memory(메모리 페이지 잠그기) 옵션 설정(MS-SQL 2005)

SQL 서버에 AWE를 사용하려면 꼭 거쳐야할 과정중의 하나입니다. MS-SQL 2005에서 메모리 페이지 잠그기(Lock Pages in Memory) 옵션은 기본적으로 OFF로 설정되어 있습니다. 이 옵션을 사용할 때의 주의할 점은, 실제 메모리 페이지를 고정시키기 때문에 과도하게 메모리를 할당하여 페이지를 잠가버리면 실체 OS에서 사용할 공간이 부족하여 OS가 심각하게 느려질 수 있다는 점입니다. 시작 메뉴에서 실행을 클릭합니다. 열기 입력란에 gpedit.msc를 입력합니다. 그룹 정책 대화 상자가 열립니다. 그룹 정책 콘솔에서 컴퓨터 구성을 확장한 다음 Windows 설정을 확장합니다. 보안 설정을 확장한 다음 로컬 정책을 확장합니다. 사용자 권한 할당 폴더를 선택합니다. 세부 정보 창에 정책이..

DB/MS-SQL 2009.03.17

분할 테이블 및 분할 인덱스

분할된 테이블이나 인덱스를 생성하기 위해서는 먼저 파티션 함수와 파티션 구성표를 만들어야 합니다. 파티션 함수는 분할 열이라고 하는 특정 열의 값을 기반으로 파티션 집합에 테이블이나 인덱스의 행을 매핑하는 방식을 정의하고, 파티션 구성표는 파티션 함수로 지정된 각 파티션을 파일 그룹에 매핑합니다. 파티션 함수를 작성할 때, 분할 기준열과 분할을 위한 기준열에 대한 분할할 값의 범위를 고려해야 합니다. 기준열에 대한 분할 범위를 조정함에 따라 파티션의 개수가 달라집니다. 한개의 테이블에는 1,000개의 파티션 생성이 가능합니다. 참고자료 SQL Server 2005의 분할된 테이블 및 인덱스 MSDN Library

DB/MS-SQL 2009.02.22
728x90