FIX: Enterprise Manager May Cause Access Violation When You Edit a DTS Package with Long User Name (294956)



The information in this article applies to:

  • Microsoft SQL Server 2000 (all editions)

This article was previously published under Q294956
BUG #: 353109 (SHILOH_BUGS)

SYMPTOMS

When you edit Data Transformation Services (DTS) package properties by using the SQL Server Enterprise Manager, and you specify SQL Server Authentication for logging package execution, setting a user name larger than 16 K allows the package properties to be saved but generates the following error message:
SQL Enterprise Manager :mmc.exe Application error
The instruction at <hex_address> referenced memory at <hex_address>.
The memory could not be "read".
				

RESOLUTION

To resolve this problem, obtain the latest service pack for SQL Server 2000. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

290211 INF: How to Obtain the Latest SQL Server 2000 Service Pack

WORKAROUND

To work around this problem you can either:
  • Avoid the use of user names that are larger than 16 K for logging package execution to SQL Server for DTS packages.

    -or-

  • Use Windows Authentication instead of SQL Server Authentication.

STATUS

Microsoft has confirmed that this is a problem in SQL Server 2000. This problem was first corrected in SQL Server 2000 Service Pack 1.

MORE INFORMATION

This only happens when you enter a very long string (greater than 16 K) as the user name. A user name that is smaller than 16 K does not cause the error message and allows you to save the package.

Steps to Reproduce Behavior

  1. Open SQL Enterprise Manager. Expand the Data Transformation Services folder. Select a DTS package, right-click the DTS package name, and then click Design Package.
  2. On the Package menu item, click Properties. This opens a window in which you can edit the properties of the selected DTS package.
  3. Under the Logging tab, select SQL Server Authentication.
  4. Type a large string (greater than 16 K) for the user name.
  5. Click OK. An error message displays that states that the user could not be authenticated followed by the error message shown in the "Symptoms" section.
Use the following SQL-DMO code to reproduce this bug by using Microsoft Visual Basic:
Set oSQLServer = CreateObject( "SQLDMO.SQLServer" )
On Error resume next
userName = String(65000, "X")
WScript.Echo "Connect this user: " + userName
oSQLServer.Connect ".", userName, ""
if Err.number = 0 then
   WScript.Echo "Connection succeeded" 'this will never happen (except when there is a valid "XXX...XX" user name)
   oSQLServer.DisConnect
else
   WScript.Echo "Connect FAILED but the test passed"
end if
				
After the error occurs, when you step through the preceding code from the debugger here is the top of the stack:
NTDLL! 77fca2bf()
OperatorNewDbg(unsigned int 352) line 298 + 22 bytes
operator new(unsigned int 352) line 27 + 12 bytes
CDynString::iCheckRealloc(int 176) line 446 + 11 bytes
CDynString::Add(const unsigned short * 0x02bb2cc8, int 47) line 412
CDynString::Set(const unsigned short * 0x02bb2cc8, int 0) line 388
CDynString::CDynString(const unsigned short * 0x02bb2cc8, int 0, int 128) line 78
CSqlString::CSqlString(const unsigned short * 0x02bb2cc8, int 0, int 128) line 68 + 27 bytes
FillExcepInfo(unsigned short 3, unsigned int 0, const unsigned short * 0x02bb2cc8, long 0, int 0, const unsigned short * 0x00000000) line 1394 + 72 bytes
FillExcepInfo(unsigned int 2147483651) line 1351 + 22 bytes
CSQLServer::PingSQLServerVersion(CSQLServer * const 0x02bba00c, SQLDMO_SQL_VER * 0x00069d14, const unsigned short * 0x0200903c, const unsigned short * 0x01ff7af4, const unsigned short * 0x020093cc) line 3876 + 11 bytes
CDTSPackageLoggingPage::isVersionOK(int 0) line 8830 + 49 bytes
CDTSPackageLoggingPage::UpdateInfo() line 8913 + 10 bytes
CDTSPackageLoggingPage::OnApply() line 8766 + 26 bytes
CPropertyPage::OnNotify(unsigned int 0, long 434008, long * 0x00069dbc) line 2170 + 11 bytes
SFCWndProc(HWND__ * 0x001005bc, unsigned int 78, unsigned int 0, long 434008) line 51
USER32! 77e148dc()
USER32! 77e2c187()
				

Modification Type:MajorLast Reviewed:11/5/2003
Keywords:kbBug kbfix kbSQLServ2000sp1fix KB294956