Ich habe eine Beispielanwendung mithilfe des OLE DB-Anbieters (SQLOLEDB und SQL Native OLEDB Provider) erstellt.Herstellen einer DB-Verbindung mithilfe von Microsoft OLE DB-Provider und SQL Native OLE DB-Provider
Fall 1: Provider = SQLOLEDB
hr = ::CoInitializeEx(NULL, COINIT_MULTITHREADED);
hr = cADOConnection.CreateInstance(__uuidof(Connection));
CString con_string = "provider=SQLOLEDB;server=MYPC;Database=MyDB";
CString SSlcon_string = "provider=SQLOLEDB;Encrypt=true;TrustServerCertificate=true;server=MYPC;Database=MyDB";
CString userName = "sa";
CString Password = "sa";
BSTR bsConnection = /*con_string*/SSlcon_string.AllocSysString();
BSTR uName = userName.AllocSysString();
BSTR uPassword = Password.AllocSysString();
hr = cADOConnection->Open(bsConnection, uName, uPassword, adConnectUnspecified);
printf("connection has been established");
VARIANT vaNoRecords;
memset(&vaNoRecords, 0, sizeof vaNoRecords);
CString sql = "SELECT * FROM salary";
BSTR query = sql.AllocSysString();
_RecordsetPtr rs;
rs = cADOConnection->Execute(query, &vaNoRecords, adCmdText);
printf("connection has been established\n");
Ergebnis: Wenn Zertifikat auf Server installiert wird, dann ist die Verbindung sicher ist, unabhängig davon, ermöglicht Encrypt = true und trustservercertificate = true aus in Verbindungszeichenfolge.
Fall 2: Provider = SQLNCLI10.1 (SQL Native Client OLE DB-Provider)
HRESULT hr;
hr = ::CoInitializeEx(NULL, COINIT_MULTITHREADED);
hr = cADOConnection.CreateInstance(__uuidof(Connection));
CString con_string = "provider=SQLNCLI10.1;server=MYPC;Database=MyDB";
CString SSlcon_string = "provider=SQLOLEDB;Encrypt=true;TrustServerCertificate=true;server=MYPC;Database=MyDB";
CString userName = "sa";
CString Password = "sa";
BSTR bsConnection = con_string/*SSlcon_string*/.AllocSysString();
BSTR uName = userName.AllocSysString();
BSTR uPassword = Password.AllocSysString();
hr = cADOConnection->Open(bsConnection, uName, uPassword, adConnectUnspecified);
printf("connection has been established");
VARIANT vaNoRecords;
memset(&vaNoRecords, 0, sizeof vaNoRecords);
CString sql = "SELECT suppliernumber, name1 FROM zrs_supplier";
BSTR query = sql.AllocSysString();
_RecordsetPtr rs;
rs = cADOConnection->Execute(query, &vaNoRecords, adCmdText);
printf("connection has been established\n");
Ergebnis: Wenn Zertifikat auf Server installiert wird, dann ist die Verbindung sicher ist, unabhängig davon, ermöglicht Encrypt = true und trustservercertificate = true von in Verbindung string.ie Ergebnis ist das gleiche wie oben.
In beiden Fällen bekomme ich das gleiche Verhalten.Am fehlt etwas hier ?? Irgendwelche Vorschläge würden geschätzt ?? Original question
Also, alles funktioniert gut. Was ist deine Frage? Das Anfügen von Fragezeichen an eine Anweisung (z. B. * "Jeder Vorschlag wäre erwünscht" *) macht daraus keine Frage. Das Hinzufügen von mehr wird das nicht ändern. – IInspectable
Die Frage wird am Ende als "Ursprüngliche Frage" markiert :) Ich benutze beide SQLOLE DB-Anbieter, um SQL-Verbindung zu etablieren. Ich möchte eine SSL-Verbindung herstellen. Keine Ahnung, wie das geht. Ich habe selbstsigniertes Zertifikat auf dem SQL-Server installiert und kann die SSL-Verbindung herstellen, aber ich möchte nur meinen MFC-Client verwenden, um das Zertifikat zu verwenden und die SSL-Verbindung einzurichten. –
Mein MFC-Client sagt nicht, eine sichere Verbindung herzustellen, obwohl SSL-Verbindung hergestellt wird, wenn Zertifikat installiert ist. Ich möchte nur mein MFC-Client das Zertifikat überprüfen und die SSL-Verbindung herstellen. –