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

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

3
วิธีเพิ่มหน่วยความจำ SQL Server
ฉันมีการติดตั้งแซนด์บ็อกซ์เซิร์ฟเวอร์ SQL บนคอมพิวเตอร์ของฉัน ฉันตั้งค่าอินสแตนซ์ของ SQL Server หน่วยความจำแล้วสามารถใช้งานได้ถึง 1,000 mb เมื่อใช้งานแบบเข้มข้นการใช้หน่วยความจำสูงถึง 1,000 mb เมื่อการดำเนินการสิ้นสุดลง SQL Server ยังคงเก็บหน่วยความจำไว้ วิธีเพิ่มการจองหน่วยความจำนี้ฟรี

2
รหัสจะสร้างแผนที่แตกต่างเมื่อเรียกใช้ Ad-hoc เทียบกับในขั้นตอนการจัดเก็บ
ฉันมีคำสั่งลบที่ใช้แผนไม่ดีเมื่อเรียกใช้ภายในกระบวนงานที่เก็บไว้ แต่เลือกแผนที่ดีกว่ามากเมื่อเรียกใช้โฆษณา ฉันสร้างดัชนีทั้งหมดใหม่สำหรับตารางที่ใช้โดยแบบสอบถามและทำให้แคชทั้งหมดหายไป เครื่องมือเพิ่มประสิทธิภาพยังคงเลือกแผนผิดสำหรับขั้นตอนการจัดเก็บ ฉันต้องการทราบว่าเพราะเหตุใดเครื่องมือเพิ่มประสิทธิภาพใช้แผนการดำเนินการที่แตกต่างกันสำหรับขั้นตอนการจัดเก็บเทียบกับ ad-hoc SQL UPDATE: ฉันเดาว่ามันต้องเป็นพารามิเตอร์หลังจากทั้งหมด - เมื่อฉันรันโค้ด ad-hoc พร้อมตัวแปร hardcoded ฉันสามารถรับแผน "ไม่ดี" ด้วยค่าที่ถูกต้อง (เป็นวันที่ค่าที่มีอายุหนึ่งปี ดูเหมือนจะสร้างแผน "ดี") ตอนนี้พยายามบังคับแผน "ดี" ใน proc โดยใช้คำใบ้แบบสอบถาม การแก้ไข: ฉันสิ้นสุดการรับแผนที่ฉันต้องการโดยใช้คำแนะนำที่เหมาะสมที่สุดสำหรับคำใบ้ที่ไม่รู้จัก

7
ภารกิจการสำรองข้อมูลตามกำหนดเวลาไม่ได้ทำการสำรองฐานข้อมูลทั้งหมดเสมอ
ฉันมีงานใน SQL 2008 ที่รัน proc ที่เก็บไว้เพื่อสำรองฐานข้อมูลทั้งหมด สิ่งนี้รันทุกวันผ่านงานตัวแทนเซิร์ฟเวอร์ sql มันหยุดทำงานด้วยความสำเร็จทุกวัน แต่บางวันก็หยุดทำงานด้วยความสำเร็จหลังจากทำการสำรองฐานข้อมูลบางส่วนเท่านั้น อาจเป็นจำนวนฐานข้อมูลที่แตกต่างกันในแต่ละครั้ง วันส่วนใหญ่จะสำเร็จการสำรองฐานข้อมูลทั้งหมด แต่บางครั้งการสำรองข้อมูล 2 สำเร็จบางครั้ง 5 เป็นต้น ฉันไม่เห็นข้อผิดพลาดใด ๆ ในประวัติงาน, ตัวแสดงเหตุการณ์หรือบันทึกเซิร์ฟเวอร์ sql กำลังสำรองข้อมูลไปยังดิสก์ภายในเครื่องแม้ว่าโฟลเดอร์จะเป็น "จุดเชื่อมต่อ" ไปยังโฟลเดอร์บนไดรฟ์ข้อมูลที่เก็บข้อมูลแบบขยายได้ ระบบปฏิบัติการ Windows 2003 64 บิตที่เรียกใช้ Sql Server 2008 web edition 64 บิตเป็นเครื่องเสมือนที่ทำงานบนโฮสต์ Vmware ESXi 5 ขั้นตอนการเก็บ: ALTER PROCEDURE [dbo].[backup_all_databases] @path VARCHAR(255)='c:\backups\' AS DECLARE @name VARCHAR(50) …

