วิธีการใช้แอสเซมบลีที่กำหนดเองหรือรหัสที่ฝังตัวในบริการรายงาน

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 920769 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
sql Server สนับสนุนเสียงคอลัมน์

วิธีการใช้แอสเซมบลีที่กำหนดเองหรือรหัสที่ฝังตัวในบริการรายงาน

เมื่อต้องการกำหนดคอลัมน์นี้กับความต้องการของคุณ เราต้องการเชิญให้คุณส่งของแนวคิดเกี่ยวกับหัวข้อที่สนใจการตัดสินค้าจากคลังที่คุณต้องการดูและคุณ ระบุในอนาคตบทความในฐานความรู้และคอลัมน์ของบริการเสียง คุณสามารถส่งแนวคิดและของคุณโดยใช้ผลป้อนกลับถามอย่างได้แบบฟอร์ม มีอยู่ด้วยการเชื่อมโยงไปยังแบบฟอร์มที่ด้านล่างของคอลัมน์นี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

ยินดีต้อนรับกลับ ฉัน Sandy Yakob กับทีม Microsoft SQL Server เนื้อหา ฉัน hostess ของคุณสำหรับคอลัมน์เสียงสนับสนุนเซิร์ฟเวอร์ SQL หมายเหตุเกี่ยวกับฉันอย่างรวดเร็ว: ฉันได้รับกับ Microsoft ได้สำหรับปี 14 สำหรับผ่านมาสามปี ฉันได้รับงานกับทีม SQL Server เนื้อหา

สำหรับคอลัมน์ของเดือนนี้ สมชาย Sirmon จะแจ้งขั้นตอนการใช้แอสเซมบลีที่กำหนดเองหรือรหัสที่ฝังตัวในบริการรายงานของ SQL Server 2000 และบริการรายงานของ SQL Server 2005 บทความนี้ถูกออกแบบมาเพื่อให้ขั้นตอนพื้นฐานในการรับคุณอัพและรัน ด้วยแอสเซมบลีที่กำหนดเองในบริการรายงาน john คือ วิศวกรการ จัด การสนับสนุนกับทีมสนับสนุนนักพัฒนา SQL ที่ Microsoft และทำงานสำหรับ Microsoft ตั้งแต่ 2001 มีนาคม เขาทำงานกับ SQL Server สำหรับเกิน 10 ปี และมีการพัฒนาที่หลากหลายประสบกับ Microsoft Visual Studio john ยังคงเป็นองศา S. B. ในธุรกิจการดูแลจาก Citadel The เขายังเก็บใบรับรองที่ Microsoft รับรองโซลูชันสำหรับนักพัฒนา (MCSD) และใบรับรองที่ Microsoft รับรองฐานข้อมูลผู้ดูแล (MCDBA) ฉัน hope ให้คุณเพลิดเพลินกับคอลัมน์ และการค้นหาประโยชน์

สร้างแอสเซมบลีที่กำหนดเอง

