적용 대상
Microsoft BitLocker Administration and Monitoring 2.5

증상

많은 클라이언트가 Microsoft BitLocker 관리 및 모니터링 2.5 복구 데이터베이스에 연결할 때 데이터베이스에 SQL 교착 상태가 발생할 수 있습니다. 따라서 지원 부서 포털 또는 셀프 서비스 포털에서 키를 복구할 수 없습니다. MBAM 서비스가 연결할 수 있게 되 면 암호화 하려고 하면 오류가 발생 하는 새로운 클라이언트. 이렇게 하면 시간 제한 및 기타 오류.BitLocker 관리 Solution\Logs\Recovery c:\inetpub\Microsoft 및 Service\ 하드웨어 MBAM 서비스 추적 로그에 다음과 같은 오류가 발생 하는 또한 *.svclogs.

트랜잭션 (프로세스 ID 63) 잠금 리소스에서 다른 프로세스와 교착 상태 희생자로 선택 되었습니다. 교착 상태가 발생 합니다.  Uncommittable 트랜잭션 된 일괄 처리의 끝에 발견 되었습니다. 트랜잭션이 롤백됩니다.

해결 방법

이 문제를 해결 하려면 MBAM 복구 데이터베이스에 연결 된 저장된 프로시저를 업데이트 합니다. 이렇게 하려면 다음 Transact SQL 스크립트를 실행 합니다.

USE [MBAM Recovery and Hardware]GO/****** Object:  StoredProcedure [RecoveryAndHardwareCore].[GetDomainId]    Script Date: 05/09/2014 07:58:22 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:      <Kirill Tropin>-- Create date: <6/18/2010>-- Description: <Returns DomainId for provided Domain Name. If domain isn't saved - will add it.>-- =============================================ALTER PROCEDURE [RecoveryAndHardwareCore].[GetDomainId]    @DomainName nvarchar(255)WITH EXECUTE AS OWNERASBEGIN     -- Validating input parameters    IF (@DomainName IS NULL)    BEGIN        RETURN -1    END    -- Adding domain if needed and returning DomainId    DECLARE @OrigTranCount int    SET @OrigTranCount = @@TRANCOUNT    IF @OrigTranCount > 0        SAVE TRAN myTran    ELSE        BEGIN TRAN    BEGIN TRY        DECLARE @DomainId int        SET @DomainId = (                        SELECT Id                        FROM Domains                        WITH (READPAST)     -- If a committed domain exists then get it, otherwise returns NULL                        WHERE (Domains.DomainName = @DomainName)                        )        -- Inserting Domain since it wasn't there        IF (@DomainId IS NULL)        BEGIN            /*            In the unlikely event that two clients simultaneously insert the same new domain,            we can end up with a race condition as they both attempt to insert the domain.            One of them will get an exception (error code 2627) due to the unique constraint            and should use this to trigger a re-read of the domain.            */            WHILE @DomainId IS NULL            BEGIN                BEGIN TRY                    INSERT INTO Domains WITH (ROWLOCK, UPDLOCK)                                (DomainName)                    VALUES      (@DomainName)                    SET @DomainId = @@IDENTITY                END TRY                BEGIN CATCH                    DECLARE @ErrorNumber INT                    DECLARE @ErrorSeverity INT                    DECLARE @ErrorState INT                    SELECT @ErrorNumber = ERROR_NUMBER(), @ErrorSeverity = ERROR_SEVERITY(), @ErrorState = ERROR_STATE()                    IF @ErrorNumber = 2627                    BEGIN                        SET @DomainId = (                            SELECT Id                            FROM Domains                            WITH (READCOMMITTED)                            WHERE (Domains.DomainName = @DomainName)                            )                    END                    ELSE                    BEGIN                        RAISERROR (@ErrorNumber, @ErrorSeverity, @ErrorState)                    END                END CATCH            END        END        IF @OrigTranCount = 0            COMMIT TRAN    END TRY    BEGIN CATCH        IF @OrigTranCount = 0            ROLLBACK TRAN        ELSE             IF XACT_STATE() <> -1                ROLLBACK TRAN myTran        DECLARE @ErrorMessage1 NVARCHAR(4000);        DECLARE @ErrorSeverity1 INT;        DECLARE @ErrorState1 INT;        SELECT @ErrorMessage1 = ERROR_MESSAGE();        SELECT @ErrorSeverity1 = ERROR_SEVERITY();        SELECT @ErrorState1 = ERROR_STATE();        RAISERROR (@ErrorMessage1, -- Message text.                   @ErrorSeverity1, -- Severity.                   @ErrorState1 -- State.                   );    END CATCH    RETURN @DomainIdEND 

USE [MBAM Recovery and Hardware]GO/****** Object:  StoredProcedure [RecoveryAndHardwareCore].[GetDomainId]    Script Date: 05/09/2014 14:06:14 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:      <Kirill Tropin>-- Create date: <6/18/2010>-- Description: <Returns DomainId for provided Domain Name. If domain isn't saved - will add it.>-- =============================================ALTER PROCEDURE [RecoveryAndHardwareCore].[GetDomainId]    @DomainName nvarchar(255)WITH EXECUTE AS OWNERASBEGIN     -- Validating input parameters    IF (@DomainName IS NULL)    BEGIN        RETURN -1    END    -- Adding domain if needed and returning DomainId    DECLARE @OrigTranCount int    SET @OrigTranCount = @@TRANCOUNT    IF @OrigTranCount > 0        SAVE TRAN myTran    ELSE        BEGIN TRAN    BEGIN TRY        SET NOCOUNT ON        -- Use a merge statement to guarantee that the domain will be in the table        -- when the SELECT statement is called to get it.        MERGE Domains WITH (HOLDLOCK)        USING (SELECT @DomainName as DomainName) AS NewDomain        ON Domains.DomainName = NewDomain.DomainName        WHEN NOT MATCHED THEN            INSERT (DomainName)                VALUES (NewDomain.DomainName)        ;        DECLARE @DomainId int        SET @DomainId = (                        SELECT Id                        FROM Domains                        WHERE Domains.DomainName = @DomainName                        )        IF @OrigTranCount = 0            COMMIT TRAN    END TRY    BEGIN CATCH        IF @OrigTranCount = 0            ROLLBACK TRAN        ELSE             IF XACT_STATE() <> -1                ROLLBACK TRAN myTran        DECLARE @ErrorMessage1 NVARCHAR(4000);        DECLARE @ErrorSeverity1 INT;        DECLARE @ErrorState1 INT;        SELECT @ErrorMessage1 = ERROR_MESSAGE();        SELECT @ErrorSeverity1 = ERROR_SEVERITY();        SELECT @ErrorState1 = ERROR_STATE();        RAISERROR (@ErrorMessage1, -- Message text.                   @ErrorSeverity1, -- Severity.                   @ErrorState1 -- State.                   );    END CATCH    RETURN @DomainIdENDGO 

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.