2017-05-13 1 views
0

(datetime, float) 튜플을 포착하는 BLOB를 생성해야합니다. 이들은 처음에 유형의 열이있는 SQL 테이블에 수집 된 샘플링 된 센서 값입니다. 잠시 후, 그들은 blob로 변환되어 다른 종류의 레코드에 저장되어야합니다. 필요하다면 블롭은 (일시적인) 테이블로 다시 확장되어야합니다.CLR 집계 함수를 재배치하여 8000 바이트보다 큰 BLOB를 생성하는 방법은 무엇입니까?

샘플의 처리가 복잡해 지므로 원시 SQL 언어는 기능 구현에 적합하지 않습니다. 다른 한편, CLR 어셈블리를 사용할 때 유연하게 구현하고 싶습니다.

SELECT 
    MIN(UTC) AS min_utc, 
    MAX(UTC) AS max_utc, 
    Aggregates.TimeValuesBlob(UTC, sensor_value) AS result 
FROM SensorData.dbo.sensor_values 
WHERE UTC BETWEEN '2012-09-14 08:00' AND '2012-09-14 12:25' 

그러나, 집계 함수가 최대 8000 바이트를 반환 할 수 있습니다

지금까지, 나는 다음과 같이 호출 할 수 있습니다 집계 함수를 구현했습니다. 더 큰 얼룩을 만들어야합니다. 그렇게하는 방법? MS-SQL Server (2012 버전 및 2008 R2 버전)의 기능/메커니즘은 사용해야합니까?

CLR 저장 프로 시저를 작성하고 SQL 명령을 인수로 전달해야합니까? 위와 동일한 SQL 명령을 사용하여 내부적으로 구문 분석하고 자체적으로 병합을 수행 할 수 있습니까? 아니면 접근 방식을 재고해야합니까?

답변

1

SQL Server Compressed Rowset Sample을 사용해 보거나, 적어도 그런 종류의 작업을 수행하는 방법에 대해 살펴보십시오.

+0

예를 들어 주셔서 감사합니다. DataTable의 serialization이 아닌 더 많은 데이터 지향 BLOB를 사용하고 싶습니다. 어쨌든 예제에는 코드 조각이 포함되어 있습니다. – pepr

관련 문제