2012-02-22 29 views
55

Tôi nhận được lỗi đối chiếu dưới đây kể từ khi tôi chuyển từ máy tính để bàn sang máy tính xách tay. Cơ sở dữ liệu của tôi có hàng trăm thủ tục được lưu trữ, vì vậy mọi giải pháp như ghi đè một số truy vấn hoặc sửa lỗi đối chiếu cho một cột là không thể đối với tôi.Không thể giải quyết xung đột đối chiếu giữa "SQL_Latin1_General_CP1_CI_AS" và "Latin1_General_CI_AI" bằng hoạt động

"Không thể giải quyết mâu thuẫn đối chiếu giữa 'SQL_Latin1_General_CP1_CI_AS' và 'Latin1_General_CI_AI' trong bằng hoạt động"

Vấn đề của tôi không phải là độc đáo và tôi đã tìm kiếm này khá nhiều, nhưng giải pháp có sẵn gợi ý cho tôi để ghi đè truy vấn với một số mã không khả thi. Xin đề nghị một số giải pháp có thể tránh điều này collation.

Tôi đã thử cách này để thay đổi collation cơ sở dữ liệu của mình.

ALTER DATABASE testDB 
COLLATE French_CI_AI ; 
GO 

Cảm ơn.

Trả lời

90

Chỉ cần sử dụng cú pháp sau để đối chiếu nhanh khi nối các bảng với các collations khác nhau. Tôi tích hợp hệ thống vì vậy phải làm điều này allot.

select * from [Product] p join [category] c 
on 
c.[Name] collate SQL_Latin1_General_CP1_CI_AS 
= 
p.[Name] collate SQL_Latin1_General_CP1_CI_AS 
+0

Đối với bất kỳ ai có thể làm điều đó một cách nhanh chóng –

+1

Cảm ơn Master Styles, vì phản hồi của bạn nhưng điều này sẽ không giúp tôi khi vấn đề của tôi được lan truyền trong khoảng 600+ thủ tục được lưu trữ với hơn 100 bảng. – TechnicalSmile

+0

@MasterStyles tôi muốn thay đổi toàn bộ collation db. nó có thể? – coderwill

6
USE master; 
GO 
ALTER DATABASE PRATAP 
COLLATE Latin1_General_CI_AS_KS_WS ; 
GO 

--Verify the collation setting. 
SELECT name, collation_name 
FROM sys.databases 
WHERE name = N' PRATAP '; 
GO 
Các vấn đề liên quan