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

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

8
ทำไมแอปพลิเคชันไม่ควรใช้บัญชี sa
คำถามแรกของฉันโปรดเป็นคนอ่อนโยน ฉันเข้าใจว่าบัญชี sa ช่วยให้สามารถควบคุม SQL Server และฐานข้อมูลผู้ใช้สิทธิ์ทั้งหมดได้อย่างสมบูรณ์ ฉันเชื่ออย่างแน่นอนว่าแอปพลิเคชันไม่ควรใช้รหัสผ่าน sa หากไม่มีเหตุผลที่สมบูรณ์แบบนักธุรกิจให้ความสำคัญ คำตอบสำหรับคำถามนี้รวมถึงเหตุผลมากมายของฉันสำหรับการสนทนาที่เน้นด้านไอที ฉันถูกบังคับให้ยอมรับระบบการจัดการบริการใหม่ที่จะไม่ทำงานจนกว่าจะใช้รหัสผ่าน sa ฉันไม่เคยมีเวลาที่จะหาสาเหตุว่าทำไมเมื่อทำการตั้งค่าการประเมินผล แต่ทีมเซิร์ฟเวอร์พยายามที่จะติดตั้งเพื่อใช้บทบาทคงที่ฉันได้ตั้งค่าการรวม db_creater และสิทธิ์อื่น ๆ ที่ฉันคิดว่ามันต้องมี ซึ่งล้มเหลว ฉันปล่อยให้ทีมเซิร์ฟเวอร์ติดตั้งด้วยบัญชี sa แต่ทำงานภายใต้บัญชีในบทบาท dbo สำหรับฐานข้อมูล แต่ก็ล้มเหลวด้วย ฉันพยายามทำให้มันทำงานโดยใช้บัญชีในบทบาทดูแลระบบ แต่ก็ล้มเหลวและไม่มีข้อความแสดงข้อผิดพลาดที่เป็นประโยชน์ที่ทำให้ฉันสามารถทำงานสิ่งที่เกิดขึ้นโดยไม่ต้องใช้เวลามากกว่าที่ฉันมี มันจะทำงานกับบัญชี sa และรหัสผ่านที่เก็บไว้ในข้อความที่ชัดเจนในไฟล์ปรับแต่ง เมื่อฉันสอบถามเรื่องนี้และทีมเซิร์ฟเวอร์ได้พูดคุยกับผู้ขายว่าพวกเขาได้รับคำตอบที่น่ากังวลว่า และจากนั้น 'เราสามารถดูรหัสผ่าน' scrambling ffs scrambling ฉันรู้ว่ามีวิธีและวิธีการ จำกัด การเข้าถึงไฟล์ แต่มันก็เป็นเพียงจุดอ่อนในการรักษาความปลอดภัยในความคิดของฉัน ยังไงก็ตามคำถามของฉันคือใครบางคนสามารถชี้ให้ฉันที่เอกสารบางอย่างที่ฉันสามารถใช้เพื่ออธิบายให้กับธุรกิจด้วยเหตุผลว่าทำไมสิ่งนี้เป็นสิ่งที่ไม่ดีและไม่ควรใหญ่ไม่มี ฉันทำงานในสาขาที่หมายความว่าฉันต้องใช้ความปลอดภัยอย่างจริงจังและพยายามดิ้นรนเพื่อให้ธุรกิจเข้าใจและท้ายที่สุดอาจได้รับการจัดอันดับต่อไป แต่ฉันต้องลอง

1
ฉันควรเพิ่ม SET NOCOUNT ON ให้กับตัวกระตุ้นทั้งหมดของฉันหรือไม่?
เป็นความรู้ทั่วไปที่คุณควรมี SET NOCOUNT ON โดยค่าเริ่มต้นเมื่อสร้างขั้นตอนการจัดเก็บใหม่ Microsoft ได้เปลี่ยนเทมเพลตเริ่มต้นเพื่อรวมสิ่งนี้ในปี 2012 ฉันคิดว่านี่จะเป็นสิ่งเดียวกันสำหรับทริกเกอร์ แต่ก็ไม่ได้รวมอยู่ในเทมเพลต มันเป็นความตั้งใจหรือเป็นเพียงการกำกับดูแล?

3
ย้ายและสร้างไฟล์ tempdb ใหม่อย่างปลอดภัย
สองสิ่งที่ฉันอยากรู้ คุณจะย้าย tempdb อย่างปลอดภัยได้อย่างไรด้วยการหยุดทำงานน้อยที่สุด คุณต้องการไฟล์ tempdb กี่ไฟล์ มันคือ 1 ไฟล์ต่อคอร์? ดังนั้นควอดคอร์ไฟล์ 4 tempdb สร้างไฟล์ใหม่สามไฟล์?

