FIX: Perdita di memoria nel provider SQLOLEDB MDAC SERVERDATAONINSERT e dimensioni di colonne non superiori A 255

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 302995
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
Sintomi
Una perdita di memoria in Provider Microsoft OLE DB per SQL Server (SQLOLEDB) con SERVERDATAONINSERT quando le dimensioni di colonna sono superiori a 255.
Risoluzione
Per risolvere il problema, ottenere il service pack più recente per Microsoft MDAC 2.5. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
293312INFORMAZIONI: Come ottenere il più recente MDAC 2.5 Service Pack
Si potrebbe risolvere il problema ottenere il service pack più recente per SQL Server 2000, il service pack più recente per MDAC 2.6 o la correzione citata sotto. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
290211INF: Come ottenere il Service Pack più recente per SQL Server 2000
Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
300635INFORMAZIONI: Come ottenere il più recente MDAC 2.6 Service Pack

Hotfix

MDAC 2.5

La versione inglese di questa correzione deve essere di avere i seguenti attributi di file o versioni successive:
   Date         Version    Size           File name     Platform   -------------------------------------------------------------   04-Jun-2001  7.1.9.99   545,040 bytes  Sqloledb.dll  x86				
MDAC 2.6

La versione inglese di questa correzione deve essere di avere i seguenti attributi di file o versioni successive:
   Date          Version        Size           File name     Platform   ------------------------------------------------------------------   11-Jun-2001   2000.80.301.0  491,584 bytes  Sqloledb.dll  x86   11-Jun-2001   2000.80.301.0   61,440 bytes  Sqloledb.dll  x86				

Status
Microsoft ha confermato che questo problema riguarda i prodotti Microsoft elencati all'inizio di questo articolo. Questo problema è stato innanzitutto corretto in Microsoft MDAC 2.5 Service Pack 3.Questo problema è stato innanzitutto corretto in SQL Server 2000 Service Pack 2 e Service Pack 2 per MDAC 2.6.
Informazioni

