"이기종 쿼리"란 무엇입니까?


14

프로그램에서 실행중인 SQL 쿼리와 관련하여 다음과 같은 오류 메시지가 나타납니다. SQL Server 2005 T-SQL.

이기종 쿼리에는 연결에 대해 ANSI_NULLSANSI_WARNINGS옵션을 설정해야합니다. 이는 일관된 쿼리 의미론을 보장합니다. 이 옵션을 활성화 한 다음 쿼리를 다시 발행하십시오. (심각도 16)

그것을 해결하는 것은 쉬운 집합입니다 ANSI_NULLS하고 ANSI_WARNINGS ON,하지만 난 알고 싶어 무엇을 이기종 쿼리입니다. 구글 검색 설정 말해 결과 수십납니다 ANSI_NULLS하고 ANSI_WARNINGS어떤 용어의 의미를 설명하고, 아무것도. 쿼리는 다음과 같습니다.

UPDATE SRV.DB.DBO.TABLE SET Column=
            (SELECT Column 
            FROM SRV1.DB.DBO.TABLE)

나는 이것이 다른 오류를 얻지 못했기 때문에 하나의 쿼리로 여러 데이터베이스 엔진에 연결했기 때문이라고 생각합니다.
"이종"은이 문맥에서 두 개의 서로 다른 데이터베이스 엔진을 쿼리하는 것을 의미합니까?

답변:


8

"이종"은이 문맥에서 두 개의 서로 다른 데이터베이스 엔진을 쿼리하는 것을 의미합니까?

기본적으로 그렇습니다. "이기종 링크 된 서버"에서 "이기종"쿼리가 실행됩니다. 이 연결된 서버에 대한 모든 쿼리는 이기종입니다.

"heterogenous"는 분산 쿼리 의 하위 집합입니다.

  • 여러 SQL Server 인스턴스에 저장된 분산 데이터
  • OLE DB 제공자를 사용하여 액세스하는 다양한 관계형 및 비 관계형 데이터 소스에 저장된 이기종 데이터

그러나 "이종"은 때때로 나타납니다.

MSDN에서 서버 연결 참조

기업 전체의 이기종 데이터 소스 에서 분산 쿼리, 업데이트, 명령 및 트랜잭션을 발행 할 수있는 기능

sp_addlinkedserver

연결된 서버를 통해 OLE DB 데이터 소스에 대해 분산 된 이기종 쿼리에 액세스 할 수 있습니다.

"이종 데이터 결합" 에서 Active Directory를 쿼리하는 MSDN 예제

그리고 다시 MSDN "이종 데이터베이스 복제"


6

내가 아는 한, 네

쿼리에서 볼 수있는 문제는 연결된 테이블에서 어떤 행이 다시 올지 알 수 없다는 것입니다. 이것은 단지 더미 코드입니까, 아니면 쿼리가 이런 식으로 작성 되었습니까?


더미 코드입니다. 40 개의 데이터베이스에서 가져 와서 해당 값의 "상태 보고서"테이블에 저장하는 단일 열이 있습니다.
Ben Brocka

1
오 그래. Srv.db.dbo.table의 해당 열에 입력되는 값이 코드를 실행중인 SQL Server 버전에 따라 다를 수 있다는 것을 알고 싶었습니다. 구체적으로 게시 된 코드를 사용하여 SQL 2005에서 SQL 2008까지는 다른 값을 얻게됩니다.
mrdenny

이제 관심이 생겼습니다. 잠재적 인 문제는 무엇이며, 내가 얻는 단일 행을 모르는 것입니까? 이 경우 테이블에는 단일 행만 있으므로 하위 쿼리에 WHERE가없는 이유입니다.
Ben Brocka

테이블에 여러 행이있는 경우 SQL 2005를 사용하면 첫 번째 행이 표시됩니다. SQL 2008에서는 새 테이블이 두 번째 행을 갖게됩니다. (나는 그 뒤로이있을 수 있습니다.)
mrdenny

"이질적인 쿼리"가 실제로 무엇인지 정확하게 설명하는 MS의 기사를 좋아했을 것입니다. 그러나 그런 것은 존재하지 않는 것 같습니다.
Ben Brocka

1

이기종은 다른 것을 의미합니다. 따라서 이기종 쿼리는 하나의 데이터베이스에 있으며 DIFFERENT 데이터베이스를 쿼리합니다. 데이터베이스가 다르기 때문에 설정이 다를 수 있으므로 의도 한 것과 다른 결과가 발생할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.