Je souhaite mettre à jour TableA avec les valeurs de TableB tous les soirs. En ce moment, j'essaye de faire ceci avec SSIS 2005 using une tâche de manuscrit avec le SQL dedans. Chaque fois que j'essaie de faire la mise à jour de cette manière, j'obtiens une erreur de temporisation.SSIS Mettre à jour les valeurs de table à partir d'une autre table
Existe-t-il une meilleure façon de faire cela dans SSIS?
Les informations actuelles ci-dessous:
Public Sub Main()
Const Component_Name As String = "Updating TableA Data"
Const Conn_String As String = "Data Source=DB_A;Initial Catalog=TableA;Integrated Security=SSPI;"
Const sql_Emp As String = "Update TableA Set Contract = c.License_No, SEIN = convert(varchar, c.Lic_Exp_Date, 101) " _
& "From Server.DB_B.dbo.TableB c Inner Join TableA b on " _
& "rtrim(ltrim(c.business_lic)) = rtrim(ltrim(cast(b.Account_Key as varchar(14)))) " _
& "Where c.Lic_Exp_Date = (select Max(Lic_Exp_Date) From Server.DB_B.dbo.TableB " _
& "Where rtrim(ltrim(business_lic)) = rtrim(ltrim(cast(b.Account_Key as varchar(14))))) " _
& "and convert(varchar, c.Lic_Exp_Date, 101) <> convert(varchar, b.SEIN, 101)"
Dim con As SqlConnection = New SqlConnection(Conn_String)
Try
Dts.Log("Opening DB Connection: " & con.ConnectionString, 0, Nothing)
con.Open()
Dim duh As New SqlCommand(sql_Emp, con)
duh.ExecuteNonQuery()
con.Close()
Dts.Log(String.Format(Component_Name), 0, Nothing)
Dts.Events.FireInformation(0, Component_Name, String.Format("TableA Data Updating"), "", 0, True)
Dts.TaskResult = Dts.Results.Success
Catch ex As Exception
Dts.Events.FireError(0, Component_Name, ex.Message, "", 0)
Dts.Log("Exception detected: " & ex.ToString, 0, Nothing)
Dts.TaskResult = Results.Failure
End Try
End Sub
@Joel Coehoorn: WOW! Cela FUME totalement comment je le faisais !!! Vous êtes un SQL Ninja! Merci! J'apprécie aussi beaucoup les notes en bas. Vous avez non seulement mis en place avec la réponse, mais aussi m'a donné l'information pour rendre mes futures requêtes/mises à jour plus rapides en me renseignant. Vous êtes vraiment une bonne personne! – JFV
Pouvez-vous partager des temps difficiles pour les deux versions? Je suis curieux de savoir quel genre d'amélioration. –
Il a fallu environ 2 minutes et 20 secondes avec mon code d'origine. Maintenant, cela prend 3 secondes. Merci! – JFV