Microsoft KB Archive/249119
Article ID: 249119
Article Last Modified on 3/14/2006
- Microsoft SQL Server 7.0 Standard Edition
This article was previously published under Q249119
BUG #: 56117 (SQLBUG_70)
If all of the following conditions are true, executing a Transact-SQL BULK INSERT may cause the SQL Server to stop responding or cause a stack overflow or access violation (AV):
- A table has an int data type field and some other data type fields. At least one field follows the int data type field.
- A format file is used.
- The field is defined as the fixed data length in the format file.
- Only the space character is in the data file.
If SQL Server stops responding, you must restart SQL Server. This problem does not occur in the bulk copy program (BCP) utility.
To work around this problem, do any one of the following:
- Make sure a value other than the space character is specified in the data file.
- Use the field terminator in the data file and format file.
- Use the BCP utility instead of BULK INSERT.
Microsoft has confirmed this to be a problem in SQL Server 7.0. This problem has been corrected in U.S. Service Pack 2 for Microsoft SQL Server 7.0. For more information, click the following article number to view the article in the Microsoft Knowledge Base:
254561 INF: How to Obtain Service Pack 2 for Microsoft SQL Server 7.0 and Microsoft Data Engine (MSDE) 1.0
For more information, contact your primary support provider.
Steps to Reproduce the Problem
The following is a case where SQL Server may stop responding without any information:
- Create a data file named Test1.txt containing only two space characters and a <CRLF>.
Create a format file named Test1.fmt containing the following:
7.0 2 1 SQLCHAR 0 1 "" 1 c1 2 SQLCHAR 0 1 "\r\n" 2 c2
Execute the following script with Query Analyzer; SQL Server may stop responding without any information:
use tempdb GO create table test ( [c1] [int], [c2] [char] (1) ) ON [PRIMARY] GO BULK INSERT test FROM 'c:\test1.txt' WITH (FORMATFILE='c:\test1.fmt') GO
At this time, no information is recorded in the error log.
The following is a case where the stack overflow (or AV) happens:
- Create a data file named Test2.txt containing 13 space characters and a <CRLF>.
Create a format file named Test2.fmt containing the following:
7.0 2 1 SQLCHAR 0 12 "" 1 c1 2 SQLCHAR 0 1 "\r\n" 2 c2
Execute the following script with Query Analyzer; and the stack overflow or AV occurs:
use tempdb GO create table test ( [c1] [int], [c2] [char] (1) ) ON [PRIMARY] GO BULK INSERT test FROM 'c:\test2.txt' WITH (FORMATFILE='c:\test2.fmt') GO
Additional query words: errorlog
Keywords: kbbug kbfix KB249119