3
การซิงโครไนซ์ฐานข้อมูล SQL Server
นิยามปัญหา ผู้ใช้ของเราต้องการความสามารถในการสืบค้นฐานข้อมูลที่เป็นปัจจุบัน ข้อมูลสามารถค้างได้นานถึง 24 ชั่วโมงและเป็นที่ยอมรับ อะไรคือแนวทางต้นทุนที่ต่ำที่สุดในการรับและรักษาฐานข้อมูลที่สองด้วยข้อมูลการผลิต มีวิธีที่ฉันไม่ได้คิดหรือไม่? จำนวนงาน เรามีแอปพลิเคชันของบุคคลที่สามที่เราใช้ในการตรวจสอบกิจกรรมการซื้อขายหุ้น ในระหว่างวันมีการเปลี่ยนแปลงเล็กน้อยมากมายเกิดขึ้นเนื่องจากเป็นส่วนหนึ่งของกระบวนการทำงานที่หลากหลาย (ใช่การแลกเปลี่ยนนี้ใช้ได้ถูกต้องไม่เป็นที่น่าสงสัย ฯลฯ ) ในเวลากลางคืนเราดำเนินการตามชุดใหญ่ (โหลดการซื้อขายของวันก่อนหน้า) วิธีแก้ปัญหาและปัญหาปัจจุบัน เราใช้ประโยชน์จากภาพรวมฐานข้อมูล เวลา 22.00 น. เราจะส่งและสร้างภาพรวม การประมวลผล ETL จะเริ่มขึ้น นี่คือการเก็บภาษีบนดิสก์ของเรา แต่ช่วยให้ผู้ใช้ของเราสามารถสืบค้นฐานข้อมูลโดยไม่ต้องล็อกฐานข้อมูล (พวกเขาใช้ Access Front End) พวกเขาใช้มันในตอนกลางคืนและตอนเช้าเพื่อที่พวกเขาจะสังเกตเห็นการหยุดทำงาน ปัญหาด้วยวิธีนี้คือสองเท่า อย่างแรกคือในกรณีที่การประมวลผลทุกคืนล้มเหลวและนั่นไม่ใช่เรื่องแปลกมากเราได้รับการกู้คืนฐานข้อมูลซึ่งส่งผลให้สแนปช็อตถูกทิ้ง ปัญหาอื่นคือเวลาในการดำเนินการของเราลดลงผ่าน SLA ของเรา เราพยายามที่จะแก้ไขปัญหานี้ด้วยการทำงานร่วมกับผู้จัดจำหน่ายหลังจากพบคำค้นหาที่เขียนไม่ดีและไม่มีการจัดทำดัชนี สแนปชอตของฐานข้อมูลยังเป็นตัวการสำคัญในการชะลอตัวนี้ซึ่งเห็นได้จากความแตกต่างของความเร็วเมื่อมันปรากฏขึ้นเมื่อเทียบกับที่ไม่ใช่ --- น่าตกใจฉันรู้ แนวทางการพิจารณา การจัดกลุ่ม เราเปิดใช้งานการจัดกลุ่มฐานข้อมูลแล้ว แต่ไม่ได้ตอบสนองความต้องการในการทำให้ข้อมูลพร้อมใช้งานและโดยทั่วไปแล้วซับซ้อนชีวิตของผู้ดูแลระบบ มันถูกปิด การจำลองแบบเซิร์ฟเวอร์ SQL เราเริ่มดูการจำลองแบบเมื่อสัปดาห์ที่แล้ว ทฤษฎีของเราคือเราสามารถทำให้แคตตาล็อกที่สองโดดเด่นและประสานกับฐานข้อมูลการผลิต ก่อนการเริ่มต้น …

