728x90

https://insidemstech.com/2015/07/31/skype-for-business-server-2015-databases/

 

중앙 관리 저장소의 데이터 및 로그 파일
중앙 관리 저장소 데이터베이스 파일 데이터 파일 또는 로그 용도
Xds.ldf 중앙 관리 저장소에 대한 트랜잭션 로그 파일
Xds.mdf 토폴로지 작성기에 정의 및 게시된 대로 현재 Lync Server 2013 토폴로지 구성 유지 관리
Lis.mdf 위치 정보 서비스 데이터 파일
Lis.ldf 위치 정보 서비스 데이터 파일에 대한 트랜잭션 로그 파일
사용자, 회의 및 주소록에 대한 데이터 및 로그 파일
핵심 Lync Server 2013 데이터베이스 파일 데이터 파일 또는 로그 용도
Rtc.mdf 영구적 사용자 데이터(예: ACL(액세스 제어 목록), 대화 상대, 예약된 회의)
Rtc.ldf Rtc 데이터의 트랜잭션 로그
Rtcdyn.mdf 임시 사용자 데이터(현재 상태 런타임 데이터) 유지 관리
Rtcdyn.ldf Rtcdyn 데이터의 트랜잭션 로그
Rtcab.mdf RTC(Real-Time Communications) 주소록 데이터베이스는 주소록 서비스 정보가 저장되는 SQL Server 리포지토리임
Rtcab.ldf 주소록 서비스에 대한 트랜잭션 로그
Rtclocal.mdb 회의 디렉터리 호스트
Rtcxds.mdf 사용자 데이터에 대한 백업 유지 관리
Rtcxds.ldf Rtcxds 데이터의 트랜잭션 로그
통화 대기 및 응답 그룹에 대한 데이터 및 로그 파일
응용 프로그램 데이터베이스 데이터 파일 또는 로그 용도
Cpsdyn.mdf 통화 대기 응용 프로그램에 대한 동적 정보 데이터베이스
Cpsdyn.ldf 통화 대기 응용 프로그램 데이터 파일에 대한 트랜잭션 로그
Rgsconfig.mdf 서비스 구성에 대한 Lync Server 응답 그룹 서비스 데이터 파일
Rgsconfig.ldf 응답 그룹 응용 프로그램 구성에 대한 트랜잭션 로그 파일
Rgsdyn.mdf 런타임 작업에 대한 응답 그룹 서비스 데이터 파일
Rgsdyn.ldf 응답 그룹 서비스 런타임 데이터 파일에 대한 트랜잭션 로그
보관 및 모니터링 서버에 대한 데이터 및 로그 파일
보관 및 모니터링 데이터베이스 파일 데이터 파일 또는 로그 용도
LcsCdr.mdf 모니터링 서버의 CDR(통화 정보 기록) 프로세스에 대한 데이터 저장소
LcsCdr.ldf CDR(통화 정보 기록) 데이터에 대한 트랜잭션 로그
QoEMetrics.mdf 모니터링 서버에서 저장된 체감 품질 데이터 파일
QoEMetrics.ldf 모니터링 데이터에 대한 트랜잭션 로그
Lcslog.mdf 보관 서버에 인스턴트 메시징 및 회의 데이터를 보존하기 위한 데이터 파일
Lcslog.ldf 보관 데이터에 대한 트랜잭션 로그
이 항목에서는 디스크 및 RAID 세트를 기준으로 합니다. SQL Server 리소스 구성에서 디스크란 단일 하드웨어 장치를 의미합니다. 각각 로그 파일과 데이터 파일을 유지하는 두 개의 파티션이 있는 하드 디스크 드라이브는 각각 로그 또는 데이터 파일에 전용되는 두 개의 디스크와 다릅니다.
RAID 세트의 경우 여러 공급업체의 다양한 RAID 기술이 있습니다. 또한 SAN(저장 영역 네트워크)의 증가로 인해 단일 시스템에 전용되는 RAID 세트가 드문 것이 현실입니다. 따라서 Lync Server 2013에서 SQL Server 성능을 구성할 때 RAID 또는 SAN 공급업체에 문의하여 디스크 레이아웃에 가장 적합한 구성을 확인해야 합니다.
또한 모든 디스크 드라이브가 동일하게 만들어지는 것이 아니며 그 중 성능이 나은 것이 있습니다. 같은 제조업체의 드라이브도 회전 속도, 하드웨어 캐시 크기 및 기타 요인으로 인해 성능이 다를 수 있습니다.

728x90
728x90

안녕하세요.

오늘은 각 F/E에 속한 계정정보를 쿼리하는 방법에 대해서 알아보도록 하겠습니다.

 

