SQL Server 관계형 데이터베이스의 보고서 데이터 집합 만들기

Reporting Services는 MicrosoftSQL Server 관계형 데이터베이스에서 보고서 데이터를 검색할 수 있도록 하는 데이터 처리 확장 프로그램을 제공합니다. 이 데이터 처리 확장 프로그램은 기본 데이터 원본에 정의된 관계형 데이터 테이블, 뷰, 저장 프로시저 및 기타 데이터 구조에서 데이터를 검색합니다. 데이터 원본에 연결한 후에는 해당 데이터 원본에서 보고서로 가져올 데이터를 정의하는 보고서 데이터 집합을 만들 수 있습니다. Reporting Services 데이터 집합에는 데이터 원본, 보고서가 처리될 때 데이터를 검색하는 쿼리, 필드 컬렉션이 포함됩니다. 데이터 집합 정의는 보고서 정의에 저장됩니다. 보고서 데이터 창에는 보고서의 현재 데이터 집합 정의가 표시됩니다.

Transact-SQL 쿼리 텍스트 또는 저장 프로시저 호출을 사용하여 쿼리를 만들거나, 테이블을 선택하고 해당 테이블의 데이터를 모두 검색하여 데이터 집합을 정의합니다. 데이터 집합의 필드 컬렉션은 쿼리에서 자동으로 만들어집니다. 필드를 편집하거나 계산 필드를 추가할 수도 있습니다. 계산 필드에는 쿼리가 실행될 때 계산되는 식 기반 값이 있습니다. 필드의 데이터 형식이 .NET Framework에서 CLR(공용 언어 런타임) 데이터 형식의 하위 집합으로 매핑됩니다. 자세한 내용은 보고서 데이터 집합 이해방법: SQL Server 데이터 원본에서 데이터 검색을 참조하십시오.

관계형 데이터 원본에 대해 텍스트 기반 쿼리 디자이너와 그래픽 쿼리 디자이너라는 두 가지 유형의 쿼리 디자이너가 있습니다. 기본적으로는 텍스트 기반 쿼리 디자이너가 열립니다. 텍스트 기반 쿼리 디자이너를 사용하여 Transact-SQL 텍스트를 직접 입력하거나, 다른 원본에서 쿼리 텍스트를 붙여 넣거나, 그래픽 쿼리 디자이너를 사용하여 작성할 수 없는 복잡한 쿼리를 입력하거나, 쿼리 기반 식을 입력할 수 있습니다. 그래픽 쿼리 디자이너는 데이터 원본에서 메타데이터를 찾아 쿼리를 대화형으로 디자인하거나 데이터 원본의 저장 프로시저 또는 테이블 목록을 보는 데 사용합니다. 자세한 내용은 그래픽 쿼리 디자이너 사용자 인터페이스, 텍스트 기반 쿼리 디자이너 사용자 인터페이스방법: SQL Server 데이터 원본에서 데이터 검색을 참조하십시오.

쿼리를 정의한 후 Timeout 및 CaseSensitivity와 같은 속성을 지정하고 쿼리 매개 변수로 값을 전달하는 보고서 매개 변수를 정의할 수도 있습니다. 쿼리를 실행하면 데이터 원본에서 검색한 결과 집합이 표시됩니다. 결과 집합의 열은 데이터 집합의 필드에 매핑됩니다. 보고서가 처리되면 데이터 집합 필드에 바인딩된 보고서 항목에 검색되거나 계산된 데이터가 표시됩니다. 보고서는 쿼리에서 검색된 첫 번째 결과 집합만 처리합니다.

쿼리 지정

SQL Server 데이터 원본의 경우 텍스트 기반 쿼리 디자이너 또는 그래픽 쿼리 디자이너를 사용하여 데이터 집합에 대한 쿼리를 지정할 수 있습니다. 새 데이터 집합에 대한 쿼리를 지정할 때 기본적으로 그래픽 쿼리 디자이너가 열립니다. 기존 데이터 집합 쿼리가 너무 복잡하여 그래픽 쿼리 디자이너에서 볼 수 없는 경우 텍스트 기반 쿼리 디자이너가 열립니다. 이 두 쿼리 디자이너 모두 TextStoredProcedure 쿼리 유형을 지원합니다. 쿼리 디자이너를 열기 전에 데이터 집합 속성 대화 상자에서 쿼리 유형을 지정합니다.

