คำถามติดแท็ก sql-clr

SQL CLR คือการใช้งาน Common-Language-Runtime สำหรับ SQL Server ใช้แท็กนี้สำหรับคำถามเกี่ยวกับวิธีการใช้งานและแก้ไขปัญหา SQLCLR บน Microsoft SQL Server

4
วิธีที่ปรับขนาดได้เพื่อจำลอง HASHBYTES โดยใช้ฟังก์ชันสเกลาร์ SQL CLR คืออะไร?
เป็นส่วนหนึ่งของกระบวนการ ETL ของเราเราเปรียบเทียบแถวจากการจัดเตรียมกับฐานข้อมูลการรายงานเพื่อคำนวณว่าคอลัมน์ใดมีการเปลี่ยนแปลงจริงหรือไม่นับตั้งแต่ข้อมูลถูกโหลดครั้งล่าสุด การเปรียบเทียบจะขึ้นอยู่กับคีย์เฉพาะของตารางและการแฮชบางประเภทของคอลัมน์อื่นทั้งหมด ขณะนี้เราใช้HASHBYTESกับอัลกอริทึมและได้พบว่ามันไม่ได้ขนาดบนเซิร์ฟเวอร์ขนาดใหญ่ถ้าหลายเธรดพร้อมกันมีการโทรทั้งหมดSHA2_256HASHBYTES ปริมาณงานที่วัดเป็นแฮชต่อวินาทีจะไม่เพิ่มเธรดที่เกิดขึ้นพร้อมกัน 16 เธรดเมื่อทดสอบบนเซิร์ฟเวอร์คอร์ 96 ฉันทดสอบโดยเปลี่ยนจำนวนMAXDOP 8ข้อความค้นหาที่เกิดขึ้นพร้อมกันจาก 1 - 12 การทดสอบด้วยMAXDOP 1แสดงให้เห็นถึงคอขวดที่สามารถปรับขยายได้แบบเดียวกัน วิธีแก้ปัญหาฉันต้องการลองใช้โซลูชัน SQL CLR นี่คือความพยายามของฉันในการระบุข้อกำหนด: ฟังก์ชั่นจะต้องสามารถมีส่วนร่วมในแบบสอบถามแบบขนาน ฟังก์ชั่นจะต้องกำหนดขึ้น ฟังก์ชั่นจะต้องรับอินพุตNVARCHARหรือVARBINARYสตริง (คอลัมน์ที่เกี่ยวข้องทั้งหมดถูกต่อกันเข้าด้วยกัน) ขนาดอินพุตปกติของสตริงจะมีความยาว 100 - 20000 อักขระ 20000 ไม่ใช่ค่าสูงสุด โอกาสของการชนกันของแฮชควรจะเท่ากับหรือดีกว่าอัลกอริทึม MD5 CHECKSUMใช้งานไม่ได้สำหรับเราเพราะมีการชนกันมากเกินไป ฟังก์ชันต้องขยายขนาดได้ดีบนเซิร์ฟเวอร์ขนาดใหญ่ (ปริมาณงานต่อเธรดไม่ควรลดลงอย่างมีนัยสำคัญเมื่อจำนวนเธรดเพิ่มขึ้น) สำหรับ Application Reasons ™ให้ถือว่าฉันไม่สามารถบันทึกค่าแฮชของตารางการรายงานได้ เป็น CCI ที่ไม่สนับสนุนทริกเกอร์หรือคอลัมน์ที่คำนวณได้ (มีปัญหาอื่น ๆ เช่นกันที่ฉันไม่ต้องการเข้าร่วม) วิธีที่ปรับขนาดได้เพื่อจำลองHASHBYTESโดยใช้ฟังก์ชัน SQL CLR คืออะไร …

