ADO mit c++
-
Ich möchte per c++ auf meinen sql server 2005 express zugreifen:
connection->Open(_T("Provider=sqloledb;Data Source=sqlexpress;" "Initial Catalog=test_db;" "User Id=sa"),L"",L"",ADODB::adConnectUnspecified);
ich catche die fehlermeldung und die meint:
[DBNETLIB][ConnectionOpen (Connect()).]SQL Server existiert nicht oder Zugriff verweigert.
was mach ich falsch?
-
Tja die Fehlermeldung ist doch eindeutig
Nein aber im ernst du bist dir aber sicher das der Server läuft und das du rechte hast?
Ansonsten guck mal auf http://www.connectionstrings.com/ ob du alles richtig angegeben hast!schirrmie
-
SQL Server läuft auf jeden fall(kann mit query programm drauf zugreifen)
Ob ich Rechte hab weiß ich net, logge mich immer mit windows-authentifizierung ein (wo kann ich die Rechte vom Server vergeben?).
wenn ich einen der CONNECTION STRINGS verwenen will, kommen die als ersten Parameter in die open-Funktion?
-
Keine Ahnung obs dir was bringt, aber versuchs mal mit folgendem Connection-String:
Open("Provider=SQLNCLI;Server=127.0.0.1;Database=DeineDatenbank;DatatypeCompatibility=80;MARS Connection=True;","user","pw",ADODB::adConnectUnspecified)
-
hab es ausprobiert und bekomme nun:
Named Pipes-Provider: Es konnte keine Verbindung zu SQL Server hergestellt werden [53].
-
Rumraten nützt nichts...
'127.0.0.1' beziechnet halt keine Named Pipe ('\.\\pipe\sql' o.ä.) sondern ein TCP/IP Socket; der Transport ist standardmässig im SQL Server Manager ausgeschaltet
Der korekte String
Provider=sqloledb;Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;
steht doch dort wohin schirrmie bereits verwisesn hatte:
http://www.connectionstrings.com/?carrier=sqlserver
Serveraddress ist meisten "." oder halt das was Du im Server Manager für die Named Pipe angibst.
Glossar: SSPI = NTLM Authentification = Integrierte Authentifizierung = ...
Grüsse
*this
-
Gast++ schrieb:
Rumraten nützt nichts...
'127.0.0.1' beziechnet halt keine Named Pipe ('\.\\pipe\sql' o.ä.) sondern ein TCP/IP Socket; der Transport ist standardmässig im SQL Server Manager ausgeschaltet
Der korekte String
Provider=sqloledb;Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;
steht doch dort wohin schirrmie bereits verwisesn hatte:
http://www.connectionstrings.com/?carrier=sqlserver
Serveraddress ist meisten "." oder halt das was Du im Server Manager für die Named Pipe angibst.
Glossar: SSPI = NTLM Authentification = Integrierte Authentifizierung = ...
Grüsse
*this
Sicher??
Ich hab das bei mir nämlich auch gemacht, und bei mir hatte das geklappt. Ok, ich hab anstelle der 127er localhost IP meinen Rechnerhostnamen den ich hier im Netzwerk habe als angegeben, aber das sollte ja nix machen. Ich hatte auch nix am SQL Server verändert...
Und das was standardmäßig ausgeschaltet sein soll...verwechselst du das nicht mit dem TCP/IP Verkehr in die Außenwelt? Weil das ist nämlich standarmäßig deaktiviert, aber ansonsten müsste das gehen wenn man die lokale Adresse angibt. Ist ja bei anderen DBMS auch nicht anders. Aber ich kenn mich natürlich auch nicht wahnsinnig mit dem MSSQL Server aus...Und @didi: Also diese Meldung die du bekommen hast, die habe ich immer dann bekommen, wenn der MSSQL Server nicht gestartet war...bist dir wirklich sicher, dass der auch gestartet ist (sprich der Service MSSQL-Server)?
-
ja ist gestartet da ich ja auch über "SQL Manager 2005 for SQL Server Lite" auf den Server zugreifen kann.
connection->Open("Provider=sqloledb;Data Source=didi\SQLEXPRESS;Initial Catalog=test;Integrated Security=SSPI;","","",ADODB::adAsyncConnect);
wenn ich damit eine Verbindung herstellen möchte scheint es zu funktionieren, kann dann aber
recordset->Open("CREATE TABLE mytable (value NVARCHAR(255))", connection.GetInterfacePtr(), ADODB::adOpenForwardOnly, ADODB::adLockReadOnly, ADODB::adCmdText);
das nicht verwenden da eine asynchrone Verbindung besteht.
wenn ich aber eine synchrone Verbindung aufbauen will dann bekomme ich die Fehlermeldung: "[DBNETLIB][ConnectionOpen (Connect()).]SQL Server existiert nicht oder Zugriff verweigert."
wobei der Server existiert, ich aber keinen Zugriff habe (denk ich mal)
wie wird bei der Open-Funktion gesagt das man die Windows-Authentication nutzen will?
-
Problem gelöst:
liegt am Namen der Datenbank im String muss "didi\\sqlexpress" stehen
da denkt man sonstwas und dann liegt es an einer Grundlage