CREATE PROCEDURE [dbo].[CreateRdlChunk]
@ItemId UNIQUEIDENTIFIER,
@SnapshotId UNIQUEIDENTIFIER,
@IsPermanentSnapshot BIT,
@ChunkName NVARCHAR(260),
@ChunkFlags TINYINT,
@ChunkType INT,
@Version SMALLINT,
@MimeType NVARCHAR(260) = NULL
AS
BEGIN
IF @IsPermanentSnapshot != 0 BEGIN
INSERT INTO [ChunkData] (
ChunkId, SnapshotDataId, ChunkFlags, ChunkName,
ChunkType, Version, MimeType, Content )
SELECT
NEWID(), @SnapshotId, @ChunkFlags, @ChunkName,
@ChunkType, @Version, @MimeType, ISNULL(Linked.Content, Original.Content)
FROM [Catalog] Original
LEFT OUTER JOIN [Catalog] Linked WITH (INDEX(PK_Catalog)) ON (Original.LinkSourceId = Linked.ItemId)
WHERE Original.ItemId = @ItemId AND
NOT EXISTS (
SELECT *
FROM [ChunkData]
WHERE SnapshotDataId = @SnapshotId AND
ChunkName = @ChunkName AND
ChunkType = @ChunkType )
END
ELSE BEGIN
INSERT INTO [ReportServerTempdb].[dbo].[ChunkData] (
ChunkId, SnapshotDataId, ChunkFlags, ChunkName,
ChunkType, Version, MimeType, Content )
SELECT
NEWID(), @SnapshotId, @ChunkFlags, @ChunkName,
@ChunkType, @Version, @MimeType, ISNULL(Linked.Content, Original.Content)
FROM [Catalog] Original
LEFT OUTER JOIN [Catalog] Linked WITH (INDEX(PK_Catalog)) ON (Original.LinkSourceId = Linked.ItemId)
WHERE Original.ItemId = @ItemId AND
NOT EXISTS (
SELECT *
FROM [ReportServerTempdb].[dbo].[ChunkData]
WHERE SnapshotDataId = @SnapshotId AND
ChunkName = @ChunkName AND
ChunkType = @ChunkType )
END
END
GRANT EXECUTE ON [dbo].[CreateRdlChunk] TO RSExecRole
GO