Procedura per riprodurre il problema

  1. In Microsoft SQL Server 2000, creare tabelle seguenti:
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[STATEMIN1]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[STATEMIN1]<BR/>GOCREATE TABLE [dbo].[STATEMIN1] (	[messagekey] [int] IDENTITY (1, 1) NOT NULL ,	[message] [varchar] (2000) NOT NULL ) ON [PRIMARY]GOALTER TABLE [dbo].[STATEMIN1] WITH NOCHECK ADD 	CONSTRAINT [PK_STATEMIN1] PRIMARY KEY  CLUSTERED 	(		[messagekey]	)  ON [PRIMARY] GO					
  2. Incollare il codice riportato di seguito in un'applicazione console di Microsoft Visual c ++ e quindi compilare il codice.

    Nota : È necessario modificare il nome origine dati, la ID utente e la password.
    #include <afx.h>#include <assert.h>#include <iostream>#include <atldbcli.h>#include <objbase.h>const ULONG nInitProps = 4;const ULONG nPropSet = 1;const ULONG nParams = 3; //Number of parameters in the commandconst ULONG nProps = 5;struct StateIn	{	UINT uiMessageKey;	TCHAR pszMessage[257];};int main(void){   	CCommand<CManualAccessor,CRowset,CNoMultipleResults> rs;	CDataSource m_connect;	CSession m_session;		DBPROP    InitProperties[nProps];	DBPROPSET   rgInitPropSet;	USES_CONVERSION;	HRESULT   hr;	hr = CoInitialize(NULL);	for (ULONG i = 0; i < nProps; i++ )	{		VariantInit(&InitProperties[i].vValue);		InitProperties[i].dwOptions = DBPROPOPTIONS_REQUIRED;		InitProperties[i].colid = DB_NULLID;	}	InitProperties[0].dwPropertyID = DBPROP_INIT_PROMPT;	InitProperties[0].vValue.vt = VT_I2;	InitProperties[0].vValue.iVal = DBPROMPT_NOPROMPT;	InitProperties[1].dwPropertyID = DBPROP_INIT_DATASOURCE;	InitProperties[1].vValue.vt = VT_BSTR;	InitProperties[1].vValue.bstrVal =          SysAllocString(OLESTR("servername"));                            // Server Name	InitProperties[2].dwPropertyID = DBPROP_INIT_CATALOG;	InitProperties[2].vValue.vt = VT_BSTR;	InitProperties[2].vValue.bstrVal = SysAllocString(L"database");    // Database Name	InitProperties[2].dwOptions = DBPROPOPTIONS_REQUIRED;	InitProperties[2].colid = DB_NULLID;	InitProperties[3].dwPropertyID = DBPROP_AUTH_USERID;	InitProperties[3].vValue.vt = VT_BSTR;	InitProperties[3].vValue.bstrVal = SysAllocString(OLESTR("sa"));    // User Id.	InitProperties[4].dwPropertyID = DBPROP_AUTH_PASSWORD;	InitProperties[4].vValue.vt = VT_BSTR;	InitProperties[4].vValue.bstrVal = SysAllocString(OLESTR(""));      // Password		rgInitPropSet.guidPropertySet = DBPROPSET_DBINIT;	rgInitPropSet.cProperties = nProps;	rgInitPropSet.rgProperties = InitProperties;	char szProgID[100] = {0};	strcpy(szProgID,"SQLOLEDB");	CLSID clsid;	WCHAR   wszProgId[100] = {0};	MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szProgID, -1,   wszProgId, 100);	hr = CLSIDFromProgID(wszProgId, &clsid);	hr = m_connect.Open(clsid,&rgInitPropSet);	hr = m_session.Open(m_connect);	SysFreeString(InitProperties[1].vValue.bstrVal);	SysFreeString(InitProperties[2].vValue.bstrVal);	SysFreeString(InitProperties[3].vValue.bstrVal);	SysFreeString(InitProperties[4].vValue.bstrVal);	DWORD dwStatus;	dwStatus = DBSTATUS_S_IGNORE;	CDBPropSet propset(DBPROPSET_ROWSET);	propset.AddProperty(DBPROP_IRowsetChange, true);	propset.AddProperty(DBPROP_IRowsetUpdate, false);	propset.AddProperty(DBPROP_UPDATABILITY,		DBPROPVAL_UP_INSERT | DBPROPVAL_UP_DELETE);	propset.AddProperty(DBPROP_SERVERDATAONINSERT,true);	StateIn rowValue_StateIn;	rs.CreateAccessor(2, &rowValue_StateIn, sizeof(rowValue_StateIn));	rs.AddBindEntry(1, DBTYPE_I4,sizeof(rowValue_StateIn.uiMessageKey),           &rowValue_StateIn.uiMessageKey,NULL,&dwStatus);	rs.AddBindEntry(2, DBTYPE_STR, sizeof(rowValue_StateIn.pszMessage),          &rowValue_StateIn.pszMessage,NULL);	TCHAR * m_strQuery = _T("select * from statemin1");	hr = rs.Create(m_session,m_strQuery);	hr = rs.Open(&propset);		dwStatus = DBSTATUS_S_IGNORE;	TCHAR szInsStr[50];	strcpy(szInsStr,"test1");	strcpy(rowValue_StateIn.pszMessage, szInsStr);	hr = rs.Insert(0,1);	for(int j = 0;j < 20000;j++)	{			strcpy(rowValue_StateIn.pszMessage, szInsStr);		hr = rs.Insert(0,1);	}   	return S_OK;}					
  3. Avviare Performance Monitor e controllare il contatore Byte privati per il processo mentre si esegue il codice.
Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
301953SQLOLEDB: Unenlisting da Transaction Active da SQL Server 7.0 causa blocco e interruzione svuotamento

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 302995 - Ultima revisione: 02/26/2014 20:53:13 - Revisione: 4.1

Microsoft Data Access Components 2.1, Microsoft Data Access Components 2.1 Service Pack 2, Microsoft Data Access Components 2.1 Service Pack 1, Microsoft Data Access Components 2.1 Service Pack 2, Microsoft Data Access Components 2.5, Microsoft Data Access Components 2.5 Service Pack 1, Microsoft Data Access Components 2.5 Service Pack 2, Microsoft Data Access Components 2.6

  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbmdac250sp3fix kbbug kbfix kbmdac260sp2fix kbsqlserv2000presp2fix KB302995 KbMtit
Feedback