ODBC SQL Server

Anfängerfragen zum Programmieren mit PureBasic.
hack24
Beiträge: 5
Registriert: 16.03.2021 21:05

ODBC SQL Server

Beitrag von hack24 »

Hallo an alle,

ich habe mal eine kurze Frage bzgl. des ODBC - Treibers in Verbindung zu einem MS SQL Server. Ichhabe in einem Programm, welches auf einem Terminalserver läuft folgende Verbindung eingetragen.

Code: Alles auswählen

Procedure.i oeffne_datenbank()
  Ergebnis = OpenDatabase(#PB_Any, "DSNEintrag", "Benutzer", "Passwort", #PB_Database_ODBC  )
  If Ergebnis = 0
    Fehler$ = DatabaseError()
    End
    ProcedureReturn 0
  EndIf
  ProcedureReturn Ergebnis
EndProcedure
Serverseitig ist schon ein System DNS Eintrag generiert worden. Kann es sein, wenn zusätzlich ein Benutzer DNS Eintrag mit denselben Namen aber falschen Zugangsdaten eingetragen ist, dass Purebasic diesen nimmt und dann die Verbindung nicht aufbauen kann?

Wenn ja, kann man diese Verbindung so gestalten, dass immer ein System DNS Eintrag genommen wird?

Viele Grüße
Uwe
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: ODBC SQL Server

Beitrag von mk-soft »

Der DSN Eintrag muss auf dem Client Rechner angelegt sein wo das Programm läuft. Benutzer und Password muss auch im Programm angegeben werden.
Für X64 Programm - C:\Windows\System\odbcad32.exe
Für X86 Programm - C:\Windows\SysWOW64\odbcad32.exe

Bei Windows ist der ODBC Treiber für MS-SQL-Server für x86 und x64 Programme immer dabei und braucht nicht nachinstalliert werden.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
hack24
Beiträge: 5
Registriert: 16.03.2021 21:05

Re: ODBC SQL Server

Beitrag von hack24 »

Hallo mk-soft,

vielen Dank für die Antwort. Prinzipiell habe ich das mit den Einstellungen der ODBC Treiber genau so verstanden.

Aber, wenn ich jetzt zwei Einstellungen habe, sowohl unter Benutzer (Bild 1) als auch unter SYSTEM (Bild2),
die genau gleich heißen, kann es sein, dass Purebasic zuerst den Eintrag im Benutzer nimmt und falls dieser falsch eingestellt ist, dann eine Fehlermeldung auswirft.

Bild
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3857
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: ODBC SQL Server

Beitrag von bobobo »

hi
ich habs hier mal getestet

odbcad32 als user und als system unterschiedliche DB mit demselben namen eingetragen

Es wird die aus dem Userkontext genommen.
Erst wenn die nicht da ist wird die aus dem SystemKontext genommen
(Die Namensvergabe solcherart sollte also besser schonmal grundsätzlich vermieden werden, wenn es geht)

wenn nun die DB im UserKontext nicht da ist , wird hier nicht versucht auf die im SystemKontext zuzugreifen
Nach einem Timeout erscheint ne Fehlermeldung.
‮pb aktuell5.7 - windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: ODBC SQL Server

Beitrag von mk-soft »

Ich nehme immer den vorinstallierten Standard Treiber "SQL Server" und nicht den "SQL Server Nativ Client"
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: ODBC SQL Server

Beitrag von RSBasic »

Wenn du gerne ohne ODBC auf MS-SQL-Datenbanken zugreifen möchtest, kannst du diese Bibliothek verwenden: viewtopic.php?f=11&t=30691
Aber da sind noch ein paar offene Verbesserungsvorschläge, die ich noch umsetzen muss. Leider aus mehreren Gründen (u.a. wegen Corona) bin ich nicht dazu gekommen. Es gibt Dinge, die sind derzeit wichtiger. (Gesundheit und Familie)
Das Projekt ist aber nicht eingestellt, sondern nur pausiert.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
hack24
Beiträge: 5
Registriert: 16.03.2021 21:05

Re: ODBC SQL Server

Beitrag von hack24 »

Hallo,

vielen Dank für die Antworten.
ch nehme immer den vorinstallierten Standard Treiber "SQL Server" und nicht den "SQL Server Nativ Client"
Was ist denn da der Unterschied zwischen den beiden Treibern? Oder hast Du bestimmte Erfahrungswerte, dass der erstgenannte Treiber besser läuft?
Wenn du gerne ohne ODBC auf MS-SQL-Datenbanken zugreifen möchtest, kannst du diese Bibliothek verwenden: viewtopic.php?f=11&t=30691
Aber da sind noch ein paar offene Verbesserungsvorschläge, die ich noch umsetzen muss. Leider aus mehreren Gründen (u.a. wegen Corona) bin ich nicht dazu gekommen. Es gibt Dinge, die sind derzeit wichtiger. (Gesundheit und Familie)
Das Projekt ist aber nicht eingestellt, sondern nur pausiert.
Dein Tool hatte ich schon mal ausprobiert und ich muss sagen; es hat bzgl. der Verbindung wirklich super funktioniert. Ich hatte nur ein Problem mit der Rückgabe als XML Format, weil ich auch mal SQL Statements auf eine Buchungsdatenbank absetze wo gerne auch mal 100.000 und mehr Datensätze zurückgeliefert werden. Diese dann in XML zu parsen und zu durchsuchen funktioniert dann leider nicht so gut, als wenn man einen Datensatz-Zeiger hat, der nur durch die Datensätze bewegt werden muss.

VG
Uwe
Antworten