USP_OLAP_ETL_DATAMART_GETDELETEDIDS
Used by OLAP ETL SSIS packages. Returns a list of record ids that have been deleted between the supplied dates for the given table.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@AUDITTABLENAME | nvarchar(128) | IN | |
@DATAWINDOWOPEN | datetime | IN | |
@DATAWINDOWCLOSE | datetime | IN |
Definition
Copy
CREATE procedure dbo.USP_OLAP_ETL_DATAMART_GETDELETEDIDS
@AUDITTABLENAME nvarchar(128),
@DATAWINDOWOPEN datetime,
@DATAWINDOWCLOSE datetime
as
--This NOP is required for the SSIS development environment to be able to detect the result set column metadata.
if 1=null
SELECT NEWID() AS AUDITRECORDID;
declare @ETL_DELETEDID_TABLENAME nvarchar(128) = @AUDITTABLENAME + '_ETLDELETEDID';
if not exists(select [name] from sys.tables t where t.[name] = @AUDITTABLENAME or (t.[name] = @ETL_DELETEDID_TABLENAME and t.[schema_id]=SCHEMA_ID('BBETLAUDIT')))
BEGIN
RAISERROR('Invalid table name passed to dbo.USP_OLAP_ETL_DATAMART_GETDELETEDIDS',16,10);
return 100;
END
if @DATAWINDOWOPEN is null
BEGIN
RAISERROR('Null @DATAWINDOWOPEN passed to dbo.USP_OLAP_ETL_DATAMART_GETDELETEDIDS',16,10);
return 200;
END
if @DATAWINDOWCLOSE is null
BEGIN
RAISERROR('Null @DATAWINDOWCLOSE passed to dbo.USP_OLAP_ETL_DATAMART_GETDELETEDIDS',16,10);
return 300;
END
if @DATAWINDOWCLOSE < @DATAWINDOWOPEN
BEGIN
RAISERROR('@DATAWINDOWCLOSE must be later than @DATAWINDOWOPEN in dbo.USP_OLAP_ETL_DATAMART_GETDELETEDIDS',16,10);
return 400;
END
------------------------------------------------------------------------------------------------------------------------------
/*
pdg 12.21.2010
use new BBETLAUDIT deleted id tables if they are present, otherwise fall back to the existing audit tables
*/
if exists(select [name] from sys.tables as t where t.[name] = @ETL_DELETEDID_TABLENAME and t.[schema_id]=SCHEMA_ID('BBETLAUDIT') )
BEGIN
set @AUDITTABLENAME= 'BBETLAUDIT.' + @ETL_DELETEDID_TABLENAME;
END
------------------------------------------------------------------------------------------------------------------------------
declare @sql nvarchar(1024);
if 1=1 -- required for SSIS
BEGIN
set @sql=
'SELECT
DISTINCT AUDITRECORDID from ' + @AUDITTABLENAME + '
WHERE
(AUDITDATE > @dwo )
AND
(AUDITDATE <= @dwc )
AND
(AUDITTYPECODE = 2)
';
END
ELSE
BEGIN
--dummy sql for SSIS FMTONLY statement
set @sql='SELECT NEWID() AS AUDITRECORDID from dbo.STATEAUDIT WHERE GETDATE()=@dwo AND GETDATE()=@dwc AND NULL=1'
END
declare @r int;
exec @r=sp_executesql @sql,N'@dwo datetime,@dwc datetime',@dwo=@DATAWINDOWOPEN, @dwc=@DATAWINDOWCLOSE;
return @r;