3
การตั้งค่า CLR กลางที่เก็บ CLR โพรซีเดอร์ / ฟังก์ชันที่เก็บไลบรารีสำหรับ procs ที่จัดเก็บภายในในฐานข้อมูลอื่น ๆ ที่จะใช้?
ฉันต้องการใช้รหัสที่ฉันพัฒนาใน C # CLR เพื่อใช้ในฐานข้อมูลทั้งหมดในระบบเพื่อให้ฉันไม่ต้องตั้งค่าให้เชื่อถือได้และเปิด CLR และเก็บรหัสเดียวกันไว้ในแต่ละอัน . มีวิธีที่ดีที่สุดในการทำเช่นนี้จากมุมมองการบริหารและความปลอดภัย? ฟังก์ชัน CLR นั้นพื้นฐานมากเช่นตัวแบ่งสตริง, การตรวจสอบความถูกต้องของอีเมล, url en / decode, base64 และอื่น ๆ ฉันต้องการเฉพาะ dbo schema ในแต่ละฐานข้อมูลเพื่อให้สามารถเข้าถึงฟังก์ชันได้ มีวิธีง่าย ๆ ในการทำเช่นนี้? นอกจากนี้ฉันยังไม่ชัดเจนว่า CLR dll ถูกฝังอยู่หรือไม่และถ้าฉันย้ายฐานข้อมูลมันจะแท็กตามหรือฉันต้องย้าย dll ด้วยเช่นกัน ขอบคุณ

3
บุคคลที่สาม dll ใน SQL Server CLR
ฉันต้องใช้ DLL บุคคลที่สามในรหัสทริกเกอร์ c # ใน SQL Server CLR แต่เมื่อฉันพยายามที่จะเพิ่มการอ้างอิงก็แค่แสดงบาง DLLs จาก SQL Server ฉันจะเพิ่มdll ของ บริษัท อื่นลงใน SQL Server ได้อย่างไร
14 sql-server  c#  sql-clr 


2
การล่ม CLR บน SQL Server 2014 (windows 2012R2)
ฉันมี CLR ขนาดเล็กนี้ที่ทำหน้าที่ RegEX ในสตริงในคอลัมน์ เมื่อทำงานบน SQL Server 2014 (12.0.2000) บน Windows Server 2012R2 กระบวนการขัดข้อง ข่าวสารเกี่ยวกับ 0, ระดับ 11, สถานะ 0, บรรทัด 0 มีข้อผิดพลาดร้ายแรงเกิดขึ้นกับคำสั่งปัจจุบัน ควรยกเลิกผลลัพธ์หากมี และให้กองการถ่ายโอนข้อมูลถ้าฉันทำ select count (*) from table where (CLRREGEX,'Regex') แต่เมื่อฉันทำ select * from table where (CLRREGEX,'Regex') มันจะส่งคืนแถว ทำงานได้อย่างสมบูรณ์บน SQL Server รุ่นเดียวกับที่ทำงานบน Windows 8.1 ความคิดใด ๆ - …

2
การจัดเก็บที่อยู่ IP - varchar (45) vs varbinary (16)
ฉันจะสร้างตารางที่มีสองช่อง - IDเป็นBIGINTและIPAddressเป็นอย่างใดอย่างหนึ่งหรือvarchar(45) varbinary(16)แนวคิดคือการจัดเก็บที่อยู่ IP ที่ไม่ซ้ำกันทั้งหมดและใช้การอ้างอิงIDแทนจริงIP addressในตารางอื่น ๆ โดยทั่วไปฉันจะสร้างการจัดเก็บที่กลับมาIDสำหรับการรับIP addressหรือ (ถ้าอยู่ไม่พบ) IDแทรกอยู่และกลับที่สร้างขึ้น ฉันคาดหวังว่าจะมีบันทึกจำนวนมาก (ฉันไม่สามารถบอกได้อย่างชัดเจนว่ามีจำนวนเท่าใด) แต่ฉันต้องการขั้นตอนการจัดเก็บด้านบนเพื่อดำเนินการโดยเร็วที่สุด ดังนั้นฉันจึงสงสัยว่าจะเก็บที่อยู่ IP จริงไว้อย่างไรในรูปแบบข้อความหรือไบต์ อันไหนจะดีกว่ากัน? ฉันได้เขียนSQL CLRฟังก์ชันสำหรับแปลงที่อยู่ IP เป็นสตริงและย้อนกลับดังนั้นการแปลงจึงไม่ใช่ปัญหา (ทำงานกับทั้งสองIPv4และIPv6) ฉันเดาว่าฉันต้องสร้างดัชนีเพื่อปรับการค้นหาให้เหมาะสม แต่ฉันไม่แน่ใจว่าฉันควรรวมIP addressฟิลด์ไว้ในดัชนีกลุ่มหรือเพื่อสร้างดัชนีแยกต่างหากและการค้นหาประเภทใดจะเร็วขึ้น

