sql >> Database teknologi >  >> RDS >> Database

Fejlfindingstabel ikke fundet Fejl

For nylig har en af ​​vores kunder oplevet problemer, da han forsøgte at indsætte nogle Oracle®-data i en SQL Server-tabel. Indsættelsen mislykkedes, fordi måltabellen i SQL Server-instansen ikke var til stede i databasen, som kunden oprettede forbindelse til.

I sidste ende var løsningen på dette problem den enkleste. Denne fejlfinding inkluderer denne løsning og andre i et forsøg på at præsentere en liste over potentielle rettelser til problemet i logisk rækkefølge. Selvom fejlfindingen er baseret på en Easysoft ODBC-driver, der bruger SQL Server som sin måldatabase, er mange af trinene gældende for andre unixODBC-baserede drivere til andre databaser.

  1. Tjek din datakilde (DSN) for din måldatabase.

    Dette vil normalt være defineret i /etc/odbc.ini.

    Vigtigt Omgå ikke disse trin, bare fordi din DSN er en kopi fra en fungerende opsætning på en anden maskine. Især hvis den arbejdsopsætning er på en anden platform og/eller bruger en anden version af driveren. Forskellige versioner af en ODBC-driver kan parse odbc.ini-filen forskelligt, for eksempel kan nogle bruge den sidste version af en DSN- eller DSN-attribut, de finder, når der er dubletter, nogle kan bruge den sidste. Derudover kan en anden driver på en anden platform ophøre med at analysere odbc.ini-filen, hvis der er et problemtegn i filen, såsom en vognretur.

    • Tjek, at der kun er én kopi af datakilden. Hvis der er flere versioner af datakilden, skal du enten omdøbe dem eller fjerne andre versioner. Dvs., du vil have dette:
      [MYDSN]
      Database=MYDB
      

      —Eller—

      [MYDSN1]
      Database=MYDB1
      
      [MYDSN2]
      Database=MYDB2
      

      Ikke

      [MYDSN]
      Database=MYDB
      
      [MYDSN]
      Database=MYDB
      
    • Når du er sikker på, at du kun har én kopi af DSN, skal du kontrollere, at DSN kun har en linje, der angiver måldatabasen. Dvs., du vil have dette:
      [MYDSN]
      Database=MYDB
      Server=MYMACHINE
      .
      .
      .
      [ANOTHERDSN]
      

      Ikke

      [MYDSN]
      Database=MYDB
      Server=MYMACHINE
      Database=MYDB2
      .
      .
      .
      [ANOTHERDSN]
      

      —Eller—

      [MYDSN]
      Database=MYDB
      Server=MYMACHINE
      Database=
      .
      .
      .
      [ANOTHERDSN]
      
  2. Hvis du ikke udtrykkeligt angiver en database, så tjek med din DBA, at standarddatabasen for din bruger er den, du tror, ​​den er. For eksempel er det i SQL Server muligt at konfigurere et login til at oprette forbindelse til en bestemt database, så i:
    [MYDSN]
    Database=MYDB
    Server=MYMACHINE
    User=MYUSER.
    .
    .
    [ANOTHERDSN]
    

    MYUSER kan i begyndelsen oprette forbindelse for at sige AdventureWorks, hvis login er blevet konfigureret til en bestemt database, eller masterdatabasen, hvis det ikke er tilfældet.

  3. Tjek, at du opretter forbindelse til det DSN, du tror, ​​du er. Selvom du har tilføjet dit DSN til en allerede eksisterende version af f.eks. /etc/odbc.ini, betyder det ikke, at din drivermanager kigger i denne fil. Afhængigt af hvordan drivermanageren er bygget op, eller miljøet er indstillet, kan det se ud på et andet sted. For at kontrollere det, prøv at kommentere Driver-attributten i datakilden. Hvis du stadig kan oprette forbindelse, bruger du en anden version af DSN. Brug et program som f.eks. strace eller truss til at finde ud af, hvilken odbc.ini-fil der bruges. For eksempel:
    $ more /etc/odbc.ini
    [MYDSN]
    #Driver=Easysoft ODBC-SQL Server
    $ /usr/local/easysoft/unixODBC/bin/isql.sh -v MYDSN
    SQL>
    $ strace -o -f /tmp/odbc.log /usr/local/easysoft/unixODBC/bin/isql.sh -v MYDSN
    $ grep odbc.ini /tmp/odbc.log
    

    Hvis du har kopieret et DSN over fra en anden maskine, så prøv at gentage denne proces på den maskine for at bekræfte placeringen af ​​kilde-DSN.

  4. Tjek, at du opretter forbindelse til det DBMS, du tror, ​​du er. For eksempel, hvis det ikke er for forstyrrende, prøv at sætte på pause/stoppe målforekomsten/tjenesten for DBMS. Hvis du stadig kan oprette forbindelse, opretter du forbindelse til et DBMS på en anden maskine. Måske er dit netværk blevet konfigureret sådan, at en anden maskine kan se ud til at have den samme IP-adresse som den, der er angivet i DSN.
  5. Indtast "hjælp" i isql. Hvilket databasenavn vises på listen over returnerede tabeller? Er det den du forventer? Hvis ikke, hvad sker der, hvis du skriver:
    use database
    

    Erstat database med navnet på måldatabasen. Hvis du ikke kan ændre database, så tjek med din DBA, om der er en logon-trigger, der styrer adgangen til databaser efter IP-adresse. I SQL Server Management Studio er logon-triggere under INSTANCE> Serverobjekter> Triggere.


  1. Sådan vises en dato i tysk format i SQL Server (T-SQL)

  2. SQLiteConstraintException-fejl vises efter start af hver aktivitet

  3. Indstilling af Active Data Guard Physical Standby i RAC One Node Architecture – Del 2

  4. Ret "FEJL 1136 (21S01):Kolonneantal stemmer ikke overens med værdiantallet i række 2", når du bruger VALUES Statement i MySQL