728x90

버디리스트를 파워쉘로 백업을 꼭 받아두자.

고객사 PM작업 이후 버디리스트가 유실 되는 현상이 발생 되었다.

그러나 백업의 유효성은 검증 되지 못하는 점이 아쉽다.

왜냐면 유실 사용자의 버디를 복원 해보니 아무것도 존재 하지 않는다는 사실!!!

헐!!!!

일단 가장 간당하게 백업 및 복원 할 수 있는 방법이고 Lync에서 제공 되기에 신뢰성은 높다고 본다.

 

1. 전체백업과 복원

a.전체 백업

Export-CsUserData -PoolFqdn "pool.domain.com" -FileName "C:\Logs\ExportedUserData.zip"

b.전체 백업 복원

Import-CsUserData -PoolFqdn "pool.domain.com" -FileName "C:\Logs\ExportedUserData.zip"

c.업데이트를 통한 전체 복원

 Update-CsUserData -PoolFqdn "pool.domain.com" -FileName "C:\Logs\ExportedUserData.zip"

 

2. 사용자 백업과 복원

a. 사용자 백업

Export-CsUserData -poolfqdn "pool.domain.com" -UserFilter "sipaddress" -FileName "D:\test001.zip"

b. 업데이트를 통한 복원

 Update-CsUserData -poolfqdn "pool.domain.com" -UserFilter "sipaddress" -FileName "D:\test001.zip"

 

3. 버디리스트 복원에서 특정 사용자만 XML Convert 방법

이것은 버디리스트 후 특정 사용자가 그룹 및 버디가 정상적으로 있는지 XML로 변환 후 정상적으로 있는지 확인을 위한 것이다.

 Convert-CsUserData -InputFile " d:\ExportedUserData.zip" -OutputFile "D:\Logs\Lync2010data.xml" -TargetVersion Lync2010 -UserFilter "sipaddress"

 

유효성이 검증 되지 않아 별도 2차 백업 및 복원 방법은 전체 F/E의 백업을 매일/재부팅작업전DB와 작업 후 DB를 백업 받은 후 검증하여 유실 사용자가 있는지 파악하여 WCF를 통하여 복원하였다.

시간이 되면 그때 공유 하도록 하겠습니다.

 

끝.

728x90
728x90

1. Lync 안드로이드,아이폰,아이패드 로그인 이력을 뽑아달라는 고객의 요청에 의해 Back-End / LCSCDR DB

에서 아래와 같이 뽑아주었다.

USE LCSCDR

 declare @SipAddress nvarchar(200),
  @StartDate datetime,
  @EndDate datetime,
  @CurrPage int

select @SipAddress = 'test001@mani4u.com', @CurrPage = 1, @StartDate = cast('2015-01-01' as datetime), @EndDate = cast('2015-05-30' as datetime)
select @SipAddress, @CurrPage, @StartDate, @EndDate

