【发布时间】:2016-11-03 20:04:29
【问题描述】:
我使用 oledb 提供程序(SQLOLEDB 和 SQL Native OLEDB 提供程序)创建了一个示例应用程序。
案例 1:提供者 = 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");
结果:如果服务器机器上安装了证书,那么无论是否启用,连接都是安全的 Encrypt=true 和 TrustServerCertificate=true 来自连接字符串。
案例2:Provider = SQLNCLI10.1(SQL native client oledb 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");
结果:如果服务器机器上安装了证书,那么无论是否启用,连接都是安全的 Encrypt=true and TrustServerCertificate=true from in connection string.i.e 结果同上。
在这两种情况下,我的行为都相同。我在这里遗漏了什么吗? 任何建议将不胜感激?? Original question
【问题讨论】:
-
所以,一切正常。你的问题是什么?将问号附加到语句(例如“任何建议将不胜感激”)不会将其变成问题。添加更多不会改变这一点。
-
问题最后被标记为“原始问题”:) 我同时使用 SQLOLE DB 提供程序来建立 sql 连接。我想建立 SSL 连接。不知道该怎么做。我在 sql server 上安装了自签名证书并能够建立 SSL 连接,但我只希望我的 MFC 客户端使用证书并设置 SSL 连接。
-
如果安装了证书,即使正在建立 SSL 连接,我的 MFC 客户端也没有告诉建立安全连接。我只希望我的 MFC 客户端验证证书并建立 SSL 连接。
标签: sql-server winapi ssl encryption oledbconnection