CREATE PROCEDURE [dbo].[GetSessionData]
@SessionID as varchar(32),
@OwnerSid as varbinary(85) = NULL,
@OwnerName as nvarchar(260),
@AuthType as int,
@SnapshotTimeoutMinutes as int
AS
DECLARE @now as datetime
SET @now = GETDATE()
DECLARE @DBSessionID varchar(32)
DECLARE @SnapshotDataID uniqueidentifier
DECLARE @IsPermanentSnapshot bit
EXEC CheckSessionLock @SessionID = @SessionID
DECLARE @OwnerID uniqueidentifier
EXEC GetUserID @OwnerSid, @OwnerName, @AuthType, @OwnerID OUTPUT
SELECT
@DBSessionID = SE.SessionID,
@SnapshotDataID = SE.SnapshotDataID,
@IsPermanentSnapshot = SE.IsPermanentSnapshot
FROM
[ReportServerTempDB].dbo.SessionData AS SE WITH (XLOCK)
WHERE
SE.OwnerID = @OwnerID AND
SE.SessionID = @SessionID AND
SE.Expiration > @now
UPDATE
SE
SET
Expiration = DATEADD(s, Timeout, @now)
FROM
[ReportServerTempDB].dbo.SessionData AS SE
WHERE
SE.SessionID = @DBSessionID
IF (@DBSessionID IS NOT NULL) BEGIN
IF @IsPermanentSnapshot != 0 BEGIN
SELECT
SN.SnapshotDataID,
SE.ShowHideInfo,
SE.DataSourceInfo,
SN.Description,
SE.EffectiveParams,
SN.CreatedDate,
SE.IsPermanentSnapshot,
SE.CreationTime,
SE.HasInteractivity,
SE.Timeout,
SE.SnapshotExpirationDate,
SE.ReportPath,
SE.HistoryDate,
SE.CompiledDefinition,
SN.PageCount,
SN.HasDocMap,
SE.Expiration,
SN.EffectiveParams,
SE.PageHeight,
SE.PageWidth,
SE.TopMargin,
SE.BottomMargin,
SE.LeftMargin,
SE.RightMargin,
SE.AutoRefreshSeconds,
SE.AwaitingFirstExecution,
SN.[DependsOnUser]
FROM
[ReportServerTempDB].dbo.SessionData AS SE
INNER JOIN SnapshotData AS SN ON SN.SnapshotDataID = SE.SnapshotDataID
WHERE
SE.SessionID = @DBSessionID
UPDATE SnapshotData
SET ExpirationDate = DATEADD(n, @SnapshotTimeoutMinutes, @now)
WHERE SnapshotDataID = @SnapshotDataID
END ELSE IF @IsPermanentSnapshot = 0 BEGIN
SELECT
SN.SnapshotDataID,
SE.ShowHideInfo,
SE.DataSourceInfo,
SN.Description,
SE.EffectiveParams,
SN.CreatedDate,
SE.IsPermanentSnapshot,
SE.CreationTime,
SE.HasInteractivity,
SE.Timeout,
SE.SnapshotExpirationDate,
SE.ReportPath,
SE.HistoryDate,
SE.CompiledDefinition,
SN.PageCount,
SN.HasDocMap,
SE.Expiration,
SN.EffectiveParams,
SE.PageHeight,
SE.PageWidth,
SE.TopMargin,
SE.BottomMargin,
SE.LeftMargin,
SE.RightMargin,
SE.AutoRefreshSeconds,
SE.AwaitingFirstExecution,
SN.[DependsOnUser]
FROM
[ReportServerTempDB].dbo.SessionData AS SE
INNER JOIN [ReportServerTempDB].dbo.SnapshotData AS SN ON SN.SnapshotDataID = SE.SnapshotDataID
WHERE
SE.SessionID = @DBSessionID
UPDATE [ReportServerTempDB].dbo.SnapshotData
SET ExpirationDate = DATEADD(n, @SnapshotTimeoutMinutes, @now)
WHERE SnapshotDataID = @SnapshotDataID
END ELSE BEGIN
SELECT
null,
SE.ShowHideInfo,
SE.DataSourceInfo,
null,
SE.EffectiveParams,
null,
SE.IsPermanentSnapshot,
SE.CreationTime,
SE.HasInteractivity,
SE.Timeout,
SE.SnapshotExpirationDate,
SE.ReportPath,
SE.HistoryDate,
SE.CompiledDefinition,
null,
null,
SE.Expiration,
null,
SE.PageHeight,
SE.PageWidth,
SE.TopMargin,
SE.BottomMargin,
SE.LeftMargin,
SE.RightMargin,
SE.AutoRefreshSeconds,
SE.AwaitingFirstExecution,
null
FROM
[ReportServerTempDB].dbo.SessionData AS SE
WHERE
SE.SessionID = @DBSessionID
END
END
GO
GRANT EXECUTE ON [dbo].[GetSessionData] TO [RSExecRole]
GO