서버 이름을 변경한 후 SQL Server 유지 관리 계획이 실행 오류가 발생할 때의 대응

6076 단어 serverSQLWindows2016

소개



클라우드 환경에서 SQL Server를 설치 한 Windows 서버를 복사하여 별도의 서버로 시작할 때 SQL Server의 서버 이름 변경을 제대로 수행했음에도 불구하고 유지 관리 계획이 실행 오류가되는 사건을 만나서 빠져 버렸습니다. 그래서 그때의 작업 메모.
구현 환경은 SQL Server 2016.

1. 전제 작업



SQL Server ServerName 변경



SQL Server에서 보유한 ServerName을 새 서버 이름으로 변경

확인 SQL


SELECT @@SERVERNAME AS 'Server Name';
select * from sys.servers;

설정 변경 SQL


sp_dropserver '旧サーバー名';
GO
sp_addserver '新サーバー名', local;
GO

원격 로그인 삭제(사용하는 경우)


//既定のインスタンスの場合は、次のプロシージャを実行します。
sp_dropremotelogin old_name;
GO  

//名前付きインスタンスの場合は、次のプロシージャを実行します。
sp_dropremotelogin old_name\instancename;
GO

Reporting Services 설정 변경(사용하는 경우)



이쪽을 참고로 실시
htps : // v.ぁsss d. jp/아 r c/s/sql-r rょr/

2. 이 상태에서 유지 보수 계획을 실행하면 어떻게됩니까?



SQL Management Studio에서 유지 관리 계획을 실행한 후 다음 오류로 인해 실패했습니다.

"Execute method on the task returned error code 0x80131904 (SQL Server에 대한 연결을 설정할 때 네트워크 관련 또는 인스턴스 관련 오류가 발생했습니다. 서버를 찾을 수 없거나 액세스할 수 없습니다. 그리고 SQL Server가 원격 연결을 허용하도록 구성되어 있는지 확인하십시오."




오류 메시지는 작업 내역에서 볼 수 있습니다.


3. 유지보수 계획 실행이 실패하는 이유



유지 보수 계획의 연결 정의를 보면 오래된 서버 이름으로 남아 있으며 이것으로 인해 실행에 실패하고 있음을 알 수 있습니다.



4. 대처법



두 가지 방법이 있습니다.
"방법 1"SQL을 사용하여 유지 보수 계획 정의의 서버 이름 바꾸기
방법 2 유지 보수 계획 정의를 Export → 수정 → Import

방법 1 SQL을 사용하여 유지 관리 계획 정의의 서버 이름 바꾸기



(1) 유지 보수 계획의 ID 확인


use msdb
go

SELECT  x.*,
        LocalServerConnectionString = cm.value('declare namespace DTS="www.microsoft.com/SqlServer/Dts";DTS:ObjectData[1]/DTS:ConnectionManager[1]/@DTS:ConnectionString', 'varchar(1000)')
FROM (
    SELECT  id, name, packageXML = CAST(CAST(packagedata AS VARBINARY(MAX)) AS XML)
    FROM dbo.sysssispackages
    WHERE id IN (SELECT id FROM dbo.sysmaintplan_plans)
) x
CROSS APPLY packageXML.nodes('declare namespace DTS="www.microsoft.com/SqlServer/Dts";/DTS:Executable/DTS:ConnectionManagers/DTS:ConnectionManager[@DTS:ObjectName="Local server connection"]') p(cm)
go

(2) 정의 업데이트 실행


use msdb
go

UPDATE dbo.sysssispackages
SET packagedata = CAST(
    CAST(
        REPLACE(
            CAST(CAST(packagedata AS VARBINARY(MAX)) AS VARCHAR(MAX)),'旧サーバー名','新サーバー名'
        ) AS XML
    ) AS VARBINARY(MAX)
)
WHERE id = '手順1で確認したID';
go

방법 2 유지보수 계획 정의를 Export→수정→Import



(1) SQL Server Management Studio에서 Integration Services에 연결





(2) 대상 유지 보수 계획을 마우스 오른쪽 버튼으로 클릭하여 내보내기






(3) Export 된 파일을 텍스트 편집기에서 열어 서버 이름을 수정


  ||
  DTS:CreatorComputerName="旧サーバー名"
  ||
  <DTS:ConnectionManagers>
        <DTS:ConnectionManager
          DTS:ConnectionString="Data Source=旧サーバー名;Integrated Security=True ・・・・・

(4) Import





5. 확인



3에 기재된 순서로 유지 보수 계획의 실행 목적지 서버 명이 변경되었는지를 확인한 후, 유지 보수 계획을 실행한다. 정상 종료하면 OK.




참고 URL


  • Microsoft Docs | SQL Server 독립 실행형 인스턴스를 호스팅하는 컴퓨터의 이름 바꾸기
  • Classmethod | SQL Server 인스턴스에서 컴퓨터의 이름을 바꾸면 해야 합니다.
  • Move SQL Server Maintenance Plan from One Server to Another
  • serverfault | Renamed a SQL Server, however maintenance plans still have old name
  • 좋은 웹페이지 즐겨찾기