파워쉘로

"get-CsUserPoolInfo 계정"  명령어를 실행하면 "PrimaryPoolPrimaryRegistrar"에 대한 F/E 정보가 나옵니다.

F/E가 여러대라면 사용자는 "PrimaryPoolPrimaryRegistrar"에 Conncet 시도를 하시는건 아시죠.

 

저는 전체 사용자에 대한 F/E에 속한 모든 계정을 뽑아보려고 합니다.

하여 아래 쿼리를 만들어 보았네요.

 

실행 방법은 Lync Back-End 접속 후 F/E에 연결하여 아래와 같이 쿼리 하시면 됩니다.

만약 전체에 대한 내역을 뽑고 싶을때는 where절을 주석 처리 하시면 됩니다.

 

use rtc

DECLARE @fefqdn Varchar(256)

SET @fefqdn = 'F/E1 Fqdn'

--SET @fefqdn = 'F/E2 Fqdn'

--SET @fefqdn = 'F/E3 Fqdn' 

 

select R.ResourceId, R.UserAtHost, RGA.RoutingGroupId, FE.Fqdn from Resource R

Join ResourceDirectory RD

ON R.ResourceId = RD.ResourceId

Join RoutingGroupAssignment RGA

ON RD.RoutingGroupId = RGA.RoutingGroupId

Join FrontEnd FE

ON RGA.FrontEndId = FE.FrontEndId

where FE.Fqdn = @fefqdn

order by R.ResourceId, R.UserAtHost

 

끝.

 

728x90
728x90

한 계정으로 동시 접속수를 제한 할 수 있습니다.

요즘 PC에서만 한다는 생각은 No!No!

멀티PC로그인 혹은 모바일, 테블릿등 많으니 잘 고려하셔서 변경 하시면 될 듯 합니다.

 

 

 변경 방법 : Set-CsRegistrarConfiguration -Identity global -MaxEndpointsPerUser 동시접속수(정수)

 

 

 

1. Lync 파워쉘을 오픈한 다음.

 

2. Get-CsRegistrarConfiguration [Enter]

 

Identity                        : Global
MinEndpointExpiration           : 300
MaxEndpointExpiration           : 900
DefaultEndpointExpiration       : 600
MaxEndpointsPerUser             : 2
EnableDHCPServer                : False
PoolState                       : Active
BackupStoreUnavailableThreshold : 00:30:00
MaxUserCount                    : 7500

Identity                        : Site:Mani4u
MinEndpointExpiration           : 300
MaxEndpointExpiration           : 900
DefaultEndpointExpiration       : 600
MaxEndpointsPerUser             : 3
EnableDHCPServer                : False
PoolState                       : Active
BackupStoreUnavailableThreshold : 00:30:00
MaxUserCount                    : 7500

 

Golbal은 동시접속이 2개가 가능 한것을 볼 수 있습니다.

Site(Mani4u)는 3개가 가능하군요.

결국 Site마다 동시접수를 변경 가능하다는 말이네요.

 

Set-CsRegistrarConfiguration -Identity global -MaxEndpointsPerUser 1 [Enter]

 

Get-CsRegistrarConfiguration [Enter]

 

Identity                        : Global
MinEndpointExpiration           : 300
MaxEndpointExpiration           : 900
DefaultEndpointExpiration       : 600
MaxEndpointsPerUser             : 1
EnableDHCPServer                : False
PoolState                       : Active
BackupStoreUnavailableThreshold : 00:30:00
MaxUserCount                    : 7500

Identity                        : Site:Mani4u
MinEndpointExpiration           : 300
MaxEndpointExpiration           : 900
DefaultEndpointExpiration       : 600
MaxEndpointsPerUser             : 3
EnableDHCPServer                : False
PoolState                       : Active
BackupStoreUnavailableThreshold : 00:30:00
MaxUserCount                    : 7500

 

Global의 동시접속자가 1로 설정 된것을 확인 할 수 있습니다.

 

참조 : https://technet.microsoft.com/ko-kr/library/gg398764.aspx

끝.

 

728x90
728x90

Lync Service를 서비스관리자에서 한땀한땀 올리려면 대기시간과 귀차니즘의 극에 달한다.

하지만 파워쉘 명령 두번이면 재시작 끝이다.

 

 1. Open the Lync Server Management Shell.

2. Run the following Lync Server PowerShell commands in the given order:

Stop-CsWindowService

 

Start-CsWindowsService

 

참 쉽죠이~

 

끝.

728x90
728x90

 

안녕하세요.