5
วิธีที่ดีที่สุดในการจัดเก็บหน่วยในฐานข้อมูล
ฉันได้รับมรดกฐานข้อมูลขนาดใหญ่ (SQLServer) ที่มีหลายร้อยคอลัมน์ที่แสดงจำนวนเงินของสิ่งใดสิ่งหนึ่ง หน่วยสำหรับค่าเหล่านี้ (เช่น "แกลลอน", "นิ้ว" และอื่น ๆ ) จะถูกเก็บไว้ในฟิลด์ MS_Description ของ Extended Properties ฉันสงสัยว่ามีวิธีที่ดีกว่าในการจัดเก็บข้อมูลนี้ ฉันคิดว่ามันเป็นเรื่องปกติสำหรับวัตถุประสงค์ในการจัดทำเอกสาร แต่มันยากที่จะทำการคำนวณการแปลงหน่วยที่แข็งแกร่งโดยใช้ข้อมูลนี้ ณ จุดนี้ฉันยังไม่พร้อมที่จะทำการเปลี่ยนแปลง แต่ถ้าฉันได้รับโอกาสทำเช่นนั้นแนวทางปฏิบัติที่ดีที่สุดที่แนะนำในเรื่องนี้คืออะไร? ตัวเลือกซึ่งอยู่ด้านบนของหัวของฉันอาจรวมถึง: เปลี่ยนชื่อคอลัมน์เป็นหน่วยที่รวมไว้ (เช่น "TotalVolumeInGallons" ซึ่งจะทำให้ข้อมูลพร้อมใช้งานได้ง่ายขึ้นเล็กน้อย แต่ก็ดูเหมือนว่าฉันจะอ่อนแอ) เพิ่มคอลัมน์ "หน่วย" แยกต่างหากเพื่อให้สอดคล้องกับทุกคอลัมน์ "จำนวน" (คอลัมน์นี้อาจเป็น nvarchar หรืออาจเป็นคีย์ต่างประเทศไปยังตารางหน่วยแยกต่างหากซึ่งอาจทำให้ง่ายต่อการคำนวณการแปลงหน่วยในอีกทางหนึ่ง คอลัมน์จำนวนมากสามารถเพิ่มขนาดฐานข้อมูลของฉันได้เป็นสองเท่า - ด้วยข้อมูลที่ซ้ำซ้อนมาก) สร้างฟิลด์ใหม่ในคุณสมบัติเพิ่มเติมสำหรับหน่วยโดยเฉพาะ (น่าเสียดายที่ฉันไม่คิดว่านี่จะเป็นคีย์ต่างประเทศในตารางหน่วย) มีแนวคิดอื่นอีกไหมที่ฉันมองเห็น UPDATE:หลังจากอ่านคำตอบของ @Todd Everett แล้วมีวิธีแก้ไขที่เป็นไปได้เกิดขึ้นกับฉันดังนั้นฉันจะดำเนินการต่อและตอบคำถามของฉันเอง (ดูด้านล่าง)

2
SQL Server ไม่ปรับการรวมการผสานแบบขนานบนตารางที่แบ่งพาร์ติชันอย่างเท่าเทียมกันสองตาราง
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา ขออภัยล่วงหน้าสำหรับคำถามที่ละเอียดมาก ฉันได้รวมคิวรี่เพื่อสร้างชุดข้อมูลแบบเต็มสำหรับการทำซ้ำปัญหาและฉันใช้ SQL Server 2012 บนเครื่อง 32-core อย่างไรก็ตามฉันไม่คิดว่านี่เป็นเฉพาะของ SQL Server 2012 และฉันได้บังคับ MAXDOP เป็น 10 สำหรับตัวอย่างนี้โดยเฉพาะ ฉันมีสองตารางที่แบ่งพาร์ติชันโดยใช้ชุดรูปแบบพาร์ติชันเดียวกัน เมื่อรวมพวกเขาเข้าด้วยกันในคอลัมน์ที่ใช้สำหรับการแบ่งพาร์ติชันฉันสังเกตว่า SQL Server ไม่สามารถเพิ่มประสิทธิภาพการรวมแบบขนานได้มากเท่าที่คาดไว้และเลือกที่จะใช้ HASH JOIN แทน ในกรณีพิเศษนี้ฉันสามารถจำลอง MERGE JOIN ที่เหมาะสมกว่าด้วยตนเองโดยแบ่งแบบสอบถามออกเป็น 10 ช่วงแยกจากกันตามฟังก์ชันพาร์ติชันและเรียกใช้แบบสอบถามแต่ละชุดใน SSMS พร้อมกัน การใช้ WAITFOR เพื่อเรียกใช้ทั้งหมดในเวลาเดียวกันอย่างแม่นยำผลลัพธ์คือแบบสอบถามทั้งหมดทำให้เสร็จสมบูรณ์ใน ~ 40% ของเวลาทั้งหมดที่ใช้โดย HASH …

