use work_TC_Digma; Declare @Instruction as varchar(MAX) declare @DateB as varchar(MAX); set @DateB='4012-01-01 00:00:00.000' Declare TablesAndFields cursor for SELECT objects.name as Tablename, isnull(objects1.name,'') as Tablename1, columns.name as columnname FROM dbo.sysobjects as objects left join dbo.syscolumns as columns on objects.id = columns.id Left join dbo.sysobjects as objects1 on objects1.name like objects.name+'%' where objects.xtype = 'U' and columns.xtype = 61 and (columns.name='_Period' or columns.name='_Date_Time') order by objects.name, objects1.name desc open TablesAndFields Declare @TableName as varchar(100) Declare @TableName1 as varchar(100) Declare @ColumnName as varchar(100) FETCH NEXT FROM TablesAndFields into @TableName, @TableName1, @ColumnName WHILE @@FETCH_STATUS = 0 BEGIN IF @TableName1 =@TableName set @Instruction = 'delete '+@TableName+' where '+@ColumnName+'<'''+@DateB+'''' ELSE set @Instruction = 'delete '+@TableName1 +' where ' + @TableName+'_IDRRef in (select _IDRRef from '+@TableName+' where '+@ColumnName+'<'''+@DateB+''')' print @Instruction EXEC(@Instruction) FETCH NEXT FROM TablesAndFields into @TableName,@TableName1, @ColumnName END close TablesAndFields deallocate TablesAndFields
Monday, March 12, 2012
Удаление устаревших данных с 1С за определенный период
Иногда просят почистить базу 1С за определенный период, стандартными методами это долгий и хлопотный процесс, используя же mssql получаем быстро и комфортно.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment