Verständnisfrage Datenbank MS SQL-Server 2012

Alles rund um die Programmierung mit Qt
Antworten
dd0815
Beiträge: 37
Registriert: 8. Juni 2010 16:28

Verständnisfrage Datenbank MS SQL-Server 2012

Beitrag 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
dazedly
Beiträge: 197
Registriert: 3. Oktober 2010 15:38
Kontaktdaten:

Re: Verständnisfrage Datenbank MS SQL-Server 2012

Beitrag 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?
dd0815
Beiträge: 37
Registriert: 8. Juni 2010 16:28

Re: Verständnisfrage Datenbank MS SQL-Server 2012

Beitrag 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
Antworten