임시 테이블을 업데이트 할 수 없습니다. 이것은 내 쿼리임시 테이블 정렬 충돌 - 오류 : Latin1 *과 SQL_Latin1 간의 데이터 정렬 충돌을 해결할 수 없습니다.
CREATE TABLE #temp_po(IndentID INT, OIndentDetailID INT, OD1 VARCHAR(50), OD2 VARCHAR(50),
OD3 VARCHAR(50), ORD VARCHAR(50), NIndentDetailID INT, ND1 VARCHAR(50), ND2 VARCHAR(50),
ND3 VARCHAR(50), NRD VARCHAR(50), Quantity DECIMAL(15,3))
INSERT INTO #temp_po(IndentID, OIndentDetailID, OD1, OD2, OD3, ORD)
SELECT ID.IndentID, ID.IndentDetailID, ID.D1, ID.D2, ID.D3, ID.RandomDimension
FROM STR_IndentDetail ID WHERE ID.IndentID = @IndentID
UPDATE
t
SET
t.ND1 = CASE WHEN D.D1 = '' THEN NULL ELSE D.D1 END,
t.ND2 = CASE WHEN D.D2 = '' THEN NULL ELSE D.D2 END,
t.ND3 = CASE WHEN D.D3 = '' THEN NULL ELSE D.D3 END,
t.NRD = CASE WHEN D.RandomDim = '' THEN NULL ELSE D.RandomDim END,
t.Quantity = D.PurchaseQty
FROM
#temp_po t INNER JOIN @detail D ON D.IndentDetailID = t.OIndentDetailID
WHERE
t.IndentID = @IndentID
이다 그러나 "Latin1_General_CI_AI"및 운영에 동일한에서 "SQL_Latin1_General_CP1_CI_AS 데이터"간의 데이터 정렬 충돌을 해결할 수 없습니다 오류
을 제공합니다.
이 문제를 해결하는 방법?
내 tempdb
데이터 정렬은 Latin1_General_CI_AI
이고 실제 데이터베이스 정렬은 SQL_Latin1_General_CP1_CI_AS
입니다.
이 마스터 DB의 정렬에 tempdb의 디폴트 이후 열 (가능성이 데이터베이스에서 상속) 조합과 마스터 사이의 충돌, 아래 말했다. 가장 쉬운 해결책은 각 (n) char/(n) varchar 데이터 유형에 COLLATE DATABASE_DEFAULT를 추가하여 작업중인 데이터베이스와 일치하도록 임시 테이블이 항상 만들어 지도록하는 것입니다. – Kahn