5
แนวปฏิบัติที่ดีที่สุดแบบขนาน
อะไรคือแนวปฏิบัติที่ดีที่สุดในการตั้งค่าความเท่าเทียมกันโดยทั่วไป? ฉันรู้ว่า SQL Server เป็นค่าเริ่มต้นที่0จะใช้โปรเซสเซอร์ที่มีอยู่ทั้งหมด แต่ในอินสแตนซ์ใดที่คุณต้องการเปลี่ยนพฤติกรรมเริ่มต้นนี้ ฉันจำได้ว่าอ่านที่ไหนสักแห่ง (ฉันจะต้องมองหาบทความนี้) ว่าสำหรับภาระงาน OLTP คุณควรปิด parallelism (ตั้ง maxdop เป็น1) ฉันไม่คิดว่าฉันเข้าใจอย่างถ่องแท้ว่าทำไมคุณถึงทำเช่นนี้ เมื่อใดที่คุณจะรักษา maxdop สูงสุดถึง SQL Server (0) เมื่อใดที่คุณจะปิดการขนานกัน (1) เมื่อใดที่คุณจะระบุ maxdop ให้ชัดเจนกับโปรเซสเซอร์จำนวนหนึ่ง อะไรที่ทำให้ขนานกัน

4
การช่วงชิง DDL บน TempDB
ฉันมี SQL Server 2005 Standard x64 ที่ประสบปัญหากับการช่วงชิงการแข่งขัน DDDB ของ TempDB ในช่วงสองสามเดือนที่ผ่านมา เซิร์ฟเวอร์จะได้รับการช่วงชิงทรัพยากรรอ 2: 1: 103 (ประเภทรอเป็น PAGELATCH_EX) ปัญหานี้เกิดขึ้นเป็นระยะ ๆ เมื่อเซิร์ฟเวอร์อยู่ในช่วงโหลดที่เหมาะสม ฉันได้ตรวจสอบอัตรา "ตารางชั่วคราวสำหรับการทำลาย" และสามารถข้ามไปที่ 5,000+ ในช่วงเวลาที่เรามีปัญหาของ PAGELATCH_EX ใน 2: 1: 103 จากสิ่งที่ฉันได้อ่านตัวนับนี้ควรเป็น 0 เวลาส่วนใหญ่ แต่ดูเหมือนว่าพวกเราจะอยู่ที่ใดก็ได้ตั้งแต่ 300-1100 ส่วนใหญ่ ตัวนับจะไปที่ 0 เมื่อมีผู้ใช้น้อยมากในระบบ ฉันจะแคบลงสิ่งที่ทำให้เกิดการแข่งขัน DDL ใน tempdb โดยไม่ต้องมองหาเข็มในกองหญ้าแห้งได้อย่างไร

2
SQL Server: วิธีหลีกเลี่ยงสิทธิ์ดูแลระบบ แต่ให้สิทธิ์อย่างเพียงพอ
ฉันมีเพื่อนร่วมงานที่ต้องการเข้าถึงอินสแตนซ์ SQL Server 2008 หนึ่งรายการ ฉันจะต้องให้สิทธิ์กับเขาในกรณีนี้ เขาควรมีสิทธิ์ทำเช่น เพิ่มและแก้ไขการเข้าสู่ระบบเซิร์ฟเวอร์ เพิ่มและแก้ไขแผนการบำรุงรักษา (เช่นสร้างการสำรองข้อมูลจากฐานข้อมูล) ตัวแทนกำหนดการ ฉันไม่ต้องการให้สิทธิ์ดูแลระบบแก่เขาเขาควรจะได้รับสิทธิอะไรบ้าง

