Reporting Services에서 사용자 지정 어셈블리 또는 포함된 코드를 사용하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 920769 - 이 문서가 적용되는 제품 보기.
SQL Server Support Voice 칼럼

Reporting Services에서 사용자 지정 어셈블리 또는 포함된 코드를 사용하는 방법

사용자의 필요에 맞는 칼럼을 게시할 수 있도록 향후 기술 자료 문서 및 Support Voice 칼럼에서 다루었으면 하는 문제와 관심 있는 항목에 대한 의견을 보내주시기 바랍니다. 요청(Ask For It) 양식을 사용하여 의견이나 피드백을 보낼 수 있습니다. 이 칼럼 하단에도 이 양식에 대한 링크가 제공됩니다.
모두 확대 | 모두 축소

이 페이지에서

안녕하세요! 저는 Microsoft SQL Server Content 팀에서 SQL Server Support Voice 칼럼을 담당하고 있는 Sandy Yakob입니다. 간단히 제 소개를 하자면, 저는 Microsoft에서 10년간 근무하였으며 3년 전부터 SQL Server Content 팀과 함께 일하고 있습니다.

이 달의 칼럼에서는 John Sirmon이 SQL Server 2000 Reporting Services 및 SQL Server 2005 Reporting Services에서 사용자 지정 어셈블리 또는 포함된 코드를 사용하는 단계에 대해 설명합니다. 이 문서는 Reporting Services에서 사용자 지정 어셈블리를 실행하는 기본 단계를 제공할 목적으로 작성되었습니다. John은 Microsoft SQL Developer Support 팀의 에스컬레이션 지원 엔지니어이며 2001년 3월부터 Microsoft에서 근무하고 있습니다. John은 10년 이상의 SQL Server 사용 경험과 Microsoft Visual Studio를 사용한 다양한 개발 경력을 가지고 있습니다. John은 Citadel 대학에서 경영학을 전공했으며 MCSD(Microsoft Certified Solution Developer) 자격증과 MCDBA(Microsoft Certified Database Administrator) 자격증을 가지고 있습니다. 이 칼럼이 여러분에게 많은 도움이 되길 바랍니다.

사용자 지정 어셈블리 만들기

