ฉันต้องใช้ DLL บุคคลที่สามในรหัสทริกเกอร์ c # ใน SQL Server CLR
แต่เมื่อฉันพยายามที่จะเพิ่มการอ้างอิงก็แค่แสดงบาง DLLs จาก SQL Server
ฉันจะเพิ่มdll ของ บริษัท อื่นลงใน SQL Server ได้อย่างไร
ฉันต้องใช้ DLL บุคคลที่สามในรหัสทริกเกอร์ c # ใน SQL Server CLR
แต่เมื่อฉันพยายามที่จะเพิ่มการอ้างอิงก็แค่แสดงบาง DLLs จาก SQL Server
ฉันจะเพิ่มdll ของ บริษัท อื่นลงใน SQL Server ได้อย่างไร
คำตอบ:
คุณสามารถเพิ่มการอ้างอิงไปยังแอสเซมบลีเหล่านั้นซึ่งได้ลงทะเบียนกับ SQL Server หากพวกเขาไม่ได้ลงทะเบียนพวกเขาจะไม่ปรากฏในกล่องโต้ตอบเพิ่มการอ้างอิง
มีหลายขั้นตอนที่คุณจะต้องลงทะเบียน DLL ก่อนอื่นคุณจะต้องกำหนดค่าฐานข้อมูลของคุณใหม่:
ALTER DATABASE [MyDatabase] SET TRUSTWORTHY ON;
sp_configure 'clr enabled', 1;
RECONFIGURE;
เมื่อเสร็จสิ้นแล้ว SQL Server จะเปิดใช้งาน CLR ถัดไปคุณจะต้องลงทะเบียนชุดประกอบของคุณ:
CREATE ASSEMBLY [MyAssembly] AUTHORIZATION [MyUser]
FROM 'C:\CLR\MyAssembly.dll'
WITH PERMISSION_SET = SAFE
หากสคริปต์สุดท้ายนี้ทำงานอย่างถูกต้องจะมีการลงทะเบียนชุดประกอบและจะปรากฏในกล่องโต้ตอบเพิ่มการอ้างอิง
สิ่งที่คุณจะต้องพิจารณาคือความปลอดภัยของแอพพลิเคชันของการกำหนดค่า SQL Server ของคุณ:
SAFE
เฉพาะในกรณีพิเศษที่คุณควรใช้หรือEXTERNAL_ACCESS
UNSAFE
Assembly.Load()
จำกัด อย่างเด็ดเดี่ยวUNSAFE
ไลบรารี่ของบุคคลที่สามนั้นถูกเซ็นด้วยกุญแจสาธารณะหากคุณวางแผนที่จะใช้context connection = true;
) จะทำงานในบริบทของผู้ใช้ที่เชื่อมต่อดังนั้นคุณต้องแน่ใจว่าคุณทราบว่าการเข้าถึงห้องสมุดนั้นมีข้อมูลของคุณฉันสมมติว่าคุณกำลังถามเกี่ยวกับทางเลือกในการติดตั้งชุดประกอบ SQL CLR จาก Visual Studio
ไม่จำเป็นต้องมีรหัสใน Visual Studio
การปรับใช้วัตถุฐานข้อมูล CLRบน MSDN ให้รายละเอียดตัวเลือกรวมถึงคำสั่ง SQL และสคริปต์การปรับใช้
ฉันใช้ DLL บุคคลที่สามที่มีขนาดใหญ่มากซึ่งใช้เว็บเพจและแปลงเป็น PDF
PDF จะถูกบันทึกไว้ในการแชร์ไฟล์และฐานข้อมูลจะได้รับการอัปเดตตามที่ตั้งและประเภทของมัน
นี่เป็นกระบวนการ 3 ขั้นตอน:
สร้างแอปคอนโซลที่ใช้ DLL บุคคลที่สามเพื่อสร้าง PDF และยอมรับ URL และ FilePath เป็นพารามิเตอร์และส่งคืนขนาด PDF และจำนวนหน้า
สร้างโพรซีเดอร์ที่เก็บ CLR จากนั้นเรียกแอปคอนโซลบนเซิร์ฟเวอร์
ฉันห่อมันทั้งหมดไว้ในขั้นตอนการจัดเก็บเดียวที่เรียกแอป CLR เพื่อสร้าง PDF แล้วฉันจะเขียน meta-data เกี่ยวกับมันไปยังฐานข้อมูล
ฉันรู้ว่านี่ไม่สมบูรณ์แบบและไม่ควรทำอะไรที่บ้าคลั่งในไกปืน!
ฉันแค่พูดถึงที่นี่สำหรับผู้อื่นที่มีคำถามเกี่ยวกับการใช้ Third Party DLL ใน CLR ของพวกเขา
ความหวังของฉันคือโดยการหมุนคอนโซล cmd.exe เพื่อเรียกใช้ 3rd Party DLL แทนที่จะเรียกใช้ทุกอย่างใน proc หากเกิดปัญหาจะไม่ส่งผลเสียต่อ SQL Server มากนัก นั่นคือสิ่งที่ฉันหวัง
โปรดแสดงความคิดเห็นว่านี่เป็นวิธีการที่ไม่ดีจริงหรือไม่