SQL Server 어셈블리 최적화 오류 및 메모리 소모를 어떻게 해결합니까?


9

.NET Runtime Optimization Service ( mscorsvw)는 SQL Server 2012 서비스 팩 1을 설치 한 이후로 내 워크 스테이션의 모든 메모리를 계속 사용합니다.

사용 가능한 모든 메모리를 소모하기 전에 약 1.6GB의 메모리를 소비합니다.

.NET Runtime Optimization Service는 내 워크 스테이션에서 사용 가능한 모든 메모리를 사용합니다.

프로세스를 종료 할 수 있지만 컴퓨터를 다시 시작하거나 오래 기다릴 때 다시 발생합니다.

Techdows 는 .NET Native Image Generator ( ngen)를 사용하여 문제를 해결하도록 제안합니다.

명령 프롬프트를 표시하고 다음과 같은 명령을 실행했습니다.

cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319.1
ngen executeQueuedItems

메모리 소비는 mscorsvw약 20-30MB 로 떨어지고 ngen나머지 메모리는 모두 소비했습니다.

ngen프로세스를 종료 할 때까지 오류 메시지 만 생성했습니다. 처음 몇 줄의 출력은 다음과 같습니다.

Microsoft (R) CLR Native Image Generator - Version 4.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.
Failed to load dependency Microsoft.DataWarehouse of assembly
Microsoft.SqlServer.MaintenancePlanTasks, Version=11.0.0.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91 because of the following error : The system
cannot find the file specified. (Exception from HRESULT: 0x80070002)
Failed to load dependency Microsoft.VisualStudio.DataTools.Interop of assembly 
Microsoft.DataWarehouse, Version=11.0.0.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91 because of the following error : The system
cannot find the file specified. (Exception from HRESULT: 0x80070002)
Failed to load dependency Microsoft.Data.ConnectionUI of assembly
Microsoft.DataWarehouse, Version=11.0.0.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91 because of the following error : The located
assembly's manifest definition does not match the assembly reference.
(Exception from HRESULT: 0x80131040)

모든 메시지는 시스템이 어셈블리를 찾을 수 없거나 매니페스트 정의가 참조와 일치하지 않는다고 말합니다.

해결 방법으로, 나는 Windows 서비스를 비활성화 clr_optimization_v4.0.30319_32하고 clr_optimization_v4.0.30319_64.

이렇게하면 문제를 해결하는 대신 숨기고 모든 .NET 어셈블리가 최적화되지 않습니다.

이 문제를 해결하기 위해 다른 무엇을 시도 할 수 있습니까?


.Net 런타임을 다시 설치해 보셨습니까?
Max Vernon

@MaxVernon 아직. 시간이 좀 걸릴 수 있습니다. 다른 해결책이 없으면 다음 주에 시도해 보겠습니다.
아이언 사무엘 맥린 장로

분명히 다른 대답을 얻는 것만 큼은 아닙니다. 재설치를 시도 했습니까?
Max Vernon

답변:


9

이 문제는 Connect에 설명되어 있으며 ( SQL Server 2012 SP1 설치 후 msiexec.exe 프로세스가 계속 실행 됨 ) 핫픽스는 KB2793634 에서 구할 수 있습니다 . 핫픽스를 즉시 설치할 수없는 경우 Connect이 블로그 에 대한 해결 방법에 대한 설명 있습니다.

2 개의 스크립트를 설정하기로했습니다. 첫 번째 스크립트는 매일 오전 1시에 실행되며 1 시간 실행 후 종료되도록 설정

c:\windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe executequeueditems
c:\windows\Microsoft.NET\Framework\v2.0.50727\ngen.exe executequeueditems
c:\windows\Microsoft.NET\Framework64\v2.0.50727\ngen.exe executequeueditems 
c:\windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe executequeueditems

두 번째 스크립트는 매일 오전 3시에 (컴퓨터가 다시 시작할 때마다) 실행됩니다.

c:\windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe queue pause
c:\windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe queue pause

이렇게하면 여전히 컴파일 최적화 작업을 수행하지만 (피크가 적은 시간에만 실행) mscorsvw/ msiexec프로세스가 길들입니다.


나는 당신의 스크립트를 테스트하지 않았습니다. 내 워크 스테이션에서 핫픽스를 즉시 설치할 수 있었고 문제가 해결되었습니다! 참조 주셔서 감사합니다.
Iain Samuel McLean Elder
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.