사용자 지정 어셈블리를 만들려면 다음과 같이 하십시오.
  1. Visual Studio 클래스 라이브러리를 만듭니다. 파일 메뉴에서 새로 만들기프로젝트를 차례로 가리킨 다음 클래스 라이브러리를 누릅니다.
  2. 이름과 위치를 지정합니다. 예를 들어, 이름과 위치로 각각 SimpleClassLibrary와 C:\Documents and Settings\user1\My Documents\Visual Studio 2005\projects를 지정합니다.
  3. 클래스 파일(예: Class1.vb)을 연 다음 Reporting Services에서 사용할 함수를 만듭니다. 이 문서의 예제에서는 하나의 단순 공유 함수를 만듭니다.

    참고 이 함수는 공유 함수(C#의 경우 정적 함수)이기 때문에 인스턴스화된 개체를 사용하여 액세스할 필요가 없습니다. 이 문서의 뒷부분에서 어셈블리를 참조하는 방법에 영향을 주므로 이 점을 염두에 두십시오.
    Public Class Class1
    
        Public Shared Function DoSomething() As String
            Return "string data returned from custom assembly"
        End Function
    
    End Class
    
  4. 코드를 모두 추가했으면 빌드 메뉴에서 SimpleClassLibrary 빌드를 누릅니다. 그러면 해당 bin 폴더에 어셈블리 또는 관리되는 .dll이 만들어집니다. 이 문서의 예제에서는 My Documents\Visual Studio 2005\Projects\ SimpleClassLibrary\bin\Debug 폴더에 SimpleClassLibrary.dll이라는 어셈블리를 만듭니다.

SQL Reporting Services 폴더에 사용자 지정 어셈블리 복사

Reporting Services의 보고서 디자이너와 보고서 서버에서 어셈블리를 사용할 수 있게 합니다. 이렇게 하려면 .dll을 보고서 디자이너 폴더와 보고서 서버 폴더에 복사해야 합니다.

참고 이러한 폴더의 경로는 설치 경로에 따라 조금씩 다를 수 있습니다.
  • Reporting Services 2005의 경우 다음 폴더에 .dll을 복사합니다.
    • Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies
    • Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin
  • Reporting Services 2000의 경우 다음 폴더에 .dll을 복사합니다.
    • Program Files\Microsoft SQL Server\80\Tools\Report Designer
    • Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin
참고 이 작업은 코드를 변경할 때마다 수행해야 하기 때문에 약간 번거로울 수 있습니다. 따라서 대부분의 개발자는 배치 파일을 만들어 이 작업을 처리합니다. 다음은 사용할 수 있는 예제 배치 파일입니다.
@ECHO OFF
REM   Name: SRSDeploy.bat
REM
REM   This batch files copies my custom assembly to my Reporting Services folders.
REM   Run this from the directory where the customer assembly was compiled.
REM   Be sure to close any applications that have your custom assembly open. 
REM
REM   This is the SQL Server 2005 version:
copy SimpleClassLibrary.dll "C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies"  
copy SimpleClassLibrary.dll "C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin" 
REM This is the SQL Server 2000 version:
REM copy SimpleClassLibrary.dll "C:\Program Files\Microsoft SQL Server\80\Tools\Report Designer"
REM copy SimpleClassLibrary.dll "C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin"
일발적으로 이 작업은 프로젝트에 사용자 지정 빌드 후 이벤트를 만들어 처리합니다. 이렇게 하려면 프로젝트의 속성으로 이동하고 컴파일 탭을 누른 다음 빌드 이벤트를 누릅니다. 그러면 빌드 이벤트 대화 상자가 열립니다. 빌드 후 이벤트 명령줄을 선택한 후 다음을 입력합니다.
copy "$(TargetPath)" "C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\"
copy "$(TargetPath)" "C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin\"
그러면 빌드 후 매크로를 통해 어셈블리의 위치가 지정됩니다. 빌드 후 이벤트를 만드는 방법에 대한 자세한 내용은 다음 MSDN(Microsoft Developer Network) 웹 사이트를 참조하십시오.
http://msdn2.microsoft.com/ko-kr/library/42x5kfw4.aspx

Reporting Services에서 사용자 지정 어셈블리에 대한 참조 추가

사용자 지정 어셈블리에 대한 참조를 추가하려면 보고서 디자이너에서 Reporting Services 보고서를 엽니다. 이렇게 하려면 다음과 같이 하십시오.
  1. 사용자 지정 어셈블리를 참조할 보고서를 엽니다.
  2. 보고서 메뉴에서 보고서 속성을 누릅니다.
  3. 보고서 속성 대화 상자에서 참조 탭을 누릅니다.
  4. 참조 아래의 어셈블리 이름 열 머리글 옆에 있는 줄임표(...) 단추를 누릅니다.

    참고?클래스 섹션은 인스턴스 기반 구성원만을 위한 것이고 정적 구성원을 위한 것이 아닙니다. 정적(일부 Reporting Services 설명서에서는 "공유"라고도 함)이란 구성원이 클래스의 모든 인스턴스에 사용될 수 있고 모든 인스턴스가 동일한 저장 위치를 사용한다는 것을 의미합니다. 정적 구성원은 Microsoft Visual Basic에서 공유 키워드를 사용하여 선언되고 C#에서는 정적 키워드를 사용하여 선언되기 때문에 다소 혼란스러울 수 있습니다. 즉, 사용자 지정 어셈블리에 액세스해야 하는 인스턴스 구성원이 포함되어 있을 경우 클래스 섹션에서 클래스 이름과 인스턴스 이름을 지정해야 합니다. 이 문서의 예제에서는 Reporting Services에서 호출할 메서드를 Visual Basic에서 공유 키워드를 사용하여 정적으로 구성했기 때문에 클래스 섹션 대신 참조 섹션을 사용합니다.
  5. 참조 추가 대화 상자에서 찾아보기를 누릅니다. SQL Server 2005의 경우 찾아보기 탭을 누릅니다.
  6. 사용자 지정 어셈블리를 찾아 누릅니다. 열기를 누릅니다. SQL Server 2005에서는 열기 대신 추가를 누릅니다.
  7. 참조 추가 대화 상자에서 확인을 누릅니다.
  8. 보고서 속성 대화 상자에서 확인을 누릅니다.
이제 Reporting Services에서 사용자 지정 어셈블리를 사용할 수 있습니다.
  1. 보고서 디자이너에서 보고서(.rdl 파일)를 엽니다.
  2. Reporting Services에서 사용자 지정 어셈블리를 사용하는 방법을 보여 주려면 텍스트 상자를 추가합니다. 이렇게 하려면 도구 상자에서 보고서로 빈 텍스트 상자를 끄십시오.
  3. 텍스트 상자 속성에서 속성을 누른 후 다음 구문을 사용하여 함수를 호출합니다.
    =ClassLibraryName.ClassName.MethodName or Namespace.ClassName.MethodName
    이 문서의 예제에서는 다음을 지정합니다.
    =SimpleClassLibrary.Class1.DoSomething()
    Reporting Services에서는 다양한 형식을 사용하여 코드를 참조합니다. 예를 들어, 포함된 코드를 호출하는 경우 다음 형식을 사용합니다.
    =Code.MethodName()
    사용자 지정 어셈블리 내에서 인스턴스를 사용하여 정적이지 않거나 인스턴스 기반 메서드를 호출하는 경우 다음 형식을 사용합니다.
    =Code.InstanceName.Method
    참고 인스턴스 기반 메서드를 사용하려는 경우에는 참조를 다른 방식으로 설정해야 합니다. 이렇게 하려면 보고서 속성 대화 상자에서 참조 탭을 누른 다음 클래스 섹션에서 클래스 이름과 인스턴스 이름을 지정해야 합니다.

사용자 지정 어셈블리에 추가 권한이 필요한 경우의 코드 액세스 보안

사용자 지정 어셈블리에 기본 실행 수준 권한보다 많은 권한이 필요하면 일부 코드 액세스 보안을 변경해야 합니다. 코드 액세스 보안과 관련된 권한 문제가 발생하면 사용자 지정 어셈블리에서 예상한 결과 대신 "#Error"가 나타날 가능성이 높습니다. 이 문제가 발생하는지 여부를 확인하기 위해 수행할 수 있는 몇 가지 간단한 단계와 사용자 지정 어셈블리에 추가 권한을 부여하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
842419 Reporting Services에서 보고서에 참조되는 사용자 지정 어셈블리에 권한을 부여하는 방법
참고 다음 방법은 코드 액세스 보안 문제가 발생하는지 여부를 확인하는 데 도움이 되는 테스트입니다. 이 방법은 사용자 지정 어셈블리에 완전 신뢰 권한을 부여하므로 사용하지 않는 것이 좋습니다.

사용자 지정 어셈블리에 대한 코드 그룹을 새로 만든 다음 완전 신뢰 권한을 부여합니다. 이렇게 하려면 Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\rssrvpolicy.config 파일을 열고 다음 코드를 추가하십시오.
<CodeGroup class="UnionCodeGroup"
   version="1"
   PermissionSetName="FullTrust"
   Name="MyCodeGroup"
   Description="Code group for my data processing extension">
      <IMembershipCondition class="UrlMembershipCondition"
         version="1"
         Url="C:\pathtocustomassembly\customassembly.dll"
       />
</CodeGroup>
코드 그룹에 이 권한 집합을 할당하는 대신 보다 구체적인 권한 집합을 만드는 것이 좋습니다. 이 문서는 사용자 지정 어셈블리를 실행하기 위한 것이므로 여기에는 보다 자세한 정보가 필요합니다.

참고 일반적으로 사용자 지정 어셈블리는 보고서 디자이너에서 올바로 작동하지만 보고서 서버에서 사용자 지정 어셈블리를 배포한 다음 실행하려고 하면 기본 실행 수준 권한이 충분하지 않을 수 있습니다. 이는 일반적으로 보고서 디자이너에서 사용자 지정 어셈블리가 "완전 신뢰" 권한으로 실행되기 때문입니다. 그러나 보고서 서버에 보고서를 배포할 때 보고서 서버에 부여되는 기본 권한이 실행 수준으로 설정됩니다. 이 문제가 발생하면 사용자 지정 어셈블리에서 예상한 결과 대신 보고서 컨트롤에 "#Error"가 표시될 가능성이 높습니다.

포함된 코드

포함된 코드는 보고서 속성 대화 상자의 코드 섹션에서 작성되는 코드로, 보고서 내에서 코드가 여러 번 호출되는 경우에 유용합니다. 여러 보고서에서 코드를 다시 사용하려는 경우에는 사용자 지정 어셈블리를 사용하는 것이 좋습니다. 포함된 함수를 만들려면 다음과 같이 하십시오.
  1. 보고서 메뉴에서 보고서 속성을 누릅니다.
  2. 보고서 속성 대화 상자에서 코드 탭을 누릅니다.
  3. 다음 함수를 추가한 다음 확인을 누릅니다.
    Public Function EmbeddedFunction() as String
     	Return "this is from embedded code function"
    End Function
    
  4. 보고서에 새 텍스트 상자를 추가합니다.
  5. 속성에 다음을 추가합니다.
    =code.EmbeddedFunction
끝으로 이 문서를 작성하기 위해 고생한 John에게 감사의 말씀 드립니다. John은 SQL Server를 비롯한 여러 Microsoft 개발 언어에 대한 깊은 지식을 갖고 있으며 기꺼이 고객과 함께 어려운 문제들을 해결하기 위해 최선을 다하고 있습니다. 지금까지 이 달의 칼럼에 대한 내용이었습니다. 끝까지 읽어 주셔서 감사합니다. 언제라도 요청(Ask For It) 양식을 사용하여 향후 칼럼이나 기술 자료에서 다루었으면 하는 항목에 대한 의견을 보내주시기 바랍니다.



Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 920769 - 마지막 검토: 2007년 12월 26일 수요일 - 수정: 1.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft SQL Server 2005 Reporting Services
  • Microsoft SQL Server 2000 Reporting Services
키워드:?
kbhowto KB920769

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com