; WITH ConnectionLog AS
(
 SELECT  ROW_NUMBER() OVER(ORDER BY reg.RegisterTime desc) AS rownum
    , DATEADD(minute, DATEDIFF(minute, sysutcdatetime(), sysdatetime()), reg.SessionIdTime) AS SessionIdTimeS 
    , reg.SessionIdSeq
    , usr.UserUri AS SipAddress 
    , DATEADD(minute, DATEDIFF(minute, sysutcdatetime(), sysdatetime()), reg.RegisterTime) AS LoginTime 
    , DATEADD(minute, DATEDIFF(minute, sysutcdatetime(), sysdatetime()), reg.DeRegisterTime) AS LogoutTime 
    , reg.IpAddress 
    ,CASE WHEN reg.[DeRegisterTypeId] = 1 THEN N'정상종료' 
      WHEN reg.[DeRegisterTypeId] = 2 THEN N'접속만료' 
      WHEN reg.[DeRegisterTypeId] = 3 THEN N'비정상종료' 
      WHEN reg.[DeRegisterTypeId] = 4 THEN N'사용자속성변경' 
      WHEN reg.[DeRegisterTypeId] = 5 THEN N'POOL변경' 
      WHEN reg.[DeRegisterTypeId] = 6 THEN N'Client버전문제' 
      ELSE N'알수없음' END AS LogoutReason 
    ,CASE WHEN reg.[RegistrarId] = 1 THEN N'Lync 2013 Client' 
      WHEN reg.[RegistrarId] = 1003 THEN N'Lync 2013 Client' 
      WHEN reg.[RegistrarId] = 1002 THEN N'MSPL' 
      WHEN reg.[RegistrarId] = 2002 THEN N'MSPL'  
      WHEN reg.[RegistrarId] = 2003 THEN N'MSPL'  
      ELSE N'ETC' END AS ClientVer 
    , REPLACE(ser.ServerFQDN,'.adatum.com','') AS ServerFQDN 
    , REPLACE(poo.PoolFQDN,'.adatum.com','') AS PoolFQDN 
    , reg.EdgeServerId 
    , CASE WHEN reg.IsInternal = 1 THEN N'내부' ELSE N'외부' END AS IsInternal 
    , reg.IsUserServiceAvailable 
    , reg.IsPrimaryRegistrar 
    , reg.IsPrimaryRegistarCentral 
    , reg.ResponseCode 
    , reg.DiagnosticId 
    , reg.DeviceId 
    , reg.EndpointId 
    , reg.EndpointEra 
    , (SELECT top 1 [Version]  FROM [LcsCDR].[dbo].[ClientVersions] where reg.ClientVersionId=[VersionId])  as VersionName
 FROM  Registration reg 
   INNER JOIN Users usr  
    ON reg.UserId = usr.UserId 
    INNER JOIN Pools poo  
    ON reg.PoolId = poo.PoolId  
    INNER JOIN Servers ser  
    ON reg.RegistrarId = ser.ServerId  
   INNER JOIN (
     SELECT [VersionId]  FROM [LcsCDR].[dbo].[ClientVersions]
     where 1=1
     and (charindex('Android', Version) > 0
      or charindex('iPhone', Version) > 0
      or charindex('iPad', Version) > 0)
   ) VER
   ON VER.[VersionId] = reg.ClientVersionId
 WHERE  (1 = 1)  
 --AND   (usr.UserUri = @SipAddress)  
    AND   dateadd(minute, datediff(minute, sysutcdatetime(), sysdatetime()), reg.[RegisterTime])  
    BETWEEN DATEADD(day,0,CONVERT(VARCHAR(10), @StartDate,23))  
 AND DATEADD(day,1,CONVERT(VARCHAR(10), @EndDate,23)) 
)
SELECT * FROM ConnectionLog
 --WHERE rownum BETWEEN (@CurrPage-1) * 50 + 1 AND @CurrPage * 50

 

2. 전체 로그인 이력 뽑는 쿼리

 

declare @SipAddress nvarchar(200),
  @StartDate datetime,
  @EndDate datetime,
  @CurrPage int

select @SipAddress = 'test@mani4u.com', @CurrPage = 1, @StartDate = cast('2015-01-01' as datetime), @EndDate = cast('2015-05-30' as datetime)
select @SipAddress, @CurrPage, @StartDate, @EndDate

