관리자
글쓰기

sql2005를 운영하는 분들중에서 이런 메세지를 봤을것이다.
 
Alert창 오류메세지
GUID에는 대시 4개를 사용하여 32개의 자릿수를 사용해야 합니다(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

이유 : Management Stuido(관리도구)와 SQL2005 설치버전이 틀려서 발생하는 오류.

Management Stuido(관리도구) : 도움말 > 정보 클릭
SQL2005 서버 설치버전 : select @@version

저런경우도 있나봅니다.
여튼 서비스팩을 설치를 해서 버전을 맞추면 된다.

SQL서버 설치 버전번호 체크하기

MS는 정말 짜쯩입니다.


2011/04/19 16:13 2011/04/19 16:13

트랙백 주소 :: http://www.overtop.co.kr/tt2/trackback/368

댓글을 달아 주세요

DB관리자들이 한번쯤은 경험을 했을 것이다.
순간 깜짝 놀랬을 것이다.

유지관리계획으로 작성을 하면 JOB에이전트에 일정이 자동 추가가 된다.
이때 유지관리계획을 삭제한 후에 JOB에이전트를 삭제할때 아래와 같이 오류가 발생한다.

DELETE 문이 REFERENCE 제약 조건 "FK_subplan_job_id"과(와) 충돌했습니다.
데이터베이스 "msdb", 테이블 "dbo.sysmaintplan_subplans", column 'job_id'에서 충돌이 발생했습니다.
문이 종료되었습니다. (Microsoft SQL Server, 오류: 547)

원인 : sysmaintplan_plans 테이블의 ID값과, 해당 계획의 로그가 쌓이는 sysmaintplan_log의 ID값이 서로 다르기 때문에 발생함.
그러나 sysmaintplan_log의 레코드가  없는경우에 sysmaintplan_plans 의 레코드만 경우도 있다.

위 오류는 아래와 같이 처리가 가능하다.

1.  select * from msdb.dbo.sysmaintplan_subplans 실행하면 레코드가 보인다.
2.  select * from  msdb.dbo.sysmaintplan_log 실행해서 위 레코드ID와 비교를 한다.
문제되는 plan_id 를 아래와 같이 삭제해준다.
delete from msdb.dbo.sysmaintplan_log where plan_id='7C1DDE2F-3FE4-424D-8140-94A4F9AF160B'

단, log 테이블에 아무레코드도 없는 경우가 있을 경우에는 2단계를 패스한다.

3. delete from msdb.dbo.sysmaintplan_subplans where subplan_name = '하위 계획'
해당하는 plan_id or subplan_name 의 조건으로 삭제한다.

4. Job 에이전트를 새로고침 해면 삭제가 된다.
   단, 삭제가 안되는 경우에는 [작업]의 [삭제] 수동으로 지워준다.

그럼 정상적으로 해당 에이전트 JOB 을 삭제할수 있다.



2011/03/29 11:45 2011/03/29 11:45

트랙백 주소 :: http://www.overtop.co.kr/tt2/trackback/361

댓글을 달아 주세요

연결된 서버(linked server)로 분산쿼리를 실행하려고 하면 아래와 같은 에러메세지가
나타납니다.

연결된 서버 "연결서버이름(xxxx)"의 OLE DB 공급자 "SQLNCLI"이(가) 메시지 "지정되지 않은 오류입니다."을(를) 반환했습니다.
연결된 서버 "연결서버이름(xxxx)"의 OLE DB 공급자 "SQLNCLI"이(가) 메시지 "이 작업을 완료하는 데 필요한 저장 프로시저가 서버에 없습니다. 시스템 관리자에게 문의하십시오."을(를) 반환했습니다.
메시지 7311, 수준 16, 상태 2, 줄 1
연결된 서버 "연결서버이름(xxxx)"에 대한 OLE DB 공급자 "SQLNCLI"의 스키마 행 집합 "DBSCHEMA_TABLES_INFO"을(를) 가져올 수 없습니다. 공급자가 인터페이스를 지원하지만 이 인터페이스를 사용하면 오류 코드가 반환됩니다.



원인.
이 문제는 시스템 저장 프로시저가 업그레이드되지 않았기 때문에 발생합니다. SQL Server 2000 SP3 또는 SQL Server 2000 SP4를 설치한 후 시스템 저장 프로시저를 수동으로 업그레이드해야 합니다.

해결방법.
하나. Instcat.sql 스크립트를 수동으로 실행하기
1.  Windows 인증 모드를 사용하여 시스템 저장 프로시저를 업그레이드하려면
실행 > cmd > 아래 명령어 실행
   osql -E -S <LinkedServerName> -i <Location>\instcat.sql
2.  SQL Server 인증 모드를 사용하여 시스템 저장 프로시저를 업그레이드하려면
   osql -U <AdminLogin> -P <AdminPassword> -S <LinkedServerName>
           -i <Location>\instcat.sql

위 방법은 아래에서 간단하게 긁어옴
http://support.microsoft.com/kb/906954/ko

그런데 위 실행은 안해봤습니다. 서비스를 하고 있는 DB서버라서 혹시나 문제가
발생할까봐 못해봤습니다. ㅠㅠ


또 하나. 시스템프로시저 추가해주기
결국 한개의 프로시저만 있으면 간단하게 해결해주네여.


use master
Go
create procedure sp_tables_info_rowset_64
      @table_name sysname,
      @table_schema     sysname = null,  
      @table_type nvarchar(255) = null
as
declare @Result int set @Result = 0
exec @Result = sp_tables_info_rowset @table_name, @table_schema, @table_type

위 프로시저만 한개 생성해주면 잘 됩니다.

생성을 하고 분산쿼리를 실행했떠니 아래와 같이 에러메세지가 나오면

연결된 서버 "연결서버이름(xxxx)"의 OLE DB 공급자 "SQLNCLI"이(가) 메시지 "지정되지 않은 오류입니다."을(를) 반환했습니다.
메시지 229, 수준 14, 상태 5, 프로시저 sp_tables_info_rowset_64, 줄 7
'dbo' 소유자, 'master' 데이터베이스, 'sp_tables_info_rowset_64' 개체에 대한 EXECUTE 사용 권한이 거부되었습니다.

실행권한을 줘야 실행이 되는군요.
아래와 같이 public EXEC  권한을 체크해줘야 합니다.
사용자 삽입 이미지


2010/04/30 15:58 2010/04/30 15:58

트랙백 주소 :: http://www.overtop.co.kr/tt2/trackback/336

댓글을 달아 주세요