우리는 SQL 서버에 양식 데이터를 저장해야하지만, 새로운 작업마다 필드 이름과 길이가 다른 필드가 있습니다. 예Sql Server 2005에서 xml 데이터의 동적 뷰를 만들 수 있습니까?
Job 1:
Field 1: first_name - varchar(20)
Field 2: last_name - varchar(30)
Job 2:
Field 1: first_name - varchar(15)
Field 2: middle_initial - varchar(1)
Field 3: last_name - varchar(30)
처음에는 문제의 양식과 정확히 일치하는이 데이터를 저장하기 위해 별도의 테이블을 설정했습니다. 그러나이 데이터의 동적 인 속성을 조정하기 위해 매번 변경 될 테이블, procs, dts, ssis 패키지가 너무 많아 유지 보수의 악몽이되었습니다.
우리는 xml 필드에 모든 데이터를 저장하여 문제의 대부분을 해결하는 다른 솔루션을 생각해 냈습니다. 이제는 이와 유사하게 존재합니다.
<Record>
<first_name>value</first_name>
<last_name>value</last_name>
</Record>
그럼 우리가
SELECT
, IsNull(data.value('(/Record/first_name)[1]', 'varchar(20)'),'') as first_name
, IsNull(data.value('(/Record/last_name)[1]', 'varchar(30)'),'') as last_name
FROM FormTable
지금이 우리가 전에했던 것보다 훨씬 더 테이블에서 데이터를 끌어 뷰를 생성 할뿐만 아니라 우리는 여전히 사용자 정의 각을 볼 작성해야한다는 것을 의미 시각. 차라리 필드를 나열하는 테이블 유형을 유지하고 저를 위해 해당 쿼리를 작성합니다.
Field Name | Field Type | Field Length
first_name | varchar | 20
last_name | varchar | 30
저는 동적 뷰를 만들 수 없다고 확신합니다. 작동 할 수있는 옵션 중 하나는 테이블 값 함수입니다. 그러나 내가 여기서 바라보고있는 것이 있습니까? 이 방법으로 데이터를 동적으로 저장할 수있는 더 좋은 옵션이있을 것입니다 (CouchDB와 같은 다른 데이터베이스가 기본적으로 수행한다는 것을 알고 있기 때문에 SQL Server에서 멀리 이동하지 않아도됩니다.)
"저장 프로 시저에서 SELECT 할 수 없음"이란 무엇을 의미합니까? 왜 SP가 결과 집합을 반환하지 않을까요? –
음, "SELECT first_name, last_name FROM sp_getformdata"를 수행 할 수 없습니다 -이 프로세스의 다음 부분에서는 분할 된 데이터를 가져 와서 여러 가지 방식으로 예제를 작성하기 때문에 우리가해야 할 일이 실제로 필요합니다 "SELECT first_name +", "last_name FRAME sp_getformdata" –
정보를 제공해 주셔서 감사 드리며 이전에 해당 링크를 읽었습니다. 이러한 옵션 중 하나 하나에 어떤 유형의 페널티가있는 것으로 보이며 수십만 건의 레코드로 작업 할 때 성능이 저하 될 수는 없습니다. –