; WITH ConnectionLog AS
(
 SELECT  ROW_NUMBER() OVER(ORDER BY reg.RegisterTime desc) AS rownum
    , DATEADD(minute, DATEDIFF(minute, sysutcdatetime(), sysdatetime()), reg.SessionIdTime) AS SessionIdTimeS 
    , reg.SessionIdSeq
    , usr.UserUri AS SipAddress 
    , DATEADD(minute, DATEDIFF(minute, sysutcdatetime(), sysdatetime()), reg.RegisterTime) AS LoginTime 
    , DATEADD(minute, DATEDIFF(minute, sysutcdatetime(), sysdatetime()), reg.DeRegisterTime) AS LogoutTime 
    , reg.IpAddress 
    ,CASE WHEN reg.[DeRegisterTypeId] = 1 THEN N'정상종료' 
      WHEN reg.[DeRegisterTypeId] = 2 THEN N'접속만료' 
      WHEN reg.[DeRegisterTypeId] = 3 THEN N'비정상종료' 
      WHEN reg.[DeRegisterTypeId] = 4 THEN N'사용자속성변경' 
      WHEN reg.[DeRegisterTypeId] = 5 THEN N'POOL변경' 
      WHEN reg.[DeRegisterTypeId] = 6 THEN N'Client버전문제' 
      ELSE N'알수없음' END AS LogoutReason 
    ,CASE WHEN reg.[RegistrarId] = 1 THEN N'Lync 2013 Client' 
      WHEN reg.[RegistrarId] = 1003 THEN N'Lync 2013 Client' 
      WHEN reg.[RegistrarId] = 1002 THEN N'MSPL' 
      WHEN reg.[RegistrarId] = 2002 THEN N'MSPL'  
      WHEN reg.[RegistrarId] = 2003 THEN N'MSPL'  
      ELSE N'ETC' END AS ClientVer 
    , REPLACE(ser.ServerFQDN,'.adatum.com','') AS ServerFQDN 
    , REPLACE(poo.PoolFQDN,'.adatum.com','') AS PoolFQDN 
    , reg.EdgeServerId 
    , CASE WHEN reg.IsInternal = 1 THEN N'내부' ELSE N'외부' END AS IsInternal 
    , reg.IsUserServiceAvailable 
    , reg.IsPrimaryRegistrar 
    , reg.IsPrimaryRegistarCentral 
    , reg.ResponseCode 
    , reg.DiagnosticId 
    , reg.DeviceId 
    , reg.EndpointId 
    , reg.EndpointEra 
 FROM  Registration reg 
   INNER JOIN Users usr  
    ON reg.UserId = usr.UserId 
    INNER JOIN Pools poo  
    ON reg.PoolId = poo.PoolId  
    INNER JOIN Servers ser  
    ON reg.RegistrarId = ser.ServerId  
 WHERE  (1 = 1)  
 AND   (usr.UserUri = @SipAddress)  
    AND   dateadd(minute, datediff(minute, sysutcdatetime(), sysdatetime()), reg.[RegisterTime])  
    BETWEEN DATEADD(day,0,CONVERT(VARCHAR(10), @StartDate,23))  
 AND DATEADD(day,1,CONVERT(VARCHAR(10), @EndDate,23)) 
)
SELECT * FROM ConnectionLog
 WHERE rownum BETWEEN (@CurrPage-1) * 50 + 1 AND @CurrPage * 50  

 

728x90
728x90

728x90

'마니이야기 > 주현' 카테고리의 다른 글

아들 안티 사진~ㅋㅋㅋ  (0) 2015.05.19
아들 먹방  (0) 2015.05.18
아들이 처음으로 아팟다.  (0) 2015.05.16
아들 본아트 사진!!!  (0) 2015.05.16
아들이 벌써 이러면 안되는데...  (0) 2015.05.16
728x90

아들아 건강하게 자라렴~~~^^​

728x90

'마니이야기 > 주현' 카테고리의 다른 글

아들 먹방  (0) 2015.05.18
50일 사진  (0) 2015.05.16
아들 본아트 사진!!!  (0) 2015.05.16
아들이 벌써 이러면 안되는데...  (0) 2015.05.16
주현1  (0) 2015.05.15
728x90

728x90

'마니이야기 > 주현' 카테고리의 다른 글

아들 먹방  (0) 2015.05.18
50일 사진  (0) 2015.05.16
아들이 처음으로 아팟다.  (0) 2015.05.16
아들이 벌써 이러면 안되는데...  (0) 2015.05.16
주현1  (0) 2015.05.15
728x90

728x90

'마니이야기 > 주현' 카테고리의 다른 글

아들 먹방  (0) 2015.05.18
50일 사진  (0) 2015.05.16
아들이 처음으로 아팟다.  (0) 2015.05.16
아들 본아트 사진!!!  (0) 2015.05.16
주현1  (0) 2015.05.15
728x90

728x90

'마니이야기 > 요리' 카테고리의 다른 글

오늘의 요리 - 전복버터구이  (0) 2015.05.16
728x90

728x90

'마니이야기 > 요리' 카테고리의 다른 글

오늘의요리-꽃게전복된장찌게  (0) 2015.05.16
728x90

제 아들을 소개 합니다.
태명 : 쑥쑥이 (쑥쑥 자라달라고...)
이름 : 김주현(물처럼 어진 사람이 되어라)
생일 : 2015.02.10 11:18
좋아하는것 : 찌찌, 외출, 티비시청, 모빌,딸랑이
싫어하는거 : 누워있기, 머리감기​

728x90

'마니이야기 > 주현' 카테고리의 다른 글

아들 먹방  (0) 2015.05.18
50일 사진  (0) 2015.05.16
아들이 처음으로 아팟다.  (0) 2015.05.16
아들 본아트 사진!!!  (0) 2015.05.16
아들이 벌써 이러면 안되는데...  (0) 2015.05.16

+ Recent posts