Seite 1 von 1

Verständnisfrage Datenbank MS SQL-Server 2012

Verfasst: 11. Dezember 2013 10:57
von dd0815
Hallo zusammen,

ich habe eine Verständnisfrage beim Zugriff auf die Datenbank (MS SQL-Server 2012, Qt5.1.1, Win7 prof.). Folgender Code dient zum Verbinden mit dem DB-Server :

Code: Alles auswählen

    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    //db.setHostName("servertest");
    db.setDatabaseName("servertest");
    db.setUserName("xxx");
    db.setPassword("yyy");
    ok = db.open();
Unter Systemsteuerung > Verwaltung > Datenquellen (ODBC) habe ich eine Systemdatenquelle namens servertest eingerichtet (dortiger Test war erfolgreich). db.open funktioniert nur, wenn ich servertest als DatabaseName benutze, nicht als HostName. Als Hostname kommt die Fehlermeldung (Fehler Datenbank öffnen: "[Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde kein Standardtreiber angegeben QODBC3: Unable to connect" ). Wieso? ... Somit arbeite ich auf keiner konkreten Datenbank auf dem Server (Master?, der zuletzt benutzten?). Wenn ich die SQL-Befehle dann gemäß des Benennungssyntaxes ( (Server.)Database.DatabaseSchema.DatabaseObject) ausführe, funktionieren sie auch:

Code: Alles auswählen

    query = QString("CREATE TABLE produktion..jobs (jobID int, jobName varchar(64) )");
    ok = q.exec(query);
    if (!ok) qDebug() << "Fehler Tabelle erstellen" << q.lastError().text();
cu,
dd0815

Re: Verständnisfrage Datenbank MS SQL-Server 2012

Verfasst: 11. Dezember 2013 11:09
von dazedly
Nur um sicher zu gehen. Der Hostname ist die der DNS Name des Datenbankservers. In setHostName kommt folglich die IP Adresse, oder der DNS Name des Servers. Ist "servertest" auch der Hostname der Maschine, oder nur der Name deiner Datenbank?

Re: Verständnisfrage Datenbank MS SQL-Server 2012

Verfasst: 11. Dezember 2013 11:38
von dd0815
Hallo dazedly,

der DSN-Name (nicht DNS) des Datenbankservers heißt "servertest". Wie im Quelltext zu sehen ist, lasse ich das SetHostName frei, d.h. keine IP, nichts... Der Hostname der Maschine ist ein völlig anderer ("SRMS506\SQLEXPRESS"), den ich dann in den ODBC-Datenquellen angegeben habe. Meine Datenbank selbst heißt "produktion", siehe unteren Quelltext...

dd0815