2
PowerShell เพื่อรับตัวนับหน่วยความจำเซิร์ฟเวอร์ sql และแสดงค่า
ฉันกำลังเขียนสคริปต์ powershell เพื่อจับภาพเคาน์เตอร์เซิร์ฟเวอร์ SQL ต่อไปนี้: SQL Server: ตัวจัดการหน่วยความจำ: หน่วยความจำเซิร์ฟเวอร์ทั้งหมด (KB) SQL Server: ตัวจัดการหน่วยความจำ: หน่วยความจำเซิร์ฟเวอร์เป้าหมาย (KB) เครื่องของฉันมีเซิร์ฟเวอร์ SQL 3 อินสแตนซ์ดังนั้นฉันต้องการให้สคริปต์นี้จับตัวนับทั้งหมดแบบไดนามิกและรายงานค่าสำหรับ 1 ตัวอย่างเท่านั้น ฉันพยายามเขียนสิ่งต่อไปนี้: Get-counter -List *SQL*Memory* | Select paths, counter | format-list # doesn't display full list Get-counter -List *SQL*Memory* | Select paths, counter | where {_.counter -like "*server memory*"} |format-list …

1
เพรดิเคตที่เหลือคืออะไร
แม้ว่าฉันจะสามารถค้นหาคำจำกัดความของภาคแสดงทางออนไลน์ได้ที่MSDN : เป็นนิพจน์ที่ประเมินค่าเป็น TRUE, FALSE หรือ UNKNOWN เพรดิเคตจะใช้ในเงื่อนไขการค้นหาของ WHERE clause และ HAVING clauses, เงื่อนไขการรวมของ FROM clauses และโครงสร้างอื่น ๆ ที่ต้องการค่าบูลีน ฉันไม่สามารถค้นหาคำจำกัดความของเพรดิเคตที่เหลือได้ เพรดิเคตที่เหลือคืออะไร

3
คำแนะนำใด ๆ ในการลดเอกสิทธิ์ของฉันในการผลิต แต่ไม่ทำให้งานของฉันยากเกินไป
ใช้ SQL Server 2005 และ 2008 บน Windows 2008 R2 เรากำลังจะได้รับการลดสิทธิพิเศษในการผลิตสำหรับนักพัฒนา - และฉันต้องการที่จะทำเช่นเดียวกันสำหรับตัวเองเป็นที่ DBAจำกัด สิทธิในการผลิตและการยกระดับเมื่อจำเป็น เป้าหมายหลักของฉันคือการกำจัดข้อผิดพลาดที่โง่ - ทำโดย DBAsผู้พัฒนาจะได้อ่านการเข้าถึงในการผลิตมากที่สุด เราชอบที่จะทำตัวเหมือนเราเป็นฮีโร่ที่ไม่สามารถทำผิดพลาดได้ แต่ไม่มีสิทธิ์ในการผลิตตลอดเวลาที่เหมาะสมและเป็นแนวปฏิบัติที่ดีที่สุดที่แนะนำโดยบางคน วิธีที่ดีที่สุดคืออะไร อะไรจะเจ็บปวดน้อยที่สุดที่จะใช้แบบวันต่อวันและระหว่างการติดตั้ง? ขณะนี้เรามีกลุ่ม windows สำหรับ DBA ที่มีสิทธิ์ในเซิร์ฟเวอร์และฐานข้อมูลทั้งหมดของเรา ฉันยังสนใจที่จะลดสิทธิ์การเข้าสู่ระบบ OS / ระยะไกล - แต่ฉันกังวลมากที่สุดเกี่ยวกับสิทธิ์ DB ฉันคาดเดาว่าเราจะต้องใช้สิทธิ์ระดับสูงในการเรียกใช้การติดตามเป็นไปได้และอาจเป็นการล้างข้อมูลความเป็นเจ้าของก่อนที่เราจะยกเลิกสิทธิ์การเข้าใช้งาน SA เก่า ปัญหาอื่น ๆ ที่เราอาจคาดหวัง ขอบคุณสำหรับคำแนะนำและแบ่งปันประสบการณ์ของคุณ!