Text 쿼리 유형의 경우 쿼리 텍스트에 쿼리 매개 변수가 포함되어 있으면 Reporting Services에서 해당 보고서 매개 변수를 만듭니다. StoredProcedure 쿼리 유형의 경우 저장 프로시저에 입력 매개 변수가 포함되어 있으면 Reporting Services에서 해당 보고서 매개 변수를 만듭니다. 쿼리 매개 변수 및 보고서 매개 변수에 대한 자세한 내용은 이 항목의 뒷부분에 나오는 쿼리 매개 변수 사용을 참조하십시오.

각 쿼리 디자이너에 대한 자세한 내용은 텍스트 기반 쿼리 디자이너 사용자 인터페이스그래픽 쿼리 디자이너 사용자 인터페이스를 참조하십시오.

Text 쿼리 유형 사용

쿼리 디자이너가 텍스트 모드로 열리면 Transact-SQL 명령을 입력하여 데이터 집합의 데이터를 정의할 수 있습니다. 예를 들어 다음 Transact-SQL 쿼리에서 모든 직원의 이름을 모두 선택합니다.

SELECT FirstName, LastName
FROM   HumanResources.Employee E INNER JOIN
       Person.Contact C ON  E.ContactID=C.ContactID

도구 모음에서 실행 단추(!)를 클릭하여 쿼리를 실행하고 결과 창에 해당 결과를 표시합니다.

또한 다른 보고서 또는 sql 파일에서 기존 쿼리를 가져올 수 있습니다.

StoredProcedure 쿼리 유형 사용

쿼리 디자이너가 StoredProcedure 모드에서 열리면 데이터 집합 속성 대화 상자에서 StoredProcedure를 지정할 때 사용할 저장 프로시저를 이미 선택한 것입니다.

실행할 다른 저장 프로시저의 이름을 이미 알고 있는 경우 기존 텍스트를 교체하고 쿼리 창에 새 저장 프로시저 이름을 입력할 수 있습니다.

Reporting Services에서는 데이터 집합을 하나만 반환하는 저장 프로시저를 지원합니다. 저장 프로시저에서 여러 개의 결과 집합을 반환할 경우 첫 번째 결과 집합만 사용됩니다.

저장 프로시저에 기본값을 사용하는 매개 변수가 있는 경우 매개 변수의 값으로 DEFAULT 키워드를 사용하여 Reporting Services의 해당 값에 액세스할 수 있습니다. 쿼리 매개 변수가 보고서 매개 변수에 연결되어 있으면 사용자가 보고서 매개 변수의 입력란에 DEFAULT라는 단어를 입력하거나 선택할 수 있습니다. 자세한 내용은 저장 프로시저(데이터베이스 엔진)를 참조하십시오.

쿼리 매개 변수 사용

매개 변수가 있는 쿼리 텍스트 또는 입력 매개 변수가 있는 저장 프로시저의 경우 보고서 디자이너에서는 쿼리가 실행될 때 보고서 정의에서 해당하는 보고서 매개 변수를 자동으로 만듭니다. 보고서를 실행하면 보고서 매개 변수에 대한 값이 쿼리 매개 변수로 전달됩니다. 예를 들어 다음 SQL 쿼리는 EmpID라는 보고서 매개 변수를 만듭니다.

SELECT FirstName, LastName FROM HumanResources.Employee E INNER JOIN
       Person.Contact C ON  E.ContactID=C.ContactID 
WHERE EmployeeID = @EmpID

데이터 집합 속성 대화 상자, 매개 변수을 사용하여 보고서 매개 변수와 쿼리 매개 변수의 관계를 관리할 수 있습니다. 보고서 매개 변수와 연결된 매개 변수가 있는 쿼리는 DECLARE 문을 사용하지 않아도 됩니다.

보고서 매개 변수가 쿼리 매개 변수에서 자동으로 생성되더라도 보고서 데이터 창에서 보고서 매개 변수를 별도로 관리합니다.

[!참고]

쿼리 매개 변수 이름을 변경하거나 쿼리 매개 변수를 삭제해도 쿼리 매개 변수에 해당하는 보고서 매개 변수는 자동으로 변경되거나 삭제되지 않습니다. 보고서 데이터 창 도구 모음에 있는 단추를 사용하여 보고서 매개 변수의 순서를 제거하거나 변경할 수 있습니다. 자세한 내용은 보고서에 매개 변수 추가을 참조하십시오.