|
sjesweak
Starting Member
10 Posts |
Posted - 2007-11-18 : 17:50:19
|
| Hello All -I'm having a problem with memory on my sql 2005 server. I am running a stored procedure to synchronize 2 tables. I run this procedure 1 time a day to update data for accounting because they utilize Sql Reporting Services to create reports for the data they wish to see. After running the following procedure I have to stop and start the sql services to free memory that is being utilized. After restarting the services I have 533 Mb of memory used but after the following procedure runs which has approx 400K rows of data, I have approx 1.2 Gb of memory used which never because freed.I'm pulling data from a unidata server into my sql server table that I'm replicating with it.Any thoughts.ALTER PROCEDURE dbo.StoreDistributionHistory_MK AS CREATE TABLE #tempDistributionHistory (KEY_ID varchar(50), ACCT VARCHAR(50), APPL_SOURCE NCHAR(10), CREATE_DATE DATETIME, DIST_AMT FLOAT, DIST_ID VARCHAR(20), DOC VARCHAR(20), FUNC VARCHAR(50), MAJOR_SEQ VARCHAR(20), MINOR_SEQ VARCHAR(20), PERIOD INT, TRANS_DATE DATETIME, RPS_RCPT VARCHAR(50)) CREATE TABLE #DIST_CHANGE_TABLE (TABLENAME VARCHAR(20), KEY_ID varchar(50), ACCT VARCHAR(50), APPL_SOURCE NCHAR(10), CREATE_DATE DATETIME, DIST_AMT FLOAT, DIST_ID VARCHAR(20), DOC VARCHAR(20), FUNC VARCHAR(50), MAJOR_SEQ VARCHAR(20), MINOR_SEQ VARCHAR(20), PERIOD INT, TRANS_DATE DATETIME, RPS_RCPT VARCHAR(50)) INSERT INTO #tempDistributionHistory SELECT * FROM OPENQUERY (CMISERVER, 'SELECT KEY_ID, ACCT, APPL_SOURCE, CREATE_DATE, DIST_AMT, DIST_ID, DOC, FUNC, MAJOR_SEQ, MINOR_SEQ, PERIOD_NUM, TRANS_DATE, RPS_RCPT_KEYFROM cmi.V_DIST_HIST_MK') INSERT INTO #DIST_CHANGE_TABLESELECT MIN(TABLENAME) As TABLENAME, KEY_ID , ACCT , APPL_SOURCE , CREATE_DATE, DIST_AMT , DIST_ID, DOC , FUNC , MAJOR_SEQ , MINOR_SEQ , PERIOD, TRANS_DATE , RPS_RCPTFROM( SELECT 'TABLE_SQL' AS TABLENAME, KEY_ID , ACCT , APPL_SOURCE , CREATE_DATE, DIST_AMT , DIST_ID, DOC , FUNC , MAJOR_SEQ , MINOR_SEQ , PERIOD, TRANS_DATE , RPS_RCPT FROM [tbl_Distribution-History_MK] UNION ALL SELECT 'TABLE_MK' AS TABLENAME, KEY_ID , ACCT , APPL_SOURCE , CREATE_DATE, DIST_AMT , DIST_ID, DOC , FUNC , MAJOR_SEQ , MINOR_SEQ , PERIOD, TRANS_DATE , RPS_RCPT FROM #tempDistributionHistory) tmpGROUP BY KEY_ID , ACCT , APPL_SOURCE , CREATE_DATE, DIST_AMT , DIST_ID, DOC , FUNC , MAJOR_SEQ , MINOR_SEQ , PERIOD, TRANS_DATE , RPS_RCPTHAVING COUNT(*) = 1ORDER BY KEY_IDDECLARE @TABLENAME VARCHAR(20), @KEY_ID varchar(50), @ACCT VARCHAR(50), @APPL_SOURCE NCHAR(10), @CREATE_DATE DATETIME, @DIST_AMT FLOAT, @DIST_ID VARCHAR(20), @DOC VARCHAR(20), @FUNC VARCHAR(50), @MAJOR_SEQ VARCHAR(20), @MINOR_SEQ VARCHAR(20), @PERIOD INT, @TRANS_DATE DATETIME, @RPS_RCPT VARCHAR(50)DECLARE DIST_REC CURSOR FORSELECT TABLENAME, KEY_ID , ACCT , APPL_SOURCE , CREATE_DATE, DIST_AMT , DIST_ID, DOC , FUNC , MAJOR_SEQ , MINOR_SEQ , PERIOD, TRANS_DATE , RPS_RCPTFROM #DIST_CHANGE_TABLE ORDER BY TABLENAME DESCOPEN DIST_RECFETCH NEXT FROM DIST_REC INTO @TABLENAME, @KEY_ID , @ACCT , @APPL_SOURCE , @CREATE_DATE, @DIST_AMT , @DIST_ID, @DOC , @FUNC , @MAJOR_SEQ , @MINOR_SEQ , @PERIOD, @TRANS_DATE , @RPS_RCPTWHILE @@FETCH_STATUS = 0BEGINIF @TABLENAME = 'TABLE_SQL' BEGIN DELETE FROM [tbl_Distribution-History_MK] WHERE KEY_ID = @KEY_ID ENDIF @TABLENAME = 'TABLE_MK' BEGIN INSERT INTO [tbl_Distribution-History_MK] (KEY_ID , ACCT , APPL_SOURCE , CREATE_DATE, DIST_AMT , DIST_ID, DOC , FUNC , MAJOR_SEQ , MINOR_SEQ , PERIOD, TRANS_DATE , RPS_RCPT) VALUES (@KEY_ID , @ACCT , @APPL_SOURCE , @CREATE_DATE, @DIST_AMT , @DIST_ID, @DOC , @FUNC , @MAJOR_SEQ , @MINOR_SEQ , @PERIOD, @TRANS_DATE , @RPS_RCPT) END FETCH NEXT FROM DIST_REC INTO @TABLENAME, @KEY_ID , @ACCT , @APPL_SOURCE , @CREATE_DATE, @DIST_AMT , @DIST_ID, @DOC , @FUNC , @MAJOR_SEQ , @MINOR_SEQ , @PERIOD, @TRANS_DATE , @RPS_RCPT ENDCLOSE DIST_RECDEALLOCATE DIST_RECUPDATE tbl_TableUpdateTimeSET TIME_LAST_UPDATED = GetDate()WHERE TABLE_NAME = 'DISTRIBUTION-HISTORY'DELETE #tempDistributionHistoryDELETE #DIST_CHANGE_TABLE RETURN |
|