DBAnalyze는 관리자가 Lync Server 2013 데이터베이스에 대한 분석 보고서를 수집할 수 있도록 돕는 명령줄 도구입니다. DBAnalyze에는 다음과 같은 모드(진단, 사용자 데이터, 전화 회의, MCU, 디스크 조각화)가 있습니다.

 

실행 샘플)

DBAnalyze.exe /user:test@mani4u.com /report:user/sqlserver:PrimryRegistrarHost\rtcloal >c:\test_dbanalyze.txt

 

 

  • 진단 모드   테이블(레코드 , 조각화, 데이터 크기, 인덱스 크기), 데이터 로그 파일 크기, 마지막으로 백업한 시간, Microsoft Office Communications Server 실행 중인 서버의 대화 상대 분포, 사용 권한의 평균 , 대화 상대, 컨테이너, 구독, 게시, 사용자당 끝점, 잘못 이동된 사용자, 라우팅되지 않는 사용자, 사용자별로 주최한 전화 회의의 평균 , 예약된 전화 회의, 활성 전화 회의, 데이터베이스 버전에 대한 정보를 포함하는 보고서를 생성합니다.

참고:

진단 모드로 실행하면 서버 성능에 영향을 줄 수 있습니다.

  • 사용자 데이터 모드  특정 사용자 또는 해당 사용자가 자신의 대화 상대 사용 권한 목록에 있는 사용자의 대화 상대, 컨테이너, 구독, 게시, 사용 권한, 대화 상대 그룹 데이터를 보고합니다. 또한 모드에서는 사용자가 주최하거나 초대된 전화 회의에 대한 요약 데이터를 보고합니다.
  • 전화 회의 모드   전화 회의가 예약된 모든 시간 세부 정보, 초대 대상자 목록, 전화 회의에 허용된 미디어 유형 목록, 활성 MCU(Multipoint Control Unit), 활성 참가자 목록, 참가자의 신호 상태를 비롯한 특정 전화 회의에 대한 자세한 데이터를 보고합니다.
  • 모임 ID 디코딩   /pstnid 스위치로 지정되었지만 자세한 정보를 위해 백 엔드에 연결되지 않은 PSTN(공중 전화망) 모임 ID를 디코딩합니다.
  • 전화 회의 확인   /pstnid 스위치로 지정된 PSTN 모임 ID를 디코딩하고 해당 ID가 나타내는 전화 회의에 대한 정보를 표시합니다.
  • MCU 모드  풀의 MCU 대한 ID, 미디어 유형, URL, 하트비트 상태, 전화 회의 부하, 참가자 부하를 보고합니다.
  • 디스크 조각화 모드  모든 디스크의 조각화 상태를 표시합니다.

이 도구는 다양한 문제를 진단하거나 관리자의 용량 계획을 돕는 데 사용됩니다. 예를 들어 서버 A에 있는 대부분의 사용자가 자신의 대화 상대로 서버 B에 있는 사용자를 선택하는 경우, 관리자는 서버 간 트래픽을 줄이기 위해 서버 A의 사용자를 서버 B로 이동할 수 있습니다.

출력

 

이 도구는 Lync Server 2013 데이터베이스에 대해 미리 정의된 보고서를 출력합니다. 경로: %ProgramFiles%\Microsoft Lync Server 2013\Reskit

용도

 

Dbanalyze.exe를 설치하려면 로컬 폴더로 복사한 다음 도구를 실행합니다. 도구를 사용하려면 명령줄에서 다음 명령을 실행합니다. dbanalyze.exe [/v] [/report:value] [/sqlserver:value] [/user:user@domain.com] [/conf:value][/pstnid:Value] [/maxcontacts:value] 아래에 명령줄 옵션에 대한 설명이 나와 있습니다.

 

 

예제

 

다음은 유효한 Dbanalyze.exe 명령의 예입니다.

복사

dbanalyze.exe /report:diag
dbanalyze.exe /report:user /user:usera@domainb.com
dbanalyze.exe /report:conf /user:bob@example.com /conf:1W9J71SKSX2X
dbanalyze.exe /report:resolve /pstnid:12345
dbanalyze.exe /report:mcus
dbanalyze.exe /report:disk

요약

 

DBAnalyzer를 사용하면 관리자가 Lync Server 2013 데이터베이스를 빠르고 쉽게 분석할 수 있습니다.

 

 

 

 

 

728x90
728x90

LYNC2013 설치하기 위한 포스트 공유

1. DNS 구성

 

 

 2. 인프라 구성 포스트

 

3. IM AND PRESENCE 작동 프로세스

 4. AV AND WEB CONFERENCING 프로세스 포스트

 5. APPLICATION SHARING 프로세스 포스트

 5. ENTERPRISE VOICE 프로세스 포스트

