• How is this?

    Can you see how it could be Improved?

    DECLARE @NextIDs TABLE(UniqueID int primary key)

    DECLARE @ThreeYearsAgo datetime

    SELECT @ThreeYearsAgo = DATEADD(d, -(3 * 365), GetDate())

    WHILE EXISTS(SELECT 1 FROM [ISAdminDB].[dbo].[MyTable] WHERE [MyTable].[DateTime] < @ThreeYearsAgo)

    BEGIN

    BEGIN TRAN

    INSERT INTO @NextIDs(UniqueID)

    SELECT TOP 1000 UniqueID FROM [ISAdminDB].[dbo].[MyTable] WHERE [MyTable].[DateTime] < @ThreeYearsAgo

    INSERT INTO [ISArchive].[dbo].[MyTable] (<Fields>)

    SELECT (<Fields>)

    FROM [ISAdminDB].[dbo].[MyTable] AS a

    INNER JOIN @NextIDs AS b ON a.UniqueID = b.UniqueID

    DELETE [ISAdminDB].[dbo].[MyTable]

    FROM [ISAdminDB].[dbo].[MyTable]

    INNER JOIN @NextIDs AS b ON a.UniqueID = b.UniqueID

    DELETE FROM @NextIDs

    COMMIT TRAN

    END

    For better, quicker answers on T-SQL questions, click on the following...
    http://www.sqlservercentral.com/articles/Best+Practices/61537/

    For better answers on performance questions, click on the following...
    http://www.sqlservercentral.com/articles/SQLServerCentral/66909/