2
ความเสี่ยงด้านความปลอดภัยหรือประสิทธิภาพการใช้ SQL CLR [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา มีความเสี่ยงด้านความปลอดภัยหรือประสิทธิภาพโดยเฉพาะอย่างยิ่งในการใช้ CLR ใน SQL Server หรือไม่?

2
นอกเหนือจากการรีสตาร์ท SQL Server มีวิธีใดที่จะบังคับให้ SQLCLR AppDomain ถูกรีเซ็ตหรือไม่
ฉันต้องการบังคับให้ AppDomain ใช้ SQLCLR เพื่อทำการรีเซ็ต ฉันจะทำสิ่งนั้นนอกเหนือจากการรีสตาร์ทอินสแตนซ์ SQL Server ได้อย่างไร

1
SQLCLR ชนิดรอในการตรวจสอบกิจกรรมภายใน SQL Server Management Studio (SSMS) คืออะไร
เมื่อฉันตรวจสอบเซิร์ฟเวอร์ SQL Prod ของฉันทุกครั้งที่ฉันเปิดการตรวจสอบกิจกรรมฉันจะเห็นSQLCLRรายการแรกในส่วนรอทรัพยากรในการตรวจสอบกิจกรรม มันมีจำนวนสูงเสมอ มีSQLCLRไว้เพื่ออะไร มันจะไม่ดีสำหรับเซิร์ฟเวอร์ที่SQLCLRมีจำนวนรอทรัพยากรสูงในการตรวจสอบกิจกรรม?

1
เห็นได้ชัดว่าฟังก์ชั่นการประกอบ CLR ของฉันทำให้เกิดการหยุดชะงัก
แอปพลิเคชันของเราต้องทำงานอย่างเท่าเทียมกันกับฐานข้อมูล Oracle หรือฐานข้อมูล Microsoft SQL Server เพื่ออำนวยความสะดวกในเรื่องนี้เราได้สร้าง UDF จำนวนหนึ่งเพื่อทำให้ไวยากรณ์การสืบค้นของเราเป็นเนื้อเดียวกัน ตัวอย่างเช่น SQL Server มี GETDATE () และ Oracle มี SYSDATE พวกเขาทำหน้าที่เดียวกัน แต่เป็นคำที่ต่างกัน เราเขียน wrapper UDF ชื่อ NOW () สำหรับทั้งสองแพลตฟอร์มซึ่งล้อมรอบไวยากรณ์เฉพาะแพลตฟอร์มที่เกี่ยวข้องในชื่อฟังก์ชันทั่วไป เรามีฟังก์ชั่นอื่น ๆ ซึ่งบางส่วนไม่ทำอะไรเลย แต่มีอยู่เพียงเพื่อความเป็นเนื้อเดียวกัน น่าเสียดายที่ค่าใช้จ่ายนี้สำหรับ SQL Server UDF สเกลาร์แบบอินไลน์สร้างความหายนะต่อประสิทธิภาพและปิดการใช้งานความขนานอย่างสมบูรณ์ เป็นทางเลือกเราเขียนฟังก์ชันการประกอบ CLR เพื่อให้บรรลุเป้าหมายเดียวกัน เมื่อเราปรับใช้สิ่งนี้กับลูกค้าพวกเขาเริ่มประสบกับการหยุดชะงักบ่อยครั้ง ลูกค้ารายนี้ใช้การจำลองแบบและเทคนิคความพร้อมใช้งานสูงและฉันสงสัยว่ามีการโต้ตอบบางอย่างเกิดขึ้นที่นี่หรือไม่ ฉันไม่เข้าใจว่าการแนะนำฟังก์ชัน CLR จะทำให้เกิดปัญหาเช่นนี้ได้อย่างไร สำหรับการอ้างอิงฉันได้รวมข้อกำหนด UDF สเกลาร์ต้นฉบับไว้รวมถึงข้อกำหนดการแทนที่ CLR ใน …

2
hierarchyid CLR โอเพ่นซอร์สหรือไม่
ลำดับชั้นในตัวคือ CLR ที่เก็บพา ธ ในรูปแบบไบนารีที่มีประสิทธิภาพและมีฟังก์ชันการทำงานที่มีประโยชน์อื่น ๆ โชคไม่ดีที่มีขีด จำกัด ว่าเส้นทางที่นำเสนอจะมีความลึกเพียงใดและเป็น ~ 1427 สำหรับต้นไม้ไบนารี ฉันต้องการเพิ่มขีด จำกัด นั้นสำหรับแอปพลิเคชันที่มีอยู่ที่ซับซ้อนซึ่งผูกพันกับขีด จำกัด นี้ ฉันไม่ต้องการเปลี่ยนอินเทอร์เฟซของประเภท ฉันไม่มั่นใจว่าฉันสามารถดึงการเปลี่ยนอินเทอร์เฟซของประเภทนั้นได้โดยไม่ต้องแนะนำข้อบกพร่องเล็กน้อยให้กับโค้ดทั้งหมดที่จะต้องเปลี่ยนตามผล ฉันสามารถ (ในทางทฤษฎี) สร้าง "binhierarchyid" CLR UDT ที่ใช้อินเทอร์เฟซเดียวกับ hierarchyid แต่รองรับเฉพาะต้นไม้ไบนารี ที่ควรได้รับความลึกของฉัน ~ 7000 ในขณะที่ยังคงอยู่ภายในวงเงิน 900 ไบต์ ไม่แน่ใจว่ากิจการขนาดใหญ่จะเป็นเช่นไร มีแหล่งที่มาของลำดับชั้นนี้ CLR อยู่ที่ใดที่หนึ่งหรือไม่เพื่อที่ฉันจะสามารถสร้างของตัวเองโดยใช้โครงสร้างที่รองรับโครงสร้างที่ลึกกว่าได้

1
dm_exec_describe_first_result_set_for_object สำหรับชุดผลลัพธ์หลายชุด
มีขั้นตอนในการส่งคืนข้อมูลเมตาสำหรับชุดผลลัพธ์ทั้งหมดในกระบวนงานที่เก็บไว้หรือไม่ มีบางอย่างที่เหมือนsys.dm_exec_describe_first_result_set_for_objectกัน แต่สำหรับชุดผลลัพธ์ทั้งหมด ในที่สุดฉันจะต้องการค้นหาข้อมูลเมตาสำหรับทุกชุดผลลัพธ์ในทุกโพรซีเดอร์ที่เก็บในฐานข้อมูล สำหรับตอนนี้ฉันจะตัดสินให้เฉพาะชุดผลลัพธ์ที่sys.dm_exec_describe_first_result_set_for_objectไม่สามารถอธิบายได้ นั่นคือชุดผลลัพธ์ที่ 2, 3 และ Nth ดูที่การใช้ SQLCLR เพื่อทำสิ่งนี้ตอนนี้: วิธีบันทึกผลลัพธ์ของกระบวนงานที่มีชุดผลลัพธ์มากกว่าหนึ่งชุด - การทดสอบหน่วย DB สำหรับ SQL Server - ResultSetFilter.cs

3
ชุดประกอบ 'system.web รุ่น = 4.0.0.0, วัฒนธรรม = เป็นกลาง, publickeytoken = b03f5f7f11d50a3a' ไม่พบในแคตตาล็อก SQL
ฉันพยายามปรับใช้ฟังก์ชัน SQL CLR โดยใช้วิธี HTTPUtility.UrlDecode ของ System.Web แต่ฉันไม่สามารถปรับใช้ ได้รับข้อผิดพลาด: ผู้ให้บริการข้อมูล Net SqlClient: ข่าวสารเกี่ยวกับ 6503 ระดับ 16 สถานะ 12 แอสเซมบลีบรรทัดที่ 1 'system.web รุ่น = 4.0.0.0 วัฒนธรรม = เป็นกลาง publickeytoken = b03f5f7f11d50a3a' ไม่พบในแคตตาล็อก SQL ฟังก์ชั่น (เป็นส่วนหนึ่งของโครงการ SSDT): using System; using System.Web; using System.Data; using System.Data.SqlClient; using System.Data.SqlTypes; using Microsoft.SqlServer.Server; public partial class …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.