Information About Decreasing the [URI] Dimension (310976)
The information in this article applies to:
- Microsoft Commerce Server 2000
This article was previously published under Q310976 SYMPTOMS
You may encounter either of the following behaviors:
- The online analytical processing (OLAP) server runs out of memory while you are importing Campaign data.
-or- - The [URI] dimension increases over time, which results in a continual increase in the amount of memory that OLAP requires.
CAUSE
The "out of memory" errors in the OLAP server may be caused by the inclusion of URIs that Campaign Event entries reference and this causes the [URI] dimension to increase beyond the capabilities of the OLAP server.
When dimensions are incrementally processed, new members are added to the existing dimension structure. If the underlying table is continually changing, the dimension increases with each incremental process. The [URI] dimension is based on the RequestsByURI table and the contents of the [URI] dimension change with each processing run; therefore, each incremental process can increase the size of the [URI] dimension.
RESOLUTIONTo resolve this problem, obtain the latest service pack for Commerce Server 2000. For additional information, click the following article number to view the article in the
Microsoft Knowledge Base:
297216 INFO: How to Obtain the Latest Commerce Server 2000 Service Pack
WORKAROUND
To work around this behavior:
- Edit the csdw_MakeAggRequestsByURI stored procedure to eliminate the addition of URIs from the CampaignEvent table (to do this, refer to the "More Information" section in this article).
- In Analysis Manager, remove the [URI] dimension from the [Campaign] cube in OLAP.
- In Query Manager, run the following query against the datawarehouse database to delete the Ad Placement report:
DELETE report WHERE DisplayName = 'Ad Placement'
To work around the gradual augmentation of the [URI] dimension, run the Report preparation task periodically in Full mode to purge old dimension members.
STATUSMicrosoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was first corrected in Commerce Server 2000 Service Pack 2 (SP2).MORE INFORMATION
Use the folowing sample code to create a version of the csdw_spMakeAggRequestsByUri stored procedure which loads the URIs for the 5000 most visited pages, entry pages, and exit pages but does not include the URIs referenced by CampaignEvents.
IF Exists (SELECT * FROM sysobjects WHERE id = object_id(N'dbo.CSDW_MakeAggRequestsByUri'))
drop procedure dbo.CSDW_MakeAggRequestsByUri
GO
create procedure [dbo].[CSDW_MakeAggRequestsByUri]
as
declare @UriMemberCount nvarchar(32)
declare @cmdstr nvarchar(4000)
set nocount on
set @UriMemberCount = convert(nvarchar(32),5000)
exec('truncate table RequestsByUri')
create table #TopEntryPages( UriId binary(6) not null, Uri nvarchar(255) not null, VisitCount int not null )
create table #TopExitPages( UriId binary(6) not null, Uri nvarchar(255) not null, VisitCount int not null )
declare @siteid binary(6)
declare @sitename varchar ( 255)
DECLARE SiteCursor CURSOR LOCAL FOR
select siteid,sitename from site where siteid > 0x0000000003E7
OPEN SiteCursor
--
-- For each site , Get the top N Uri by hits
--
FETCH NEXT FROM SiteCursor INTO @siteid,@sitename
WHILE @@FETCH_STATUS = 0
BEGIN
select @cmdstr = 'insert into RequestsByUri ([UriId], [HitsCount],[Uri])
select top ' + @UriMemberCount + ' a.uriid,
sum(a.HitsCount) as HitsCount,b.[Uri]
from HitsInfo a inner join uri b on a.uriid = b.uriid
inner join site c on a.siteid = c.siteid
where c.sitename = ''' + @sitename + '''' +
' group by a.uriid,b.uri
order by HitsCount desc, uri desc'
exec( @cmdstr )
select @cmdstr ='insert into #TopEntryPages( Uriid, VisitCount, Uri )
select top ' + @UriMemberCount + ' b.uriid, sum(a.VisitCount), b.Uri
from firsturibydate a inner join uri b on a.uriid=b.uriid
inner join site c on a.siteid = c.siteid
where c.sitename = ''' + @sitename + '''' +
' group by b.uriid, b.uri
order by sum(a.VisitCount) desc, uri desc'
exec( @cmdstr )
select @cmdstr ='insert into #TopExitPages( Uriid, VisitCount, Uri )
select top ' + @UriMemberCount + ' b.uriid, sum(a.VisitCount), b.Uri
from lasturibydate a inner join uri b on a.uriid=b.uriid
inner join site c on a.siteid = c.siteid
where c.sitename = ''' + @sitename + '''' +
' group by b.uriid, b.uri
order by sum(a.VisitCount) desc, uri desc'
exec( @cmdstr )
FETCH NEXT FROM SiteCursor
INTO @siteid,@sitename
END
CLOSE SiteCursor
DEALLOCATE SiteCursor
-- include top N most visited entry pages
delete from #TopEntryPages where uriid in (select uriid from RequestsByUri)
insert into RequestsByUri ([Uriid], [HitsCount],[Uri])
select uriid, 0 as HitsCount,Uri
from #TopEntryPages
-- include top N most visited exit pages
delete from #TopExitPages where uriid in (select uriid from RequestsByUri)
insert into RequestsByUri ([Uriid], [HitsCount],[Uri])
select uriid, 0 as HitsCount,Uri
from #TopExitPages
GO
Modification Type: | Major | Last Reviewed: | 10/17/2002 |
---|
Keywords: | kbbug kbCommServ2000SP2fix KB310976 |
---|
|