6.  CMS(Central Management Store) 프로세스 포스트

 

결론 - 이해 불가...ㅡ.ㅡ 난 돌떵인가벼.

끝.

 

728x90
728x90

Skype For Business가 LYNC2013 차기작으로 출시 됨으로 인해,

기존 LYNC2013을 사용 중인 고객사가 난리가 났다.

왜!!! LYNC UI가 Skype For Business UI로 변동 되는 현상과 Preview CU 후 로그인이 안되는 현상이 발생 되었다.

시간이 지나 알게 된 사실이지만 정식 CU에서는 정상 로그인이 되어 그나마 다행이다.(KB2889923,KB2889853)

 

Update skype UI로 변경 될 경우 아래와 같이 RegistryLync 2013 으로 변경할 수 있습니다.
0: Lync 2013 1: Skype UI
-HKEY_CURRENT_USER\Software\Microsoft\Office\Lync\EnableSkypeUI

 

 

MSG 나빠~~~ 말도 없이 이러기야~

끝. 

728x90
728x90

안녕하세요.

주현애비 입니다.

오늘은 Lync SErver 전체 사용자 버디리스트 및 그룹을 조회 하는 쿼리를 알아보도록 하겠습니다.

각 사용자는 ResourceID라는 것이 있습니다. 대부분의 이 ResourceID와 연결 고리 관계를 가지고 있다라고 볼수 있습니다.

1. ResourceID를 알기 위해서는 Resource Table에 본인의 'Sip Address'를 조건에 넣어 주시면 알수 있습니다.(F/E RCT DB)

===================================================

select * from Resource
 where UserAtHost = 'testh001@mani4u.com'

ResourceId  UserAtHost
3680            testh001@mani4u.com

===================================================

제 ResourceID는 "3680"이네요.

 

2.  사용자의 버디리스트를 확인 방법

Contact Table : 모든 사용자의 버디리스트가 있는 테이블입니다.

OwnerID는 본인의 ResourceID와 동일 합니다.

BuddyID는 사용자가 추가한 ResourceID입니다.

자 그럼 제가 추가한 사용자를 쿼리 해볼까요. 1번에서 봤듯이 제 ResourceID는 "3680"이었습니다.

select * from Contact

where OwnerId= '3680'

OwnerId BuddyId
3680       35
3680       36
3680       41
3680       42
3680       44
3680       45

제 버디리스트에는 6명이 존재하는 것을 알수 있네요.

거꾸로 생각해보면 상대방ID를 누가 추가 했는지도 알수 있겠네요.ㅋ

 

3. 버디 그룹 확인 방법

ContactGroup Table : 모든 사용자의 그룹이 있는 테이블입니다.

ContactGroup도 마찬가지로 OwnerId가 존재합니다. 즉 본인의 ReourceID와 동일하다는 것이고요.

각 OwnerID는 GroupNumber 필드의 값들은 1부터 그룹갯수만큼의 Sequence Number가 들어 있습니다.

기본적으로 GroupNumber 필드는 모든 사용자가 1과 2 값은 들어가 있습니다.

1값은 틸드(~)그룹으로 추가 되는 모든 사용자가 포함 되는 그룹입니다.

2값은 "다른 연락처(Pinned Contacts)"그룹입니다.

자 그럼 제 그룹이 몇개나 존재하는지 조회를 해보겠습니다.

select OwnerId , GroupNumber, cast(DisplayName as xml) as 그룹 from ContactGroup
where OwnerId =3680

OwnerId GroupNumber 그룹
3680       2                   Pinned Contacts
3680       1                    ~
3680       3                   그룹1
3680       4                   그룹2
3680       5                   그룹3

 

총 5개의 그룹이 존재 합니다.

요점 정리를 하자면 전체 버디 및 그룹을 잘 백업 하면 복원도 가능 합니다.

또한, 전체 사용자 백업을 위한 검증도 할 수 있겠죠.^^

끝.

 

 

 

 

 

728x90
728x90

F/E간 DB 복제 상태를 확인 하는 파워쉘 명령어이다.

정책배포라던지 Deploy 변경 시, 복제가 정상적으로 끝난 후 확인 하면 되겠다.

1. 기본 명령어

Get-CsManagementStoreReplicationStatus

 

2. Fales만 확인하는 명령어

Get-CsManagementStoreReplicationStatus | Where-Object {$_.UpToDate -eq $False}

 

전 F/E가 많기때문에 2번 방법을 선호 한다.

 

끝.

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

+ Recent posts