BUG: SQLOLEDB Treats AutoTranslate, UseProcForPrepare and WSID as Read-Only
ID: Q240356
|
The information in this article applies to:
-
Microsoft SQL Server version 7.0
BUG #: 56357 (SQLBUG_70)
SYMPTOMS
The SQL Server 7.0 Books Online section entitled "Initialization and Authorization Properties" details several valid Provider String properties. However, the SQLOLEDB provider treats AutoTranslate, UseProcForPrepare and WSID as read-only properties when evaluating the provider string.
WORKAROUND
The specific DBPROPSET_SQLSERVERDBINIT properties must be set when calling IDBInitialize::Initialize.
- SSPROP_INIT_AUTOTRANSLATE
- SSPROP_INIT_USEPROCFORPREP
- SSPROP_INIT_WSID
The following shows a code snippet that sets the AutoTranslate property:
DBPROP propLogon[1];
DBPROP propTranslate[1];
DBPROPSET gPropSet[2];
gPropSet[0].guidPropertySet = DBPROPSET_DBINIT;
gPropSet[0].cProperties = 1;
gPropSet[0].rgProperties = propLogon;
gPropSet[1].guidPropertySet = DBPROPSET_SQLSERVERDBINIT;
gPropSet[1].cProperties = 1;
gPropSet[1].rgProperties = propTranslate;
VariantInit(&propLogon[0].vValue);
VariantInit(&propTranslate[0].vValue);
propLogon[0].dwOptions =
propTranslate[0].dwOptions = DBPROPOPTIONS_REQUIRED;
propLogon[0].colid
propTranslate[0].colid = DB_NULLID;
propLogon[0].dwPropertyID = DBPROP_INIT_PROVIDERSTRING;
propLogon[0].vValue.vt = VT_BSTR;
propLogon[0].vValue.bstrVal = SysAllocString("Server=.;Uid=sa;Pwd=;Database=pubs;");
propTranslate[0].dwPropertyID = SSPROP_INIT_AUTOTRANSLATE;
propTranslate[0].vValue.vt = VT_BOOL;
propTranslate[0].vValue.boolVal = VARIANT_FALSE;
if(SUCCEEDED(hr = pIDataInit->CreateDBInstance(clsid, NULL, CLSCTX_INPROC, NULL, IID_IDBProperties, (IUnknown **)&pIProps)))
{
if(SUCCEEDED(hr = pIProps->QueryInterface(IID_IDBInitialize, (LPVOID*)&pIDBInit)))
{
if(SUCCEEDED(hr = pIProps->SetProperties(2, gPropSet)))
STATUS
Microsoft has confirmed this to be a problem in SQL Server version 7.0.
MORE INFORMATION
If you are using ActiveX Data Objects (ADO) there is a special provider string for AutoTranslate. Use either 'Auto Translate=FALSE' or 'Auto Translate=TRUE'. ADO specifically handles Auto Translate (with a space) and sets the SSPROP_INIT_AUTOTRANSLATE property to VARIANT_TRUE or VARIANT_FALSE accordingly.
Additional query words:
Keywords : kbSQLServ700bug
Version : winnt:7.0
Platform : winnt
Issue type : kbbug