เมื่อต้องการสร้างแอสเซมบลีที่กำหนดเอง ดำเนินการดังต่อไปนี้:
  1. สร้างไลบรารีของคลา Visual Studio ในการแฟ้ม:เมนู ให้ชี้ไปที่ใหม่ชี้ไปที่Projectแล้ว คลิกไลบรารีคลาส.
  2. ระบุชื่อและตำแหน่งที่ตั้ง ตัวอย่างเช่น ฉันจะสามารถใช้ 2005\projects SimpleClassLibrary และ C:\Documents Settings\user1\My Documents\Visual Studio
  3. เปิดแฟ้มคลา (ในตัวของฉันพิมพ์ Class1.vb), และสร้างฟังก์ชันที่คุณต้องการใช้ในบริการรายงาน ในกรณีของฉัน ฉันเพิ่งสร้างฟังก์ชันใช้ร่วมกันแบบธรรมดาหนึ่ง

    หมายเหตุ:เนื่องจากเป็นฟังก์ชันใช้ร่วมกัน (สแตติกใน c#), เราไม่มีการเข้าถึง โดยใช้วัตถุ instantiated เก็บนี้โปรดระลึกไว้ ตามที่ซึ่งมีลักษณะพิเศษบนวิธีเราอ้างอิงแอสเซมบลีของเราในบทความในภายหลัง
    Public Class Class1
    
        Public Shared Function DoSomething() As String
            Return "string data returned from custom assembly"
        End Function
    
    End Class
    
  4. เมื่อคุณเพิ่มรหัสทั้งหมดเสร็จเรียบร้อยแล้ว คลิกสร้าง SimpleClassLibraryในการการสร้างเมนู ขั้นตอนนี้ให้สร้างแอสเซมบลีหรือ.dll ที่ได้รับการจัดการในโฟลเดอร์ช่องเก็บที่เกี่ยวข้อง ในตัวอย่างของฉัน ขั้นตอนนี้สร้างประกอบของฉัน SimpleClassLibrary.dll ในโฟลเดอร์ SimpleClassLibrary\bin\Debug 2005\Projects\ Studio Documents\Visual ของฉัน

การคัดลอกแอสเซมบลีที่กำหนดเองไปยังโฟลเดอร์บริการรายงานของ SQL

ตรวจสอบแอสเซมบลีของคุณพร้อมใช้งานการออกแบบรายงานและเซิร์ฟเวอร์รายงานในบริการรายงาน เมื่อต้องการทำเช่นนี้ คุณต้องคัดลอก.dll ของคุณ ไปยังโฟลเดอร์ของตัวออกแบบรายงาน และ ไปยังโฟลเดอร์เซิร์ฟเวอร์รายงาน

หมายเหตุ:เส้นทางอาจมีสักอื่น ขึ้นอยู่กับเส้นทางการติดตั้งของคุณ
  • สำหรับการรายงานบริการ 2005 คัดลอก.dll ไปยังโฟลเดอร์ต่อไปนี้:
    • โปรแกรม Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies
    • โปรแกรม Services\ReportServer\bin Server\MSSQL.3\Reporting SQL Files\Microsoft
  • สำหรับการรายงานบริการ 2000 คัดลอก.dll ไปยังโฟลเดอร์ต่อไปนี้:
    • โปรแกรม Files\Microsoft SQL Server\80\Tools\Report ตัวออกแบบ
    • โปรแกรม Services\ReportServer\bin Server\MSSQL\Reporting SQL Files\Microsoft
หมายเหตุ:เนื่องจากคุณจำเป็นต้องทำเช่นนี้ทุกครั้งคุณเปลี่ยนรหัส สามารถเป็นหมายสัก tedious นักพัฒนาจำนวนมากสร้างแฟ้มชุดงานนี้ในการจัดการ แฟ้มชุดตัวอย่างคุณสามารถใช้ได้
@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"
โดยปกติฉันจัดการงานนี้ โดยการสร้างเหตุการณ์ post-build ที่กำหนดเองในโครงการของฉัน เมื่อต้องการทำเช่นนี้ ไปที่คุณสมบัติของโครงการของคุณ คลิกถัดไป การการคอมไพล์แท็บ แล้วคลิกสร้างเหตุการณ์. ซึ่งเปิดในสร้างเหตุการณ์กล่องโต้ตอบ เลือกบรรทัดคำสั่งเหตุการณ์ post-buildจากนั้น พิมพ์ต่อไปนี้:
การคัดลอก "$ (TargetPath)" "8\Common7\IDE\PrivateAssemblies\ C:\Program Files\Microsoft Visual Studio"
การคัดลอก "$ (TargetPath)" "C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin\"
ซึ่งใช้แมโคร post-build เพื่อระบุตำแหน่งที่ตั้งของแอสเซมบลีของฉัน สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสร้างเหตุการณ์ post-build แวะไปที่เว็บไซต์ของ Microsoft สำหรับนักพัฒนาเครือข่าย (MSDN) ต่อไปนี้:
http://msdn2.microsoft.com/en-us/library/42x5kfw4.aspx

การเพิ่มการอ้างอิงถึงแอสเซมบลีที่กำหนดเองในบริการรายงาน

เมื่อต้องการเพิ่มการอ้างอิงถึงแอสเซมบลีที่กำหนดเองของคุณ เปิดรายงานบริการรายงานในโปรแกรมออกแบบรายงาน โดยให้ทำตามขั้นตอนต่อไปนี้::
  1. เปิดรายงานที่จะเป็นการอ้างอิงแอสเซมบลีที่กำหนดเอง
  2. ในการรายงานเมนู คลิกคุณสมบัติของรายงาน.
  3. ในการคุณสมบัติของรายงานกล่องโต้ตอบ คลิกการอ้างอิง:แท็บ
  4. ภายใต้อ้างอิง:คลิก(จุดไข่ปลา...) ที่อยู่ถัดจากปุ่มนั้นชื่อแอสเซมบลีส่วนหัวของคอลัมน์

    หมายเหตุ:กระบวนการระดับชั้นส่วนที่อยู่สำหรับใช้อินสแตนซ์สมาชิกเท่านั้น คุณไม่ได้สำหรับสมาชิกแบบคงที่ คงที่ (นอกจากนี้เรียกว่า "ที่ใช้ร่วมกัน" ในบางส่วนของเอกสารบริการรายงานของเรา) หมายความ ว่า สมาชิกพร้อมใช้งานสำหรับทุก ๆ อินสแตนซ์ของคลา และอินสแตนซ์ทั้งหมดที่ใช้ตำแหน่งที่เก็บที่เหมือนกัน สมาชิกแบบคงที่จะประกาศ โดยใช้คำสำคัญที่ใช้ร่วมกันใน Microsoft Visual Basic และคำสำคัญสแตติกใน c# ซึ่งจะมีความสับสน สิ่งนี้หมายความ เป็น ถ้าแอสเซมบลีที่กำหนดเองของคุณประกอบด้วยอินสแตนซ์สมาชิกที่คุณต้องการเข้าถึง คุณจะต้องระบุชื่อคลาสและชื่ออินสแตนซ์ในนั้นระดับชั้นส่วน เนื่องจากวิธีการฉันจะสามารถเรียกจาก บริการรายงานถูกกำหนดเป็นสแตติก โดยใช้คำสำคัญที่ใช้ร่วมกันใน Visual Basic ฉันจะใช้ได้อ้างอิง:ส่วนการแทนระดับชั้นส่วน
  5. ในการเพิ่มการอ้างอิงกล่องโต้ตอบ คลิกเรียกดู. (ใน SQL Server 2005 คลิกการเรียกดูแท็บ)
  6. Locate and then click the custom assembly. คลิกOPEN. (In SQL Server 2005, clickaddแทนOPEN.)
  7. ในการเพิ่มการอ้างอิงกล่องโต้ตอบ คลิกตกลง.
  8. ในการคุณสมบัติของรายงานกล่องโต้ตอบ คลิกตกลง.
We are now ready to use the custom assembly in Reporting Services.
  1. Open the report (an .rdl file) in Report Designer.
  2. To demonstrate how to use the custom assembly in Reporting Services, add a text box. To do this, drag a blank text box from the toolbox to the report.
  3. In the text box properties, click theค่าproperty, and then call a function by using the following syntax.
    =ClassLibraryName.ClassName.MethodName or Namespace.ClassName.MethodName
    In my example, I specified the following.
    =SimpleClassLibrary.Class1.DoSomething()
    Other formats are used to reference code in Reporting Services. For example, use the following format if you call embedded code.
    =Code.MethodName()
    If you call a non-static, or instance-based, method from within a custom assembly by using an instance, use the following format.
    =Code.InstanceName.Method
    หมายเหตุ:You would have set up your reference differently if you wanted to use an instance-based method. To do this, you would need to go toคุณสมบัติของรายงานคลิกการอ้างอิง:tab, and then specify the class name and the instance name in theระดับชั้นส่วน

Code access security if the custom assembly requires additional permissions

If the custom assembly requires more permissions than the default Execution level permissions, you must make some code access security changes. If a permissions issue with code access security occurs, you will most likely see "#Error" from your custom assembly instead of the expected results. For a few quick steps that you can perform to determine if this problem is occurring, and for detailed instructions about how to grant additional permissions to your custom assembly, click the following article number to view the article in the Microsoft Knowledge Base:
842419วิธีการให้สิทธิ์กับแอสเซมบลีแบบกำหนดเองที่ถูกอ้างถึงในรายงานในบริการรายงาน
หมายเหตุ:The following approach is a test to help determine if code access security issues are occurring. We do not recommend that you use the following approach because it grants full trust permissions to your custom assembly.

สร้างแบบ CodeGroup ใหม่สำหรับแอสเซมบลีที่กำหนดเองของคุณ และจากนั้น ให้สิทธิ์ในการเชื่อถือแบบเต็ม เมื่อต้องการทำเช่นนี้ เปิดแฟ้มโปรแกรม 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>
เราขอแนะนำให้ คุณสร้างสิทธิ์เฉพาะที่ตั้งแทนที่การกำหนดให้กับกลุ่มของรหัสการตั้งค่าการอนุญาตนี้ บทความนี้เป็นผู้รับคุณอัพ และรัน ด้วยแอสเซมบลีที่กำหนดเอง และต้องการรายละเอียดเพิ่มเติม

หมายเหตุ:แอสเซมบลีที่กำหนดเองมักจะทำกับในโปรแกรมออกแบบรายงาน อย่างไรก็ตาม คุณอาจพบว่า เมื่อคุณปรับใช้ และพยายามเรียกใช้แอสเซมบลีที่กำหนดเองในเซิร์ฟเวอร์รายงาน สิทธิ์ระดับดำเนินการเริ่มต้นที่อยู่ไม่เพียงพอ เหตุผลสำหรับการซึ่ง มี ตามค่าเริ่มต้น การออกแบบรายงานเรียกใช้แอสเซมบลีที่กำหนดเอง ด้วยสิทธิ์ "FullTrust" อย่างไรก็ตาม เมื่อคุณปรับใช้รายงานของคุณไปยังเซิร์ฟเวอร์รายงาน สิทธิ์ในการเริ่มต้นที่ได้รับในเซิร์ฟเวอร์รายงานถูกตั้งค่าระดับการปฏิบัติงาน หากปัญหานี้เกิดขึ้น คุณจะเห็น "#Error" ในการควบคุมรายงานแทนผลลัพธ์ที่คาดไว้จากแอสเซมบลีที่กำหนดเองเป็นไปได้มากที่สุด

รหัสที่ฝังตัว

รหัสที่ฝังตัวมีรหัสที่เขียนขึ้นในการรหัสส่วนนี้คุณสมบัติของรายงานกล่องโต้ตอบ รหัสที่ฝังตัวมีตัวเลือกที่ดีสำหรับรหัสที่จะเรียกหลาย ๆ ครั้งภายในรายงานของคุณ ถ้าคุณต้องการที่นำมาใช้รหัสในรายงานหลาย แอสเซมบลีที่กำหนดเองได้อาจเป็นทางเลือกที่ดีกว่า สร้างฟังก์ชันฝังตัว ดำเนินการดังต่อไปนี้:
  1. ในการรายงานเมนู คลิกคุณสมบัติของรายงาน.
  2. ในการคุณสมบัติของรายงานกล่องโต้ตอบ คลิกการรหัสแท็บ
  3. ฟังก์ชันต่อไปนี้ในการเพิ่ม และจากนั้น คลิกตกลง.
    Public Function EmbeddedFunction() as String
     	Return "this is from embedded code function"
    End Function
    
  4. รายงาน เพิ่มกล่องข้อความใหม่
  5. เพิ่มต่อไปนี้เพื่อค่าคุณสมบัติ
    =code.EmbeddedFunction
ฉันต้องการขอบคุณ John สำหรับเขางานฮาร์ดดิสก์ในบทความนี้ เขามีประสบการณ์เชิงลึกใน SQL Server และหลายภาษาของการพัฒนา Microsoft และ enjoys ทำงานกับลูกค้า และการแก้ไขปัญหาได้ยาก hope คุณ enjoyed หัวข้อของเดือนนี้ ขอบคุณสำหรับการอ่าน ตามที่ได้รับการเสมอ feel ว่างส่งแนวคิดในหัวข้อที่คุณต้องจัดการในอนาคตคอลัมน์ หรืออยู่ ในฐานความรู้ใช้นั้นถามอย่างได้แบบฟอร์ม

คุณสมบัติ

หมายเลขบทความ (Article ID): 920769 - รีวิวครั้งสุดท้าย: 16 มกราคม 2554 - Revision: 4.0
ใช้กับ
  • Microsoft SQL Server 2005 Reporting Services
  • Microsoft SQL Server 2000 Reporting Services
Keywords: 
kbhowto kbmt KB920769 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:920769

ให้ข้อเสนอแนะ

 

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