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

Microsoft SQL Server ทุกรุ่น (ไม่ใช่ MySQL) โปรดเพิ่มแท็กเฉพาะเวอร์ชันเช่น sql-server-2016 เนื่องจากมักเกี่ยวข้องกับคำถาม

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

3
“ ข้อความค้นหาต่างกัน” คืออะไร
ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้เกี่ยวกับแบบสอบถาม SQL ที่ฉันใช้ในโปรแกรม SQL Server 2005 T-SQL แบบสอบถามที่ต่างกันกำหนดให้มีการตั้งค่าANSI_NULLSและANSI_WARNINGSตัวเลือกสำหรับการเชื่อมต่อ สิ่งนี้ช่วยให้มั่นใจว่าความหมายของแบบสอบถามที่สอดคล้องกัน เปิดใช้งานตัวเลือกเหล่านี้แล้วออกแบบสอบถามของคุณอีกครั้ง (ความรุนแรง 16) การแก้ไขมันเป็นเรื่องง่ายตั้งค่าANSI_NULLSและANSI_WARNINGS ONแต่ฉันต้องการที่จะรู้ว่าแบบสอบถามที่แตกต่างกันคืออะไร การค้นหาของ Google แสดงผลลัพธ์หลายสิบรายการที่บอกให้ฉันตั้งค่าANSI_NULLSและANSI_WARNINGSไม่มีอะไรอธิบายว่าคำนั้นหมายถึงอะไร แบบสอบถามคือ: UPDATE SRV.DB.DBO.TABLE SET Column= (SELECT Column FROM SRV1.DB.DBO.TABLE) ฉันคิดว่านี่เป็นเพราะการเชื่อมต่อกับเอ็นจิ้นฐานข้อมูลหลายอันในเคียวรีเดียวเนื่องจากฉันไม่เคยได้รับข้อผิดพลาดนี้เลย "Heterogeneous" อ้างถึงการสืบค้นเอนจินฐานข้อมูลสองตัวในบริบทนี้หรือไม่?

