FIX: Error Message 1205 Is Not Returned with the Localized Message Text (296438)



The information in this article applies to:

  • Microsoft SQL Server 2000 (all editions)

This article was previously published under Q296438
BUG #: 351378 (SHILOH_BUGS)

SYMPTOMS

If a deadlock occurs, SQL Server chooses one of the deadlocking system process IDs (SPIDs) as the deadlock victim, terminates the SPID, and then notifies the client application by returning error number 1205.

On the Korean localized version of SQL Server 2000, SQL Server does not return error 1205 to the client application with the localized message in Korean. For example, the text of the error message is missing.

CAUSE

Localization was performed improperly for error 1205.

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

STATUS

Microsoft has confirmed that this is a problem in SQL Server 2000.

This problem was first corrected in SQL Server 2000 Service Pack 2.

MORE INFORMATION

SQL Server 2000 is localized into French, German, Spanish, Japanese, Italian, Korean, and Chinese. These localized versions of SQL Server contain the translated set of system messages in addition to the English set. SQL Server sends a localized (or translated) message to the client application if it finds a language ID in the master.dbo.sysmessages system table that matches the language ID of the connection. If no language ID matches the language ID in use by the connection, SQL Server sends the messages in English. Non-localized SQL Server versions only contain the English set of system messages.

Steps to Reproduce Behavior

To reproduce the behavior, use these steps:
  1. In SQL Server Query Analyzer, open a new connection. For example, Connection1, and then connect to SQL Server 2000.
  2. Create a table by using this code:
    CREATE TABLE deadlock_test (id int PRIMARY KEY, name varchar(20))
  3. Populate the table created in the step 2:
    INSERT INTO deadlock_test VALUES (1, 'name1')
    INSERT INTO deadlock_test VALUES (2, 'name2')
    INSERT INTO deadlock_test VALUES (3, 'name3')
  4. Begin a transaction by executing the following statements from Connection1:
    BEGIN TRAN
    UPDATE deadlock_test SET name = 'user1' WHERE id=1
  5. Open a new connection, for example Connection2, to SQL Server from Query Analyzer, and then execute the following statements in the same database used for steps 1 through 4:
    BEGIN TRAN
    UPDATE deadlock_test SET name = 'user2' WHERE id=2
  6. Navigate back to Connection1, and then execute the following code:
    SELECT name FROM deadlock_test WHERE id=2
    COMMIT TRAN
  7. Execute the following statements from Connection2:
    SELECT name FROM deadlock_test WHERE id=1
    COMMIT TRAN
    Now, a deadlock occurs and the following error is sent to Connection2 in Korean but without the message text of the error:
    ??: ??? 1205, ?? 13, ?? 50, ? 1
The result that SQL Server should display when it encounters a deadlock on the Korean localized version of SQL Server 2000 is:
??: ??? 1205, ?? 13, ?? 50, ? 1
????(???? ID 55)? {lock} ????? ?? ?????? ?? ??? ???? ??? ???????. ????? ?? ??????.
The English version of error message 1205 is:
Server: Msg 1205, Level 13, State 50, Line 1
Transaction (Process ID 55) was deadlocked on {lock} resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

Modification Type:MajorLast Reviewed:10/16/2003
Keywords:kbBug kbfix KB296438