Jeg har to databaser, strukturerne er helt ens. Den ene indenholder en masse data som jeg gerne vil have over i den anden, ud fra nogen kriterier. Det virker også fint når jeg siger
INSERT INTO [DB9].[dbo].[tabel1] SELECT TOP 10 * FROM [DB10].[dbo].[tabel1] WHERE KundeGruppe='gruppenavn'
Men jeg vil gerne have flere kriterier på således at, at når der indsættes en ny Kunde i DB10, og jeg kører sql'en så skal kun de nye kunder med over i DB9 (så jeg undgår dupletter). Jeg overvejede noget i denne stil men det virker ikke: INSERT INTO [DB9].[dbo].[tabel1] SELECT * FROM [DB10].[dbo].[tabel1] WHERE KundeGruppe='gruppenavn' AND [DB9].[dbo].[tabel1].Kunde_id <> DB10].[dbo].[tabel1].Kunde_id
INSERT INTO [DB9].[dbo].[tabel1] SELECT * FROM [DB10].[dbo].[tabel1] WHERE KundeGruppe='gruppenavn' AND [DB9].[dbo].[tabel1].Kunde_id > (SELECT MAX(kunde_id) FROM [DB10].[dbo].[tabel1].Kunde_id)
Hvis du ikke skal bruge updates eller deletes, og du samtidigt ikke har et særligt behov for netop at anvende replikering udover til do., så tror jeg måske, jeg ville vælge en normal insert som den du selv har lavet.
Den du har lavet her: INSERT INTO [DB9].[dbo].[tabel1] SELECT * FROM [DB10].[dbo].[tabel1] WHERE KundeGruppe='gruppenavn' AND [DB9].[dbo].[tabel1].Kunde_id > (SELECT MAX(kunde_id) FROM [DB10].[dbo].[tabel1].Kunde_id)
Den overholder kravet og er samtidig simpel - ingen grund til at komplicerer det yderligere. K.I.S.S. :)
Du kan måske opnå en bedre performance og mulighed for logging vha.
declare @max_kundeID int declare @rows int declare @msg varchar(25)
SELECT @max_kundeID = MAX(kunde_id) FROM [DB10].[dbo].[tabel1].Kunde_id
INSERT INTO [DB9].[dbo].[tabel1] SELECT * FROM [DB10].[dbo].[tabel1] WHERE KundeGruppe='gruppenavn' AND [DB9].[dbo].[tabel1].Kunde_id > @max_kundeID set @rows = @@rowcount
Herefter kan du så logge @max_kundeID evt. i din egen tabel, en eller anden logtabel med datetime, så har man styr på hvornår det kører. Ellers kan du jo smide en logwrite ud til SQL's egen
RAISERROR('Hurra.. I transferred : %d rows', 16, 1, @rows) WITH LOG
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.