JEg har en dts pakke der fjerner nogle tabeller på den ene server og overføre dem igen fra en anden server...
FØR den gør det vil jeg gerne checke om et felt er blevet andret fra den ene til den anden... og i givet fald ændre noget i den ene database før jeg fortsætter med min DTS pakke...
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Jeg har haft samme problem - behov for IF THEN ELSE sætninger i DTS pakker.
Jeg har ikke kunnet finde en måde i DTS systemet, men har måttet ty til nogle forskellige fix-faxerier :
Metode 1) Laver en VBS fil, der udfører de SQL kald der skal laves og returnerer en ERRORLEVEL. Fra udførelsen af VBS filen har jeg så et ON FAILURE og et ON SUCCES WORKFLOW - den ene til det ene forløb og den anden til det andet forløb.
Der er dog de ulemper at pakken står som fejlet hvis den er kørt ad ON FAILURE sporet og det er ret besværligt at vedligholde VBS filen.
Metode 2) Laver tre pakker: En der er starten, en med det ene forløb og en med det andet forløb. I den pakke der starter det hele laver jeg så en ActiveX task med noget script det starter den ene eller den anden pakke alt efter de udførte SQL sætninger.
Der er dog den ulempe at den pakke man starter ikke står som fejlet hvis en af de kaldte pakker fejler.
Alt i alt har jeg ikke rigtig fundet den helt perfekte løsning... Så jeg er også ret nysgerrig efter hvad andre har fundet på!
Jeg har str_date i en tabel i database A og Jeg har str_date i en tabel i database B
Jeg skal sammen ligne de 2 og hvis de er ens skal den gøre opgave_AAA men hvis de ikke er ens skal den update et felt i en tabel i database A og derefter gøre opgave_AAA
Lav en linked server i den der skal kopieres fra, til den server der skal kopieres til. Så kan du via linket læse fra bla. sysobjects. Dette sker som det første. Derefter er det vel bare at rulle derudaf.
Hvem hulen har da slettet indholdet i mit tidligere svar...
hmm.. anyway! Undgå DTS det er alt for performance krævende, lav det hellere med en SP og brug SELECT * INTO efter du har droppet dit omtalte table, såfremt betingelserne er opfyldt. Brug fullyqualified names sådan... dbname.dbo.tabelname
SELECT P.* INTO dbname.dbo.tablename FROM dbname1.dbo.tablename AS P
Såfremt dine db'er ligger på 2 servere bør du måske overveje replikering og bagefter udføre ovenstående.. Eller måske konfigurere din sourceserver som data access. Eller måske bruge openrowset...
Jeg plejer bare at bruge openrowset :O) - (dovenskab)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.