2010-08-06 2 views
0

연결된 SQL Server 2008 데이터베이스를 쿼리하고 SQL Server 2000의 테이블에 해당 데이터베이스의 테이블 데이터를 조인하는 쿼리가 있습니다. SQL Server 2008 데이터베이스에서 varchar (max)로 변경되었습니다. 오류가 발생하여 CAST (varchar (최대) 열 AS varchar (50))를 사용하여 오류를 수정했습니다. 이제 쿼리 성능이 변경 전과 비교할 때 느립니다. 문제를 해결하는 방법에 대한 제안을 해주실 수 있습니까? 시간 내 주셔서 감사합니다.Varchar (max) 2008에서 2000 년 varchar까지

+0

LEFT (VARCHARMAXCOLUMN, 50)과 CAST의 차이점은 무엇입니까? –

+3

'varchar (50)'에 성공적으로 캐스트 할 수 있다면'Varchar (max)'로 정의되는 이유는 무엇입니까? (즉, 데이터 유형을 다시 옵션으로 변경 했습니까?) –

+0

받은 오류는 무엇입니까? –

답변

3

다른 주석가들이 지적했듯이 왜 varchar (50)로 안정적으로 캐스팅 될 수 있다면 열이 varchar (max)로 변경 되었습니까?

Varchar (max)는 텍스트 데이터 유형을 대체하기위한 것이므로 아무렇게나 사용하면 안됩니다. 일반 varchar는 최대 8000자를 지원할 수 있으며 SQL 2000 및 2005에서 인식됩니다.

선택 목록에서 조인 조건 또는 where 절에서이 cast()를 수행하는 경우? 분산 쿼리는 이미 천천히 수행하고 where 절에 함수 (캐스트, 왼쪽 등)를 추가하거나 조건을 결합하면 더 악화됩니다.

여기에 아이디어는, 당신이 일반 VARCHAR에 VARCHAR (최대)를 변경할 수 없다는 가정

합니까 2005 상자 SQL 2000 상자에 연결된 서버 연결이? 그렇다면 쿼리를 그런 식으로 실행할 수 있습니까? 2005 상자는 varchar (max)와 varchar (50)를 직접 비교할 수 있습니다.

+0

오스카 (Oscar)는 몇 가지 추가 세부 정보를 게시하고 우리가 도와 드리겠습니다. –

+0

공급 업체가 데이터베이스의 소유자입니다 (SQL Sever 2008). 어떤 경우에는 8000 한계를 초과하는 긴 진단 텍스트를 수용하기 위해 "Max"로 변경해야했습니다. 보고서에 대한 데이터를 가져 오기 위해 데이터베이스에 대한 선택 권한이 있지만 연결된 서버를 만들 수있는 권한이 없습니다. 나는 그들이 나를 위해 서버 SQL 2000을 연결할 의향이 있는지 물어볼 것이다. Will A - 제안을 시도했지만 "인수 데이터 형식 텍스트가 왼쪽 함수의 인수 1에 유효하지 않습니다."오류가 반환되었습니다. 제안 해 주셔서 감사합니다. – Oscar

관련 문제