3
ผลกระทบความเร็วของการใช้ varchar ใน SQL Server 2008
ในสมัยก่อนการใช้varcharเกินcharเป็นสิ่งที่ไม่ใหญ่เพราะvarcharถูกเก็บไว้ในหน้าอื่นนอกเหนือจากส่วนที่เหลือของแถว วันนี้เป็นกรณีของ SQL Server 2008 หรือยัง ฉันจะเห็นหน่วยความจำ / ประสิทธิภาพเพิ่มขึ้นจากการเปลี่ยน 1-3 varchar(5)คอลัมน์เป็นchar(5)คอลัมน์บนตารางด้วยหรือไม่ ก) บอก 2.000.000 แถว b) หากvarcharคอลัมน์ใด ๆเป็นส่วนหนึ่งของดัชนี / คีย์หลัก

2
SQL Server ไม่ควรรองรับ RANGE หรือไม่
ในฐานะที่เป็นคนที่พัฒนาเว็บไซต์และทำ SQL Server นิดหน่อยดูเหมือนว่าฉันจะไม่ต้องคิดเลยว่า SQL Server ควรสนับสนุนส่วนคำสั่งง่ายๆที่ระบุว่าผลลัพธ์ควรมีเฉพาะช่วงของแถวที่ระบุเท่านั้น ตัวอย่างเช่นแถว 30 ถึง 39 ตามที่กล่าวมาการใช้การเพจใน SQL Server นั้นจริงแล้วมีความสามารถเกินกว่าความสามารถของนักพัฒนาเว็บจำนวนมากเล็กน้อยเมื่อความสนใจหลักไม่ใช่ SQL นอกจากนี้ยังช่วยลดความซับซ้อนของแบบสอบถามที่อาจซับซ้อนอยู่แล้วเนื่องจากการเข้าร่วมและเงื่อนไขอื่น ๆ ยิ่งไปกว่านั้นฉันเห็นว่าประโยคดังกล่าวอาจมีโอกาสที่ดีกว่าในการเพิ่มประสิทธิภาพภายในเมื่อเวลาผ่านไปเพราะตรรกะจะอยู่ภายใต้การควบคุมของ Microsoft ทั้งหมด ฉันนำเรื่องนี้ขึ้นเมื่อไม่นานมานี้ในฟอรัมอื่นและการตอบกลับจำนวนมากดูเหมือนจะแนะนำว่าสิ่งนี้จะไม่เป็นที่ต้องการ ระบุว่ามีเทคนิคที่มีอยู่สำหรับเพจจะเหลือเหมือนเดิมเหตุผลที่เป็นไปได้อะไรที่จะไม่เพิ่มประโยคเช่นนี้? และมันจะดีขึ้นมากสำหรับคนอย่างฉัน ทุกคนมีเหตุผลที่ดีที่ทำไม Microsoft ไม่ได้ทำสิ่งนี้