5
ใครใช้ HierarchyId ในการผลิต? มันน่าเชื่อถือเหรอ?
มีใครใช้ HierarchyId ในการผลิตจริงกับตารางขนาดที่เหมาะสมมากกว่าสองสามพันแถวใช่ไหม มันน่าเชื่อถือ / นักแสดง? เพื่อให้ห่างไกลฉันไม่ได้พบคนที่ไม่ได้มีส่วนเกี่ยวข้องกับผู้ขายแนะนำและให้คำแนะนำแก่พอลนีลเซ่นกับมันนี่ ประสบการณ์ของคุณในการใช้ HierarchyId ในระบบการผลิตจริงคืออะไร คุณใช้เกณฑ์ใดเมื่อคุณเลือก HierarchyId ทางเลือกอื่น

1
สร้างฐานข้อมูลกับสร้างสิทธิ์ฐานข้อมูลใด ๆ
ใน Microsoft SQL Server ความแตกต่างระหว่างCREATE DATABASEและCREATE ANY DATABASEสิทธิ์คืออะไร ฉันไม่สามารถหาคำตอบที่เชื่อถือได้ ที่ดีที่สุดที่ฉันสามารถอนุมานได้ก็คือ (a) CREATE ANYหมายถึงฉันสามารถสร้างฐานข้อมูลที่จะเป็นเจ้าของโดยผู้ใช้รายอื่นในขณะที่CREATEฉันไม่สามารถหรือ (b) ได้รับอนุญาตเดิมใน Sybase / วันแรกของ SQL Server CREATE ANYและCREATEเป็นนามแฝง สอดคล้องกับ ANSI

3
Common Table Expression (CTE) มีประโยชน์อย่างไร?
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา จากmsdn : ต่างจากตารางที่ได้รับ CTE สามารถอ้างอิงตนเองและสามารถอ้างอิงได้หลายครั้งในแบบสอบถามเดียวกัน ฉันใช้ CTE ค่อนข้างมาก แต่ฉันไม่เคยคิดอย่างถี่ถ้วนเกี่ยวกับประโยชน์ของการใช้มัน ถ้าฉันอ้างอิง CTE หลายครั้งในแบบสอบถามเดียวกัน: มีประโยชน์ใด ๆ เกี่ยวกับประสิทธิภาพหรือไม่ ถ้าฉันเข้าร่วมด้วยตนเอง SQL Server จะสแกนตารางเป้าหมายสองครั้งหรือไม่
21 sql-server  cte 

3
ตกลงหรือไม่ที่จะเพิ่มดัชนีหายไป?
ฉันมักจะใช้ SSMS เพื่อทดสอบขั้นตอนการจัดเก็บช้าของฉันสำหรับดัชนีที่ขาดหายไป เมื่อใดก็ตามที่ฉันเห็น "ดัชนีที่หายไป (ผลกระทบ xxx)" ปฏิกิริยาเข่าของฉันคือการสร้างดัชนีใหม่ ผลลัพธ์นี้ทำให้การสืบค้นเร็วขึ้นทุกครั้งที่ฉันสามารถบอกได้ มีเหตุผลอะไรที่ฉันไม่ควรทำต่อไป?

4
การพิจารณาว่าเกิดการเปลี่ยนแปลงสกีมาอย่างไร
สิ่งเลวร้ายเกิดขึ้นเมื่อวานนี้ มุมมองที่สร้างขึ้นเมื่อไม่นานมานี้มีการแก้ไขโดยคนที่ทำลายรายงานในที่สุด น่าเสียดาย. บางคน (รู้ทั้งรู้หรือไม่รู้) ทำการปรับเปลี่ยนนี้ในฐานข้อมูล PRODUCTION คำถามของฉัน: มีวิธี (สคริปต์ / ซอฟต์แวร์ / ฟรีแวร์ ฯลฯ ) หรือไม่ซึ่งเราสามารถรู้ได้ว่าใคร (ชื่อผู้ใช้) ทำการเปลี่ยนแปลงนี้เพื่อให้ฉันสามารถยกเลิกการเข้าถึงฐานข้อมูลการผลิตสำหรับผู้ใช้นั้น หากคำถามของฉันไม่ชัดเจนโปรดแสดงความคิดเห็น
21 sql-server  view 

