我们通过ADO运行SQL 6.5,我们遇到了最奇怪的问题。
这句话将开始产生死锁
insert clinical_notes ( NOTE_ID, CLIENT, MBR_ID, EPISODE, NOTE_DATE_TIME,
NOTE_TEXT, DEI, CARE_MGR, RELATED_EVT_ID, SERIES, EAP_CASE, TRIAGE, CATEGORY,
APPOINTMENT, PROVIDER_ID, PROVIDER_NAME )
VALUES ( 'NTPR3178042', 'HUMANA/PR', '999999999_001', 'EPPR915347',
'03-28-2011 11:25', 'We use á, é, í, ó, ú and ü (this is the least one we
use, but there''s a few words with it, like the city: Mayagüez).', 'APK', 'APK',
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
触发器是字符ú
和ü
。如果它们在NOTE_TEXT列中。
NOTE_TEXT是一个文本列。
UNC_not_id
NT_CT_MBR_NDX
NT_REL_EVT_NDX
NT_SERIES_NDX
idx_clinical_notes_date_time
nt_ep_idx
NOTE_ID是主键。
发生此声明后,如果我们发出相同的声明,但是使用新的NOTE_ID值,我们会收到死锁。
如上所述,仅当ú
或ü
位于NOTE_TEXT时才会发生这种情况。
这是一个测试服务器,发生错误时通常只有一个会话访问该表。
我确信它在字符集等方面有所不同,但对于我的生活,我无法解决这个问题。
答案 0 :(得分:0)
列(var)是基于字符的还是基于字符的n(var)?使用unicode的值是高于255还是ascii 255或更低(250和252)?
尝试将列更改为二进制排序规则,只是为了查看是否有帮助(可能会解决问题)。我不知道这是否适用于SQL 2000(虽然我可以在星期一查看),但您可以尝试这样来查找服务器上可用的排序规则:
SELECT * FROM ::fn_helpcollations()
拉丁文将军BIN应该在某处。
假设您找到了要进行的排序规则,您可以像这样更改排序规则:
ALTER TABLE TableName ALTER COLUMN ColumnName varchar(8000) NOT NULL COLLATE Collation_Name_Here
将您的表格编入脚本以了解它现在使用的排序规则,以便在不起作用或导致问题时将其设置回来。或者使用备份。 :)
另外需要注意的是,如果您使用的是unicode,则在文字字符串之前需要N,例如:
SELECT N'String'