2
เป็นไปได้ที่จะรันคำสั่ง DBCC INDEXDEFRAG สองคำพร้อมกันโดยแต่ละคำสั่งบนตารางที่แตกต่าง
ฉันกำลังเรียกใช้สคริปต์ซึ่งดำเนินการ DBCC INDEXDEFRAG ในทุก ๆ ตารางในฐานข้อมูล SQL Server 2005 หนึ่งตารางต่อครั้ง การใช้ DBCC DBREINDEX แทนที่จะเป็น INDEXDEFRAG ไม่ใช่ตัวเลือกเนื่องจากข้อ จำกัด ด้านพื้นที่และข้อกำหนดเกี่ยวกับสถานะการออนไลน์ ฉันสังเกตว่าต้องใช้เวลานานกว่าปกติในการจัดระเบียบตาราง ตัวอย่างเช่นถ้าฉันตรวจสอบมุมมองการจัดการแบบไดนามิก "sys.dm_exec_requests" ฉันจะเห็นว่า INDEXDEFRAG ต่อไปนี้กำลังปั่นออกไปในดัชนีคลัสเตอร์ของตารางที่มี table_id ของ 829610394: DBCC INDEXDEFRAG (0, 829610394, 1) ฉันรู้ว่ามันจะใช้เวลานานก่อนที่กระบวนการจัดเรียงข้อมูลจะเสร็จสมบูรณ์ หากข้อเท็จจริงที่ว่าสคริปต์ที่กำลังทำงานอยู่ในที่สุดจะจัดเรียงข้อมูลในตารางทั้งหมดจะมีอันตรายใด ๆ ในตัวฉันที่รัน DBCC INDEXDEFRAG ด้วยตนเองในดัชนีคลัสเตอร์ของตารางอื่นในขณะที่คำสั่งปัจจุบันทำงานหรือไม่ จริง ๆ แล้วทั้งสองตารางจะถูกจัดระเบียบในเวลาเดียวกันถ้าฉันทำเช่นนี้?

2
การจัดทำดัชนีแบบคลัสเตอร์ตอนนี้ต้อง - ทำไม?
ก่อนหน้านี้ไม่มีข้อสรุปสำหรับฉันที่จะถกเถียง / อภิปรายว่าจะเข้าร่วม / หลีกเลี่ยงดัชนีกลุ่ม (เสมอ) หรือไม่ ฉันเข้าใจว่าบางครั้งพวกเขาจะต้องใช้งานด้วยวัตถุประสงค์และบริบทที่เหมาะสม ความต้องการดัชนีคลัสเตอร์ SQL Azure ฐานข้อมูล : "SQL Azure ไม่สนับสนุนตารางที่ไม่มีดัชนีคลัสเตอร์ตารางต้องมีดัชนีคลัสเตอร์หากตารางถูกสร้างขึ้นโดยไม่มีข้อ จำกัด แบบคลัสเตอร์ดัชนีคลัสเตอร์จะต้องสร้างขึ้นก่อนที่จะอนุญาตให้มีการแทรกได้" ไม่พอดีกับข้อสรุปเหตุผลและคำอธิบายก่อนหน้า เหตุผลที่ฉันพลาดจากคำอธิบายก่อนหน้านี้ของการจัดทำดัชนีแพร่หลายของกลุ่มคลัสเตอร์โดยไม่มีข้อยกเว้นคืออะไร?

3
บัญชีบริการเดียวที่ใช้งานเซิร์ฟเวอร์ SQL ทั้งหมด
มีผลกระทบด้านลบต่อประสิทธิภาพการใช้บัญชีบริการและบัญชีตัวแทนเดียวกันเพื่อเรียกใช้ SQL Server และตัวแทน SQL ตามลำดับสำหรับอินสแตนซ์เซิร์ฟเวอร์ SQL ทั้งหมดที่ทำงานใน บริษัท ขนาดเล็กที่มีเซิร์ฟเวอร์ 35 ตัวหรือไม่ ฐานข้อมูลที่ใหญ่ที่สุดคือ 0.5 GB ข้อเสนอแนะใด ๆ ยินดีต้อนรับ ขอบคุณ.

1
โปรไฟล์ RSS มีผลกับ SQL Server ที่มีการตั้งค่า NUMA หรือไม่
ฉันอยากรู้ว่าโปรไฟล์ RSS ซึ่งเป็นค่าเริ่มต้น NUMAStatic บน Windows 2012 R2 สามารถ / ควรเปลี่ยนสำหรับ SQL Server ด้วย NUMA setup หรือไม่ มีใครทำมาตรฐานประสิทธิภาพบนเซิร์ฟเวอร์ SQL โหลดสูงด้วยการตั้งค่า NUMA หรืออนุรักษ์นิยม?

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