3
การทดสอบความสามารถในการปรับขนาดของกระบวนงานที่เก็บไว้
ฉันมีแอปพลิเคชันอีเมลที่จะถูกส่งต่อไปยัง UI จำนวนข้อความใหม่สำหรับผู้ใช้ที่ระบุในการโหลดหน้าเว็บแต่ละหน้า ฉันมีหลายรูปแบบของสิ่งที่ฉันกำลังทดสอบในระดับ DB แต่ทั้งหมดจะถูกสรุปโดยการเรียก proc ที่เก็บไว้ ฉันพยายามกดฐานข้อมูลเพื่อดูว่าจุดแตกหัก (# ของคำขอต่อวินาที) จะเป็นอย่างไร โดยสรุปฉันมีตารางเช่น userId นี้ newMsgCount พร้อมกับดัชนีคลัสเตอร์บน userId SQL ควรสามารถตอบสนองต่อเซิร์ฟเวอร์เหล่านี้หลายร้อยหรือหลายพันต่อวินาที ฉันคิดว่าคนเกียจคร้านเป็นแอป. NET ของฉัน ฉันจะทำให้การทดสอบนี้เป็นผลการทดสอบที่ดีโดยใช้ประสิทธิภาพของ SQL ได้อย่างไร มีเครื่องมือสำหรับสิ่งนี้ที่ฉันสามารถให้ชื่อ proc ที่เก็บไว้และ param เพื่อให้ pund DB ของฉันหรือไม่ ฉันต้องการดูว่า DB สามารถส่งคืนนาทีได้หรือไม่ จาก 250 คำตอบต่อวินาที

3
เหตุใด SSMS จึงแทรกแถวใหม่ที่ด้านบนของตารางไม่ใช่ด้านล่าง
เมื่อใดก็ตามที่ฉันแทรกแถวลงในตารางด้วยตนเองใน SQL Server Management Studio 2008 (ฐานข้อมูลคือ SQL Server 2005) แถวใหม่ของฉันจะปรากฏที่ด้านบนของรายการมากกว่าด้านล่าง ฉันใช้คอลัมน์ข้อมูลประจำตัวและผลลัพธ์เช่นนี้ id row 42 first row 1 second row 2 third row เมื่อแถวถูกดึงออกมาและไม่ได้เรียงลำดับอย่างชัดเจน สิ่งนี้ส่งผลให้มีลักษณะที่แตกต่างเมื่อดึงแถวสำหรับเว็บแอปและเปลี่ยนสิ่งที่TOP 1แบบสอบถามส่งกลับ ฉันรู้ว่าฉันทำได้order byแต่ทำไมสิ่งนี้จึงเกิดขึ้น ข้อมูลส่วนใหญ่ของฉันถูกแทรกผ่านเว็บแอปพลิเคชันการแทรกทั้งหมดจากแอปพลิเคชันนี้ทำให้การสั่งซื้อครั้งแรกในครั้งแรกเช่นการแทรกครั้งล่าสุดอยู่ที่ด้านล่างดังนั้นรหัสทั้งหมดอยู่ในแถว มีการตั้งค่าบางอย่างในเซิร์ฟเวอร์หรือ Studio จัดการที่เป็นสาเหตุของการสั่งซื้อที่ไม่เหมาะสมนี้หรือไม่?

4
มีเครื่องมืออะไรบ้างในการสร้างข้อมูลทดสอบสำหรับ SQL Server
ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ อย่างที่คุณเห็นจากคำถามอื่นของฉันการสร้างข้อมูลทดสอบเป็นธีมของฉันในตอนนี้ ณ จุดนี้ฉันยังคงสร้างข้อมูลทดสอบด้วยมือ อย่างไรก็ตามกระบวนการนี้จะสร้างข้อมูลจำนวนเล็กน้อยเสมอ (โดยปกติจะเป็นแถวสิบห้าแถว) เนื่องจากเป็นกระบวนการที่ทำด้วยตนเอง มีเครื่องมือใดที่ทำให้กระบวนการนี้เป็นอัตโนมัติหรือไม่ โดยเฉพาะฉันต้องการสร้างแถว 1mil +

3
ฉันจะให้ SQL Server ส่งอีเมลรายละเอียดข้อผิดพลาดให้ฉันเมื่องานล้มเหลวได้อย่างไร
SQL Server ช่วยให้คุณกำหนดค่างานเพื่อส่งการแจ้งเตือนทางอีเมลเมื่อล้มเหลว นี่เป็นวิธีที่ง่ายและมีประสิทธิภาพในการตรวจสอบงานของคุณ อย่างไรก็ตามการแจ้งเตือนเหล่านี้จะไม่รวมถึงรายละเอียดใด ๆ - เพียงแค่แจ้งความสำเร็จหรือความล้มเหลว หากงานล้มเหลวนี่คือลักษณะของอีเมลเตือนทั่วไป: JOB RUN: 'DBA - Consistency Check Databases' was run on 8/14/2011 at 12:00:04 AM DURATION: 0 hours, 0 minutes, 0 seconds STATUS: Failed MESSAGES: The job failed. The Job was invoked by Schedule 2 (Nightly Before Backup 12AM). The last step …

1
รูปแบบการตั้งค่าการแบ่งส่วนสำหรับ SQL Server 2008 R2 เพื่อจัดการชุดข้อมูลขนาดใหญ่?
ฉันต้องการจัดการชุดข้อมูลขนาดใหญ่ (> 1 พันล้านแถว) ใน SQL Server 2008 R2 ฉันได้ยินมาว่าหากคุณตั้งค่า "การแบ่งส่วน" หรือ "การแบ่งพาร์ติชันแบบแนวนอน" จะทำให้สามารถจัดการชุดข้อมูลขนาดใหญ่ได้เร็วขึ้นเนื่องจากแบ่งตารางออกเป็นหลายไฟล์ คุณเคยใช้การแบ่งส่วนแนวนอนหรือแนวนอนมาก่อนหรือไม่ ถ้าเป็นเช่นนั้นคุณสามารถแนะนำรูปแบบใด ๆ ที่จากประสบการณ์ของคุณได้ผลลัพธ์ที่ดีกว่าเมื่อเปรียบเทียบกับตารางขนาดใหญ่เดียว?

5
ฉันจะค้นหามุมมองบันทึก 20 ล้านรายการนี้เร็วขึ้นได้อย่างไร
สำหรับฟังก์ชั่นการค้นหาฉันใช้มุมมองที่มีระเบียนจากตารางทั้งหมดที่ฉันต้องการค้นหา มุมมองมีเกือบ 20 ล้านบันทึก การค้นหามุมมองนี้ใช้เวลานานเกินไป ฉันควรปรับปรุงการทำงานของมุมมองนี้ที่ไหน คำจำกัดความคร่าวๆสำหรับมุมมองด้านล่าง ประกอบด้วยสิบสามตารางและรอบ ๆ สามสิบฟิลด์ CREATE VIEW [dbo].[v_AllForSearch] AS SELECT FT.firstField AS [firstField] , FT.fld_primary AS [fld_primary] , FT.fld_thirdField AS [thirdField] , FT.fld_fourthField AS [fourthField] , ISNULL(ST.[fld_firstSearchField],'') AS [firstSearchField] , ISNULL(TT.[fld_thirdSearch],'') AS thirdSearch , ISNULL(TT.[fld_fourthSearch],'')AS fourthSearch , ISNULL(TT.[fld_fifthSearch],'')AS fifthSearch , ISNULL(FRT.[fld_sixthSearch],'') As [sixthSearch] , ISNULL(FRT.[fld_seventhSearch],'') …

3
SQL Server - ชั่วคราวเทียบกับตารางทางกายภาพ
มีการเคลื่อนไหวอยู่ในสถานที่ของฉันจ้างเพื่อย้ายออกจากการใช้ตาราง #temp และแทนที่จะใช้ตารางทางกายภาพถาวรกับ SPID เมื่อใดก็ตามที่หนึ่งก่อนหน้านี้จะถูกแทรกลงในตาราง #temp ตอนนี้INSERT INTO dbo.MyPermanentTable (SPID, ...) VALUES (@@SPID, ...)จำเป็นต้องมี - พร้อมกับDELETE FROM dbo.MyPermanentTable WHERE SPID = @@SPIDคำสั่งที่จุดเริ่มต้นของเช่นขั้นตอนการจัดเก็บ นอกจากนี้มันจะไปได้ทุกที่โดยไม่บอกว่าเหล่านี้ตารางถาวรสำหรับการจัดเก็บข้อมูลชั่วคราว WHERE SPID = @@SPID'ถูกนำมาใช้อย่างใดอย่างหนึ่งต้องมีความระมัดระวังที่จะรวมถึง ตรรกะเบื้องหลังการย้ายไปสู่การปฏิบัตินี้คือมันจะปรับปรุงประสิทธิภาพโดยรวมของเซิร์ฟเวอร์ที่การสืบค้นกำลังทำงานอยู่ (โดยการลด I / O และการช่วงชิงใน tempdb) ฉันไม่กระตือรือร้นกับวิธีการนี้ด้วยเหตุผลหลายประการ - มันน่าเกลียดอาจเป็นอันตรายและดูเหมือนว่าอาจเป็นอันตรายต่อประสิทธิภาพการทำงานของข้อความค้นหาเหล่านั้นที่ใช้รูปแบบใหม่ ใครบ้างมีประสบการณ์กับวิธีนี้หรือคล้ายกันในการกำจัดตาราง #temp หรือไม่

5
แนบ / แยกออกจากการสำรองข้อมูล / เรียกคืน
ฉันต้องการถ่ายโอนฐานข้อมูล (ภาพรวม) ไปยังเซิร์ฟเวอร์อื่นเพื่อสร้างฐานข้อมูลซ้ำเพื่อตั้งค่าสภาพแวดล้อมการทดสอบอื่น ฉันมีสองทางเลือก: ทำการสำรองข้อมูลเต็มรูปแบบที่เซิร์ฟเวอร์ต้นทาง / กู้คืนที่เซิร์ฟเวอร์ปลายทาง; แยกที่เซิร์ฟเวอร์ต้นทาง / แนบที่เซิร์ฟเวอร์ปลายทาง ข้อดีและข้อเสียของทั้งสองโซลูชั่นตามความต้องการของฉันคืออะไร ฉันใช้ SQL Server 2008 Enterprise

1
บังคับให้ใช้แผนที่สำหรับบุคคลที่สองที่อ่านได้
หากมีการบังคับใช้แผนหลักในกลุ่มความพร้อมใช้งานจะมีการนำไปใช้กับคิวรีที่เรียกใช้บนรองหรือไม่? ฉันกำลังมองหาคำตอบที่ครอบคลุมความเป็นไปได้ทั้งในการวางแผนบังคับ: แนวทางการวางแผน แผนบังคับใช้ Query Store ฉันได้อ่านสิ่งต่อไปนี้ที่แนะนำแผนการบังคับใช้ QS ไม่ได้ดำเนินการ แต่ไม่พบสิ่งใดที่เชื่อถือได้ในเอกสารประกอบ Query Store และกลุ่มความพร้อมใช้งานโดย Erin Stellato แบบสอบถามข้อมูลที่เก็บบังคับพฤติกรรมแผนบนรอง AlwaysOn สามารถอ่านได้โดย Vikas Rana หลักฐานการบังคับจะมีการปรากฏตัวของUse PlanหรือPlanGuideNameและPlanGuideDBคุณสมบัติในการวางแผนการดำเนินการรอง

1
ไม่สามารถแทรกแถวคีย์ซ้ำในดัชนีที่ไม่ซ้ำกันใช่ไหม
เราพบข้อผิดพลาดแปลก ๆ สามครั้งในช่วงสองสามวันที่ผ่านมาหลังจากปราศจากข้อผิดพลาดเป็นเวลา 8 สัปดาห์และฉันก็นิ่งงัน นี่คือข้อความแสดงข้อผิดพลาด: Executing the query "EXEC dbo.MergeTransactions" failed with the following error: "Cannot insert duplicate key row in object 'sales.Transactions' with unique index 'NCI_Transactions_ClientID_TransactionDate'. The duplicate key value is (1001, 2018-12-14 19:16:29.00, 304050920).". ดัชนีที่เรามีไม่ซ้ำกัน หากคุณสังเกตเห็นค่าคีย์ที่ซ้ำกันในข้อความแสดงข้อผิดพลาดจะไม่ตรงกับดัชนี สิ่งที่แปลกคือถ้าฉันเรียกใช้ proc อีกครั้งมันก็ประสบความสำเร็จ นี่คือลิงค์ล่าสุดที่ฉันพบว่ามีปัญหาของฉัน แต่ฉันไม่เห็นวิธีแก้ปัญหา https://www.sqlservercentral.com/forums/topic/error-cannot-insert-duplicate-key-row-in-a-non-unique-index สองสามสิ่งเกี่ยวกับสถานการณ์ของฉัน: Proc กำลังอัปเดต TransactionID (ส่วนหนึ่งของคีย์หลัก) …

2
SQL Server สามารถสร้างการชนในชื่อข้อ จำกัด ที่ระบบสร้างได้หรือไม่?
ฉันมีแอปพลิเคชั่นที่สร้างตารางเป็นล้านตารางในฐานข้อมูล SQL Server 2008 (ไม่ใช่คลัสเตอร์) ฉันต้องการอัพเกรดเป็น SQL Server 2014 (เป็นกลุ่ม) แต่ฉันพบข้อความแสดงข้อผิดพลาดเมื่อโหลดไม่ครบ: “ มีวัตถุชื่อ 'PK__tablenameprefix__179E2ED8F259C33B' ในฐานข้อมูลอยู่แล้ว " นี่คือชื่อข้อ จำกัด ที่ระบบสร้างขึ้น ดูเหมือนว่าหมายเลข 64 บิตที่สร้างแบบสุ่ม เป็นไปได้ไหมที่ฉันเห็นการชนเนื่องจากตารางจำนวนมาก? สมมติว่าฉันมี 100 ล้านตารางฉันคำนวณโอกาสน้อยกว่า 1 ใน 1 ล้านล้านของการชนกันเมื่อเพิ่มตารางถัดไป แต่ถือว่าเป็นการกระจายแบบสม่ำเสมอ เป็นไปได้หรือไม่ที่ SQL Server เปลี่ยนอัลกอริธึมการสร้างชื่อระหว่างเวอร์ชั่น 2008 และ 2014 เพื่อเพิ่มโอกาสในการชน? ความแตกต่างที่สำคัญอื่น ๆ คืออินสแตนซ์ 2014 ของฉันเป็นคู่แบบคลัสเตอร์ แต่ฉันกำลังพยายามตั้งสมมติฐานเพื่อหาสาเหตุที่ทำให้เกิดข้อผิดพลาดด้านบน ป.ล. ใช่ฉันรู้ว่าการสร้างตารางนับล้านนั้นเสียสติ นี่คือรหัสสีดำของบุคคลที่สามซึ่งฉันไม่สามารถควบคุมได้ แม้จะมีความวิกลจริต แต่ก็ใช้งานได้ในเวอร์ชัน …

2
การเปลี่ยนรหัสผ่าน“ sa” ต้องการการเริ่ม SQL ใหม่ (ในโหมดผสม) หรือไม่?
เราค้นพบบัญชี SQL "sa" ที่ใช้งานในลักษณะที่ไม่ควรเป็นดังนั้นเราจึงเปลี่ยนรหัสผ่าน sa ในอินสแตนซ์ SQL ของเราทั้งหมด (เรามี SQL 2005 ถึง 2017 เซิร์ฟเวอร์ที่ทำงานในโหมดการตรวจสอบสิทธิ์แบบผสมผู้ใช้และแอปพลิเคชันทั้งหมดควรใช้บัญชีโดเมนหรือบัญชี SQL ที่ไม่ใช่ sa เพื่อเชื่อมต่อฉันได้รับการตรวจสอบ แต่ไม่พบแอปอื่น ๆ ผู้ใช้หรือไม่ - spids ภายในโดยใช้บัญชี sa) คำถามเล็กน้อย: คำถามที่ 1: การเปลี่ยนรหัสผ่าน sa ต้องมีการรีสตาร์ท SQL หรือไม่ ฉันพบการอ้างอิงบางอย่างที่บอกว่าจำเป็นต้องเริ่มบริการ SQL ใหม่หลังจากเปลี่ยนรหัสผ่านบัญชี sa: DBA SE: การเปลี่ยนรหัสผ่าน sa SQLAuthority: เปลี่ยนรหัสผ่านของการเข้าสู่ระบบ SA โดยใช้ Studio การจัดการ มันเป็นเรื่องจริงเหรอ? หรือเฉพาะในกรณีที่ฉันเปลี่ยนโหมดการตรวจสอบสิทธิ์ หรือเฉพาะถ้าฉันเข้าสู่ระบบเป็นประจำเป็น …

2
ปัญหาประสิทธิภาพการทำงานที่แปลกกับ SQL Server 2016
เรามีอินสแตนซ์เดียวของ SQL Server 2016 SP1 ที่ทำงานในเครื่องเสมือน VMware มันมี 4 ฐานข้อมูลสำหรับแต่ละแอปพลิเคชันที่แตกต่างกัน แอปพลิเคชั่นเหล่านั้นล้วน แต่อยู่บนเซิร์ฟเวอร์เสมือนแยกกัน ยังไม่มีการใช้งานจริง ผู้คนที่ทดสอบแอพพลิเคชั่นกำลังรายงานปัญหาด้านประสิทธิภาพ นี่คือสถิติของเซิร์ฟเวอร์: 128 GB RAM (หน่วยความจำสูงสุด 110GB สำหรับ SQL Server) 4 คอร์ที่ 4.6 GHz การเชื่อมต่อเครือข่าย 10 GBit ที่เก็บข้อมูลทั้งหมดใช้ SSD ไฟล์โปรแกรมไฟล์บันทึกไฟล์ฐานข้อมูลและ tempdb อยู่บนพาร์ติชันแยกต่างหากของเซิร์ฟเวอร์ asd ผู้ใช้ทำการเข้าถึงหน้าจอเดียวผ่านแอปพลิเคชัน ERP ที่ใช้ C ++ เมื่อฉันทดสอบ SQL Server กับ Microsoft ostressโดยใช้แบบสอบถามขนาดเล็กจำนวนมากหรือแบบสอบถามขนาดใหญ่ฉันได้รับประสิทธิภาพสูงสุด สิ่งเดียวที่ควบคุมปริมาณคือลูกค้าเพราะเขาไม่สามารถตอบได้เร็วพอ แต่เมื่อมีผู้ใช้แทบจะไม่ SQL …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.