Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS"
and "Thai_CI_AS" in the equal to operation.
Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK
TRANSACTION statement is missing. Previous count = 0, current count = 1.
- ด้านล่างนี้คือ execute store procedure โดยตรง
(1 row(s) affected)
Msg 468, Level 16, State 9, Procedure M_SEARCH, Line 116
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Thai_CI_AS" in the equal to operation.
Msg 266, Level 16, State 2, Procedure M_SEARCH, Line 116
Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION statement is missing. Previous count = 0, current count = 1.
- คือ ใน store procedure ในเงื่อนไข where พยายามเปรียบเทียบ ข้อมูลกับ subquery ของ
- temp table ซึ่งเราไม่ได้กำหนด collation อ่ะนะ
- แต่ทำไมก่อนหน้านี่ไม่เห็นเป็นไรเลยหว่า เราต้อง restore ข้อมูล
- หรือ จะเกี่ยวกับที่เราทดสอบ replication เป็น publication หว่า
- select ... from table where ... = (select ... from #temptable where ...)
สาเหตุที่สรุปได้น่าจะเป็น
- ประมาณเปรียบเทียบข้อมูล charset คนละแบบเช่น ในกรณีนี้ table จริงจะเป็น Thai_CI_AS
- แต่ temp table เป็นไรไม่รู้ ใช้ที่อื่นไม่มีปัญหานะ
- แต่วันนี้ปัญหาเกิดจากอาไรไม่รุ้จริง
- ลองแก้โดยคำสั่งสร้าง create #table ใส่ collate Thai_CI_AS ให PK ของ table
CREATE TABLE [dbo].[#temp_table](
[member_code] [varchar](50) COLLATE Thai_CI_AS NOT NULL PRIMARY KEY
)
- ปรากฏว่าโปรแกรม ไม่แสดง exception นี้อ่ะ
- งง อย่างแรง
อื่นๆ
- เคยย้ายข้อมูลจาก MySQL ไป SQLServer
- มีปัญหาตอนจะ join เอาข้อมูลใน MySQL ซึ่ง 2 table มี อันหนึ่งใช้ tis-620 อีกอันใช้ latin
- ทำให้ select คำสั่งที่มี join ไม่ได้เลย
- เท่าที่จำได้คิดว่า MySQL จะแยก charset ของ table กับ column แต่ละอันเลยนะ
- ไม่แน่ใจว่า SQLServer จะกำหนดได้เฉพาะ table อย่างเดียวป่าว ซึ่ง column ทุกตัวต้องมีคุณสมบัติ charset เหมือน table นั้นๆ
สรุปสุดท้าย
- การกระทำระหว่าง สองค่าซึ่งมี charset ต่างกัน น่าจะใช่ปัญหานี่แหละ
- ซึ่งระบบจริง ไม่เห็นจะมีปัญหาเรื่อง collate ของ temp table เลยอ่ะ
- แล้วทำไมมีปัญหา เมื่อเราเอา มา restore ทดสอบบน VM หว่า
- หรือว่า sqlserver config จะมีปัญหาหว่า งง อีกรอบ อย่างแรง
No comments:
Post a Comment