3
สำรองข้อมูลฐานข้อมูลหลักบ่อยแค่ไหน?
คำแนะนำในBOLค่อนข้างคลุมเครือ: แบ็คอัพมาสเตอร์บ่อยเท่าที่จำเป็นเพื่อปกป้องข้อมูลอย่างเพียงพอสำหรับความต้องการทางธุรกิจของคุณ เราขอแนะนำให้กำหนดการสำรองข้อมูลปกติซึ่งคุณสามารถเสริมด้วยการสำรองข้อมูลเพิ่มเติมหลังจากการปรับปรุงที่สำคัญ หากคุณเข้าไปลงทุนเพิ่มเติมคุณจะพบรายละเอียดเหล่านี้: ประเภทของการดำเนินการที่ทำให้เกิดการอัปเดตข้อมูลหลักและจำเป็นต้องมีการสำรองข้อมูลให้ทำดังนี้: การสร้างหรือลบฐานข้อมูลผู้ใช้ หากฐานข้อมูลผู้ใช้เติบโตโดยอัตโนมัติเพื่อรองรับข้อมูลใหม่ ต้นแบบจะไม่ได้รับผลกระทบ การเพิ่มหรือลบไฟล์และกลุ่มไฟล์ การเพิ่มการเข้าสู่ระบบหรือการดำเนินการอื่น ๆ ที่เกี่ยวข้องกับความปลอดภัยการเข้าสู่ระบบ การดำเนินการรักษาความปลอดภัยฐานข้อมูลเช่นการเพิ่มผู้ใช้ไปยังฐานข้อมูลจะไม่ส่งผลกระทบต่อต้นแบบ การเปลี่ยนตัวเลือกการกำหนดค่าทั้งเซิร์ฟเวอร์หรือฐานข้อมูล การสร้างหรือลบอุปกรณ์สำรองข้อมูลแบบลอจิคัล การกำหนดค่าเซิร์ฟเวอร์สำหรับเคียวรีแบบกระจายและการเรียกโพรซีเดอร์แบบรีโมต (RPCs) เช่นการเพิ่มเซิร์ฟเวอร์ที่ลิงก์หรือล็อกอินแบบรีโมต ดังนั้นหากการเข้าสู่ระบบทั้งหมดของเราถูกเพิ่มเข้าไปในกลุ่ม Windows และเราไม่ทำการเปลี่ยนแปลงใด ๆ กับฐานข้อมูลนั่นหมายความว่าการสำรองข้อมูลครั้งเดียวของต้นแบบนั้นเพียงพอหรือไม่ ถ้าไม่ช่วงเวลาการสำรองข้อมูลมาตรฐานสำหรับฐานข้อมูลหลักคืออะไร

2
แนวทางปฏิบัติที่ดีที่สุดสำหรับการเรียกใช้ SQL Server ในเครื่องเสมือนคืออะไร
แนวทางปฏิบัติที่ดีที่สุดสำหรับการเรียกใช้ SQL Server ในเครื่องเสมือนคืออะไร กิจกรรมการทำธุรกรรมออนไลน์ของฉันต่ำมาก แต่มีการประมวลผลข้อมูลจำนวนมากเพื่อวัตถุประสงค์ในการให้ข้อมูลการรายงานไปยังเว็บไซต์หลายแห่ง
21 sql-server 

1
โพรบแฮชคีย์และส่วนที่เหลือ
สมมติว่าเรามีคำถามเช่นนี้: select a.*,b.* from a join b on a.col1=b.col1 and len(a.col1)=10 สมมติว่าแบบสอบถามดังกล่าวจะใช้แฮร่วมและมีส่วนที่เหลือที่สำคัญการสอบสวนจะเป็นและที่เหลือจะเป็นcol1len(a.col1)=10 แต่ในขณะที่ดูตัวอย่างอื่นฉันสามารถเห็นทั้งโพรบและส่วนที่เหลือเป็นคอลัมน์เดียวกัน ด้านล่างนี้เป็นรายละเอียดเกี่ยวกับสิ่งที่ฉันพยายามจะพูด: ค้นหา: select * from T1 join T2 on T1.a = T2.a แผนการดำเนินการพร้อมโพรบและไฮไลต์ที่เหลือ: ข้อมูลการทดสอบ: create table T1 (a int, b int, x char(200)) create table T2 (a int, b int, x char(200)) set nocount on declare @i …

1
SQLCMD.EXE อยู่ที่ไหนใน SQL Server 2014 Express
การใช้ "SQLCMD.EXE" เพื่อสำรองฐานข้อมูล SQL Server Express ของฉันเป็นเวลาหลายปีฉันเพิ่งค้นพบว่าหลังจากติดตั้งเวอร์ชัน 2014ฉันไม่พบ SQLCMD.EXE อีกต่อไป ในรุ่นก่อนหน้านี้มันอยู่ที่ C: \ Program Server \ 110 \ Tools \ Binn \ SQLCMD.EXE SQL Files \ Microsoft SQL แต่ในการติดตั้ง 2014 ของฉันไม่มี SQLCMD.EXE อยู่ Server \ 120 \ Tools \ Binn SQL Files \ Microsoft C: \ Program คำถามของฉัน: มีโอกาสที่จะนำ SQLCMD.EXE …

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