2011-09-21 56 views
0

我有这个查询下面,我从1数据库中获取某些列,然后将它们插入到另一个数据库中的另一个表中。然后我将删除我从中复制的表格。目前,需要5分36秒才能复制5300条记录。有什么方法可以提高速度吗?加速插入查询2个数据库

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 

回答

1

如果你经常进行这种类型的数据库,数据库传输的,你应该看看DTS或SSIS(取决于哪个版本的SQL Server您正在使用的)。这两种技术都是专门设计用于在不同来源和目的地之间提取,转换和加载数据。

1

如果你需要的是复制结构相同的表之间的数据,这应该工作:

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

如果需要转换数据,以及(如你的例子似乎表明),你取决于转换的复杂性,可能会也可能不会在单个语句中执行。