Cannot resolve the collation conflict ใน SQL Server

Msg 468, Level 16, State 9, Line 3
Cannot resolve the collation conflict 
between "Thai_CI_AI" and "Thai_CI_AS" in the equal to operation

นี้คือ Error หลังจากที่พยายาม Query ข้าม Database ดังนี่

select
    A.*
    ,B.*
from
    DBA.dbo.CUSTOMER as A
    inner join DBB.dbo.CUSTOMER as B 
        on A.CUSTOMER_NAME = B.CUSTOMER_NAME

เหตุที่ทำให้เกิด Error แบบนี้คือ Database A มี Collation แบบ Thai_CI_AI ส่วน Database B ดันนี้มี Collation เป็นแบบ Thai_CI_AS ทำให้เกิดปัญหาตอนพยายาม Query แบบข้าม Database

วิธีแก้ปัญหาคือกำหนด Collation ขณะ Query ซะ โดยกำหนดให้อิงแบบใดซักแบบนึง เช่น

select
    A.*
    ,B.*
from
    DBA.dbo.CUSTOMER as A
    inner join DBB.dbo.CUSTOMER as B 
        on A.CUSTOMER_NAME = B.CUSTOMER_NAME collation Thai_CI_AI

ก็จะสามารถแก้ปัญหา Query ข้าม Database ที่ Collation ต่างกันได้แล้ว

ปล. หลังจากค้นหาข้อมูลเกี่ยวกับ Collation เหมือนจะเจอปัญหาภาษาไทยกันเยอะกว่า เค้าแก้ด้วยการใช้ Collation เป็น Thai_Bin

Advertisements

One thought on “Cannot resolve the collation conflict ใน SQL Server

  1. ทำได้ แต่ ทำแล้วช้า ครับ ถ้าข้อมูลเยอะๆ

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s