Acelerando la consulta de inserción en 2 bases de datos

Tengo esta consulta debajo de la cual estoy obteniendo ciertas columnas de 1 database y luego las estoy insertando en otra tabla en otra database. Luego borraré la tabla de la que estoy copyndo. Por el momento, demora 5 minutos y 36 segundos para copyr un poco más de 5300 loggings. ¿Hay alguna manera de que pueda mejorar la velocidad?

Declare @cursor cursor, @Firstname nchar(50), @MiddleInitial nchar(5), @Surname nchar(50), @EmailAddress nchar(100), @DOB nchar(8), @Sex char(1), @altEmail nchar(100) set @cursor = cursor for select Firstname, MiddleInitial, Surname, HomeEmailAddress, DateOfBirth, Sex, WorkEmailAddress from cs_clients open @cursor fetch next from @cursor into @FirstName, @MiddleInitial, @Surname, @EmailAddress, @DOB, @Sex, @altEmail while @@fetch_status = 0 begin set nocount on use hrwb_3_0 declare @Password nvarchar(100), @EncryptedText nvarchar(100) exec L_Password_GetRandomPassword @Password output, @EncryptedText output declare @userID nvarchar(100) exec L_Password_GetRandomPassword @userID output, @EncryptedText output set nocount off set @EmailAddress = isnull(@EmailAddress, @altEmail) insert into A_User values ('CS', 'CLUBSAIL', rtrim(@userID), rtrim(@Password), rtrim(@Surname), rtrim(@FirstName), rtrim(@MiddleInitial), 15, 'NA', 'NA', '', rtrim(@EmailAddress), rtrim(@DOB), 1, 0, 1, 0, '', rtrim(@Sex), '') fetch next from @cursor into @FirstName, @MiddleInitial, @Surname, @EmailAddress, @DOB, @Sex, @altEmail end 

Es lento porque los estás haciendo uno a la vez.

Vea aquí algunos methods para hacer varias filas a la vez: http://blog.sqlauthority.com/2008/07/02/sql-server-2008-insert-multiple-records-using-one-insert-statement-use- de-fila-constructor /

O bien, cree una tabla temporal en la database local y luego utilícela para insert todo a la vez (es decir, en una statement).

Si realiza con regularidad este tipo de database para la transferencia de bases de datos, probablemente debería considerar DTS o SSIS (dependiendo de la versión de SQL Server que esté utilizando). Ambas tecnologías están específicamente diseñadas para extraer, transformar y cargar datos entre diferentes fonts y destinos.

Si todo lo que necesita es copyr los datos entre las tablas con la misma estructura, esto debería funcionar:

 INSERT INTO Database2.dbo.Table2 SELECT * FROM Database1.dbo.Table1 

Si necesita transformar los datos también (como su ejemplo parece indicar), puede o no ser capaz de hacerlo en una sola statement, dependiendo de la complejidad de la transformación.