Welcome to Sign in | Help
in Search

(ne)relationare tabele

Last post 10-27-2008, 9:13 AM by neo. 5 replies.
Sort Posts: Previous Next
  •  10-25-2008, 9:47 PM 5934

    (ne)relationare tabele

    Salut,

     

    Am si eu o intrebare in legatura cu relatiile dintr-o baza de date (pe platforma SQL 2005):

    - in baza mea de date (care are vre-o 700 de tabele), am anumite relatii intre o parte dintre tabele care nu mai exista de ceva timp (la un update al bazei de date s-au sters); motiv pentru care , datele din baza de date respectiva nu mai au consistenta care trebuie (nu se mai sterg din anumite tabele etc..).

    Exista vre-un cursor sau o alta modalitate de a rezolva problema fara a lua la mana tabelele si sa creez de mana relatiile?

    Multumesc.

     

     


    G.
  •  10-26-2008, 6:36 AM 5935 in reply to 5934

    Re: (ne)relationare tabele

    neo:

    - in baza mea de date (care are vre-o 700 de tabele), am anumite relatii intre o parte dintre tabele care nu mai exista de ceva timp (la un update al bazei de date s-au sters); motiv pentru care , datele din baza de date respectiva nu mai au consistenta care trebuie (nu se mai sterg din anumite tabele etc..).

    Exista vre-un cursor sau o alta modalitate de a rezolva problema fara a lua la mana tabelele si sa creez de mana relatiile?


    1. Daca mai ai la indemina un backup al vechii baze de date  - atunci e usor sa vezi relatiile.
    2. Daca numele coloanelor intre care sunt relatiile,in BD existenta,  au o legatura logica( cea mai usoara fiind faptul ca sunt aceleasi nume ;-) ) atunci poti reface relationind sys.columns cu ea insasi

    Din punctul meu de vedere cam astea sunt posibilitatile de refacere. Care din 2 e valabila, spune-ne ... si apoi te ajutam

    Ignat Andrei
    http://serviciipeweb.ro/iafblog
  •  10-26-2008, 11:21 AM 5937 in reply to 5934

    Re: (ne)relationare tabele

    Cat de vechi este ultimul backup?
  •  10-26-2008, 2:56 PM 5938 in reply to 5937

    Re: (ne)relationare tabele

    lucrez cu modelul de recuperare "Simple" (din pacate zic eu (desi baza e replicata dar asta tot nu schimba nuanta problemei)... si nu pot schimba solutia).

    Backup-ul full o data la 3 zile si in rest sunt diff-uri facute o data pe zi : noaptea cu un soft de back-up: care printre altele face back-up si la sql(asta e o alta problema: ca atiunci cand face back-up pune ptr cateva sec. lock de DB).

    Alte baze de date similare sunt ok si as sti cum sa le relationez pe cele care numai au relatiile intre ele: problema care am ridicat-o a fost daca se poate realiza cu un cursor sau cu o alta modalitate(eventual sa iau ca reper o baza buna care deja are relatiile existente) - dar sa nu trebuiasca sa iau la mana toate tabelele in cauza....(decat ca ultima solutie...).

    PS: problema s-a ivit in ianuarie 2008 - si respectivul care ar trebui sa o supervizeze a observat de curand, iar eu trebuie sa o rezolv.

    Multumesc


    G.
  •  10-26-2008, 11:40 PM 5939 in reply to 5938

    Re: (ne)relationare tabele

    neo:

    Backup-ul full o data la 3 zile


    Pai fa restore, afla tabelele si FK cu ceva de genul ( nu pot verifica acum, dar trebuie sa mearga)

    SELECT
        FK_Table  = FK.TABLE_NAME,
        FK_Column = CU.COLUMN_NAME,
        PK_Table  = PK.TABLE_NAME,
        PK_Column = PT.COLUMN_NAME,
        Constraint_Name = C.CONSTRAINT_NAME ,
    "ALTER TABLE " + FK.TABLE_NAME + " ADD CONSTRAINT "  +  C.CONSTRAINT_NAME + " FOREIGN KEY (" + CU.COLUMN_NAME + ")" +
    "REFERENCES " + PK.TABLE_NAME+  "(" + PT.COLUMN_NAME + ")" as SQL


    FROM
        INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C
        INNER JOIN
        INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK
            ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME
        INNER JOIN
        INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK
            ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME
        INNER JOIN
        INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU
            ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME
        INNER JOIN
        (
            SELECT
                i1.TABLE_NAME, i2.COLUMN_NAME
            FROM
                INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1
                INNER JOIN
                INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2
                ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME
                WHERE i1.CONSTRAINT_TYPE = 'PRIMARY KEY'
        ) PT
        ON PT.TABLE_NAME = PK.TABLE_NAME
    ORDER BY
        1,2,3,4

    si apoi poti sa recreezi FK  copiind coloana SQL in baza ta( atentie - fa un backup mai intii ... si incearca pe un restore..)



    Ignat Andrei
    http://serviciipeweb.ro/iafblog
  •  10-27-2008, 9:13 AM 5940 in reply to 5939

    Re: (ne)relationare tabele

    merci frumos andrei: ma uit pe cod si il testez

    multam' din nou

     


    G.
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems