Unire due tabelle uguali recovery DB

di il
6 risposte

Unire due tabelle uguali recovery DB

Buonasera a tutti,
avrei bisogno di un vostro prezioso aiuto.
Un mio cliente ha perso i dati del suo DB ed ho ripristinato l'unico backup che avevamo.
Nel frattempo il cliente ha continuato a lavorare scrivendo su un nuovo DB.
Adesso devo unire i due DB (OPServerDB1 e OPServerDB2) ed ho utilizzato una INSERT INTO
Tutto funziona ma mi restituisce un errore perchè la colonna PatientInfoTS è un timestamp e mi dice che non posso copiarla.
Attualmente ho i backup dei due db separati (.bak) e se li importo singolarmente i dati ci sono tutti non riesco ad unirli.
Senza la colonna di cui sopra, il programma non vede piu le "date" inserite al momento della visita al paziente e quindi non aggancia eventuali foto, doc, etc....

Ho provato a modificare la colonna da TIMESTAMP a DATATIME in entrambe le tabelle ma non importa nulla.
A questo punto ho pensato di creare a limite una relazione tra le due tabelle, ma è solo teoria e non so se potrebbe funzionare, tipo una UNION o INNER JOIN.

Sotto la query di insert che ho usato.

Vi chiedo una mano, Grazie anticipatamente


USE [OPServerDB]
GO

INSERT INTO [dbo].[PatientInfo]
([PatientNameGroup1]
,[PatientNameGroup2]
,[PatientNameGroup3]
,[PatientID]
,[PatientBirthDate]
,[PatientSex]
,[EthnicGroup]
,[PatientComment]
,[PatientInfoTS]
,[PatientFileInfo]
,[PatientAdditionalInfo]
,[PatientDisease])
SELECT
[PatientNameGroup1]
,[PatientNameGroup2]
,[PatientNameGroup3]
,[PatientID]
,[PatientBirthDate]
,[PatientSex]
,[EthnicGroup]
,[PatientComment]
,[PatientInfoTS]
,[PatientFileInfo]
,[PatientAdditionalInfo]
,[PatientDisease]
FROM OPServerDB2.[dbo].[PatientInfo]
GO

6 Risposte

  • Re: Unire due tabelle uguali recovery DB

    Viene da pensare che sia una colonna calcolata o una mancanza di permessi;

    riporta l'errore completo e lo script di creazione della tabella;
  • Re: Unire due tabelle uguali recovery DB

    Il progetto del db è manifestamente sbagliato ma vabbè.

    Io farei una view con un Join o addirittura union (secondo i casi) e poi la materializzerei (cioè la trasformerei in una tabella vera)
  • Re: Unire due tabelle uguali recovery DB

    sspintux ha scritto:


    Viene da pensare che sia una colonna calcolata o una mancanza di permessi;

    riporta l'errore completo e lo script di creazione della tabella;
    Mi verrebbe da dire che da qualche parte è la FK di altre tabelle.
    Magari con cose strane tipo un trigger per la cascade delete o chi lo sa.

    Che dunque andrebbero rilassati tutti i vincoli e poi rimetterli.
  • Re: Unire due tabelle uguali recovery DB

    Salve,

    lionheart78 ha scritto:


    ...
    Tutto funziona ma mi restituisce un errore perchè la colonna PatientInfoTS è un timestamp e mi dice che non posso copiarla.
    ...
    Ho provato a modificare la colonna da TIMESTAMP a DATATIME in entrambe le tabelle ma non importa nulla.
    prima di andare avanti, vorrei chiedere se per timestamp tu intendi il "tradizionale" valore inteso in molti DBMS, cioe' effettivamente un datetime, o se e' veramente un "timestamp", quello che ora SQL Server per "uniformarsi" agli altri DBMS ora ha rinominato "rowversion"... per capirci meglio, https://docs.microsoft.com/en-us/sql/t-sql/data-types/rowversion-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15
    il "vecchio" timestamp/rowversion, come vedi, NON e' una valorizzazione che e' legata ad una data, ma una valorizzazione automaticamente generata dal db engine al momento della variazione/inserimento di una riga, e ovviamente non e' imputabile programmaticamente...

    quella tipologia di dato viene esclusivamente utilizzato per la gestione della concorrenza ottimistica.

    mi fa pero' specie quanto dici relativamente a
    
    Senza la colonna di cui sopra, il programma non vede piu le "date" inserite al momento della visita al paziente e quindi non aggancia eventuali foto, doc, etc....
    
    che non ha comunque molto senso in quanto questa tabella anagrafica non puo' usare quella tipologia di colonna per eventuali join, che non avrebbe molto senso in assoluto

    stiamo parlando della stessa cosa??

    salutoni romagnoli
    --
    Andrea
  • Re: Unire due tabelle uguali recovery DB

    +m2+ ha scritto:


    ...
    Che dunque andrebbero rilassati tutti i vincoli e poi rimetterli.
    fossi al suo posto prima di tutto vorrei capire qual'è il problema;
    vediamo se posta errore dettagliato e struttura tabella ...
  • Re: Unire due tabelle uguali recovery DB

    Concordo sul messaggio di errore completo.
    Riguardo a uso del campo per join tutto è possibile, magari con una FK composta da codice paziente giustapposto al TS (se ne vedono di ogni) per distinguere più visite in tempi diversi
Devi accedere o registrarti per scrivere nel forum
6 risposte