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

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

2
PLE ต่ำใน NUMA โหนด 000 สูงถึง 001
ฉันกำลังดู PLE (Page Life Expectancy) ข้ามโหน NUMA บนเซิร์ฟเวอร์ SQL ของเราและพบว่ามีการกระจายค่อนข้างแปลก NUMA node 000 มี PLE ต่ำมากเมื่อเทียบกับ 001 ฉันไม่แน่ใจว่าทำไมจึงเป็นเช่นนี้ ฉันได้ตรวจสอบเซิร์ฟเวอร์ SQL อื่น ๆ หลายตัวในสภาพแวดล้อมของเราและเซิร์ฟเวอร์ที่ใช้งานจริงอื่นไม่มีลักษณะการทำงานนี้ ระบบกำลังเรียกใช้ SQL Server 2012 Enterprise Edition บน Dell m620 พร้อม 256GB Ram มันเป็นเครื่อง 2 ซ็อกเก็ต 6 คอร์ (เปิดใช้งาน HT) MAXDOP ถูกตั้งค่าไว้ที่ 6 โมดูลหน่วยความจำ AFAIK ได้รับการติดตั้งอย่างสม่ำเสมอทั่วทั้งหน่วยความจำของซีพียู มีบางอย่างบอกฉันว่า NUMA …

1
เหตุใดแบบสอบถาม SQL Server ของฉันจึงทำงานต่างจาก UPDATE มากกว่า SELECT
ฉันเขียนแบบสอบถาม SQL Server ที่อัปเดตระเบียนให้มีหมายเลขตามลำดับหลังจากแบ่งพาร์ติชันในเขตข้อมูล เมื่อฉันเรียกใช้เป็นคำสั่ง SELECT ทุกอย่างดูดี: DECLARE @RunDetailID INT = 448 DECLARE @JobDetailID INT SELECT @JobDetailID = [JobDetailID] FROM [RunDetails] WHERE [RunDetailID] = @RunDetailID SELECT [OrderedRecords].[NewSeq9], RIGHT([OrderedRecords].[NewSeq9], 4) FROM ( SELECT [Records].*, [Records].[SortField] + RIGHT('0000' + CAST(ROW_NUMBER() OVER(PARTITION BY [Records].[SortField] ORDER BY [Records].[RunDetailID], [Records].[SortField], [Records].[PieceID]) AS VARCHAR), 4) NewSeq9 …

6
เซิร์ฟเวอร์ที่ลงทะเบียน SSMS พร้อมเจตนาการใช้งานแบบอ่านอย่างเดียว
เรากำลังดำเนินการทดสอบ SQL Server 2014 POC กับ AlwaysOn และหนึ่งในผู้ใช้ถามเกี่ยวกับการบันทึกการกำหนดค่าของ SSMS ด้วยเจตนาแบบอ่านอย่างเดียวโดยใช้เซิร์ฟเวอร์ที่ลงทะเบียนในกลุ่มเซิร์ฟเวอร์ท้องถิ่น วิธีนี้พวกเขาไม่จำเป็นต้องพิมพ์ชื่อนามแฝงทุกครั้งที่พวกเขาต้องการเข้าถึงReadOnly replica น่าเสียดายที่ไม่มีตัวเลือกภายในเซิร์ฟเวอร์ที่ลงทะเบียนเพื่อเพิ่มตัวเลือก ApplicationIntent ซึ่งแตกต่างจากนักสำรวจวัตถุปกติ ฉันเจอบทความนี้จาก Microsoft เกี่ยวกับการเปลี่ยนสตริงการเชื่อมต่อใน RegSrvr.xml https://connect.microsoft.com/SQLServer/feedback/details/786323/ssms-sql-server-management-studio-2012-missing-connection-properties-for-availability-groups ฉันลองใช้คำแนะนำของพวกเขาและมันไม่ได้เชื่อมต่อกับโหนดจำลองที่ถูกต้องเมื่อเชื่อมต่อผ่านเซิร์ฟเวอร์ท้องถิ่นในเซิร์ฟเวอร์ที่ลงทะเบียน อ่านได้อย่างเดียวตัวเลือกที่ทำงานได้ดีจากวัตถุสำรวจเมื่อใช้ตัวเลือกในหน้าต่างการเชื่อมต่อ> พารามิเตอร์การเชื่อมต่อเพิ่มเติม แต่จะไม่บันทึกการเปลี่ยนแปลงที่เกิดขึ้นกับการเชื่อมต่อ ไม่มีใครรู้วิธีแก้ปัญหาทางเลือกใด ๆ ในการบันทึกการกำหนดค่าด้วยคุณสมบัติการอ่านอย่างเดียวกับ SSMS ขอบคุณล่วงหน้าสำหรับความช่วยเหลือของ.

1
SQL Server จะรับการล็อคเมื่อใด
รายการระดับการแยกใน SQL Server พบได้ที่นี่ระบุว่าการล็อกการเขียนที่ได้รับภายในธุรกรรมถูกเก็บไว้จนกว่าจะสิ้นสุดการทำธุรกรรม อย่างไรก็ตามมันไม่ได้พูดถึงอะไรเกี่ยวกับเวลาที่ได้รับล็อคเหล่านี้ การล็อกตามค่าเริ่มต้นได้มาเมื่อเริ่มต้นธุรกรรมหรือเมื่อจำเป็น หากหลังเป็นจริงจึงเป็นประโยชน์ในการทำธุรกรรมขนาดใหญ่เพื่อดำเนินการเขียนให้ช้าที่สุดเพื่อลดระยะเวลาที่ล็อค X ไว้หรือไม่

1
ลบสตริงหลังจากอักขระเฉพาะที่สองเกิดขึ้นจากซ้าย
ฉันมีค่าประเภทนี้ในคอลัมน์ตาราง 154646@8@486 45465@6464@654 เป็นต้น ฉันจะลบทุกสิ่งหลังจากอักขระตัวที่สองได้อย่างไร ฉันต้องการที่จะแสดง 154646@8 45465@6464 ฉันสามารถทำได้เฉพาะสำหรับทุกคนที่ @ แต่ไม่ใช่สำหรับที่สอง SELECT REPLACE(LEFT('45@Tra@lala', CHARINDEX('@','45@Tra@lala')-1),'_',' ') ส่งคืน45แต่ไม่ใช่45 @ Tra ขอบคุณ :-)
10 sql-server 

1
ฐานข้อมูลพร้อมไฟล์. mdf หลายไฟล์
ฉันค้นหาออนไลน์ แต่ไม่พบสิ่งที่ฉันกำลังมองหา ปัญหา / แบบสอบถามคือความรู้ของฉันฐานข้อมูลใน SQL Server ควรมีไฟล์. pdf หนึ่งไฟล์และอาจเป็นไฟล์. ndf และไฟล์. log หนึ่งไฟล์ ฉันได้เห็นฐานข้อมูลมากมายที่มีไฟล์ mdf หนึ่งไฟล์และไฟล์ ndf หลายไฟล์ แต่เมื่อเร็ว ๆ นี้ฉันเจอฐานข้อมูลบนเซิร์ฟเวอร์ที่ทุกฐานข้อมูลมีไฟล์ mdf หลายไฟล์ ฉันใช้การสำรองข้อมูลของฐานข้อมูลบางส่วนย้ายไปยังเซิร์ฟเวอร์อื่นและเรียกคืนไฟล์หลักเป็น. mdf และไฟล์อื่นทั้งหมดเป็น. ndf อย่างชัดเจนยกเว้นไฟล์บันทึกที่ถูกกู้คืนเป็น. log ตอนนี้คำถามของฉันคือ: มีภูมิปัญญาในการมีไฟล์. pdf หลายไฟล์สำหรับฐานข้อมูลหรือไม่? มีข้อเสียของการมีไฟล์. pdf หลายไฟล์หรือไม่? มันเป็น SQL Server 2008 R2 64bit Enterprise Edition คำแนะนำหรือตัวชี้ไปในทิศทางที่ถูกต้องจะชื่นชมมาก ขอบคุณ.

1
TSQL เหตุใดจึงมีอันดับสูงสุดเร็วขึ้นด้วยตัวแปร
ทุกเช้า ฉันทำงานกับ sql ที่ซับซ้อนพอสมควรเพื่อ 'รับ' ข้อมูลบางอย่างจากฐานข้อมูลผลิตภัณฑ์ของบุคคลที่สามเพื่อแสดงในแอปพลิเคชันของเราเอง ฉันเพิ่มในรายการที่เลือกเพื่อรับระเบียนสูงสุดจากตารางภายในแบบสอบถามย่อย (ถ้ามีเหตุผล) แบบสอบถามใช้เวลาเกือบ 3 นาทีในการส่งคืนชุดผลลัพธ์สุดท้าย 100 รายการโดยใช้ SELECT TOP 1 ... ฉันดูออนไลน์เพื่อดูการปรับปรุงสิ่งที่ฉันพยายามบรรลุและขอแนะนำให้ฉันเปลี่ยนการเลือกของฉันเพื่อใช้ตัวแปรดังต่อไปนี้ DECLARE @topCount INT SET @topCount = 1 SELECT TOP (@topCount) ... นี่ใช้แบบสอบถามเดียวกันจาก 3 นาทีถึง 1 วินาทีซึ่งยอดเยี่ยมมาก! แต่ทุกคนสามารถอธิบายได้ว่าทำไมถึงเป็นเช่นนั้น
10 sql-server  t-sql 

3
สร้างใหม่ในดัชนีคลัสเตอร์ทำไมชุดข้อมูลย่อขนาด
เมื่อเราทำการสร้างใหม่ในดัชนีคลัสเตอร์บนตารางที่มีข้อมูลประมาณ 15gb ในนั้นและ datasize หดเป็น 5gb สิ่งนี้จะเป็นอย่างไร "data" ประเภทใดที่ถูกลบออกไป? ขนาดข้อมูล i หมายถึงคอลัมน์ "data" ของ DBCC sp_spaceused ก่อนสร้างใหม่บนดัชนีคลัสเตอร์: name rows reserved data index_size unused LEDGERJOURNALTRANS 43583730 39169656 KB 15857960 KB 22916496 KB 395200 KB หลังจากสร้างใหม่บนดัชนีคลัสเตอร์: name rows reserved data index_size unused LEDGERJOURNALTRANS 43583730 29076736 KB 5867048 KB 22880144 KB 329544 KB …

2
การลบไฟล์ข้อมูลทุติยภูมิ DBCC SHRINKFILE: ไม่สามารถย้ายหน้าได้เนื่องจากเป็นหน้าตารางงาน
ฉันมีมากเกินไปไฟล์ข้อมูลทุติยภูมิ (.ndf) tempdbที่สร้างขึ้นสำหรับ ในการลบไฟล์ส่วนเกินฉันต้องล้างไฟล์ (เนื้อหาจะถูกย้ายไปยังไฟล์อื่น): DBCC SHRINKFILE('tempdbfile8', EMPTYFILE); แล้วลบไฟล์: ALTER DATABASE tempdb REMOVE FILE tempdbfile8; แต่EMPTYFILEคำสั่งจะส่งคืนข้อผิดพลาด: DBCC SHRINKFILE: Page 8:41920 could not be moved because it is a work table page. Msg 2555, Level 16, State 1, Line 2 Cannot move all contents of file "tempdbfile8" to other places to …

5
แทรกลงในส่วนที่เลือกลงในตารางที่เกี่ยวข้องหลายรายการโดยใช้ INSERT_IDENTITY
โอเคตั้งฉากแล้ว ฉันมีสามตาราง ( Table1, Table2และDataTable) และฉันต้องการแทรกลงในTable1และTable2ใช้DataTableเป็นแหล่งที่มา ดังนั้นสำหรับทุกแถวในDataTableฉันต้องการแถวในTable1และTable2และTable2ความต้องการที่จะมีการแทรกid(PK) จากTable1... ถ้าฉันจะทำสิ่งนี้ ... INSERT INTO Table1 SELECT A, B, C FROM MyTable INSERT INTO Table2 SELECT IDENTITY_INSERT(), D, E, F FROM MyTable ฉันได้รับการบันทึกลงในแทรกสุดท้ายIDTable1 a CURSORหรือWHILEloop เป็นวิธีเดียวที่จะทำเช่นนี้?

2
การสนับสนุน Parallel Scalar UDF เป็นการร้องขอคุณสมบัติที่เหมาะสมหรือไม่?
มีการบันทึกไว้ค่อนข้างดีว่าสเกลาร์ของ UDF เป็นแผนอนุกรมโดยรวม ฟังก์ชั่นที่ทำงานในแบบคู่ขนาน เมื่อมีจำนวนแถวเข้ามาในจุดที่ต้องคำนวณ UDF ทำไมเครื่องยนต์ไม่สามารถกระจายไปยังโปรเซสเซอร์ได้ หากไม่มีสถานะใน UDF คำสั่งนั้นไม่ควรสำคัญ มีการเรียกร้องเกี่ยวกับ UDF ที่เป็นกล่องดำจะต้องใช้เคอร์เซอร์ ฉันเห็นว่าเคอร์เซอร์ผู้ใช้ไม่สามารถทำให้ขนานภายใน SP สำหรับกรณีที่บางสถานะถูกเก็บรักษาไว้ระหว่างการทำซ้ำ แต่ดูเหมือนว่าควรจะเป็นแบบขนาน คะแนนพิเศษสำหรับการอธิบายว่าทำไมเครื่องยนต์บังคับให้แผนทั้งหมดเป็นอนุกรมแทนที่จะเป็นเพียงขั้นตอนการคำนวณ UDF การสนับสนุน UDF แบบขนานเป็นคุณสมบัติที่เหมาะสมในการร้องขอหรือไม่

1
ทำไม UPDATE เทียบกับตารางที่มีทริกเกอร์ INSTEAD OF UPDATE ดูเหมือนว่าจะทำการแทรกดัชนีคลัสเตอร์รวมถึงการอัพเดตดัชนีคลัสเตอร์
ฉันจะเริ่มต้นด้วยตัวอย่างง่ายๆมาก: สองตารางทั้งคู่ด้วย schema เดียวกันทำคลัสเตอร์บน PK แต่หนึ่งในนั้นมีINSTEAD OF UPDATEทริกเกอร์: CREATE TABLE Standard ( PK UNIQUEIDENTIFIER PRIMARY KEY CLUSTERED, V INT NOT NULL ) GO CREATE TABLE InsteadOf ( PK UNIQUEIDENTIFIER PRIMARY KEY CLUSTERED, V INT NOT NULL ) GO INSERT Standard (PK, V) VALUES ('1E58B555-B073-471E-B576-4B09C8E18976', 0) INSERT InsteadOf (PK, V) VALUES …

6
ประมาณการการเติบโตของฐานข้อมูลที่คาดการณ์ไว้
ฉันเพิ่งเริ่มทำงานกับ SQL Server 2008 ในฐานะผู้ฝึกหัด DBA ฉันต้องการคำนวณขนาดของฐานข้อมูล แต่ยังประเมินการเติบโตในช่วงหลายเดือนที่ผ่านมาและการเติบโตที่คาดการณ์ไว้ในอีก 12 เดือนข้างหน้า ฉันสามารถใช้คำสั่ง sp_spaceused เพื่อคำนวณขนาดจริง แต่ฉันจะคำนวณทุกอย่างได้อย่างไร

2
ปัญหาการละเมิดข้อ จำกัด กุญแจต่างประเทศ
ฉันได้ระบุ 3 สถานการณ์ นักเรียนที่ไม่มีการลงทะเบียน นักเรียนที่มีการลงทะเบียน แต่ไม่มีเกรด นักเรียนที่มีการลงทะเบียนและผลการเรียน มีทริกเกอร์ในตารางการลงทะเบียนเพื่อคำนวณเกรดเฉลี่ย หากนักเรียนมีคะแนนจะทำการอัปเดตหรือแทรกรายการลงในตารางเกรดเฉลี่ย ไม่มีเกรดไม่มีรายการตารางเกรดเฉลี่ย ฉันสามารถลบนักเรียนที่ไม่มีการลงทะเบียน (# 1) ฉันสามารถลบนักเรียนที่มีการลงทะเบียนและผลการเรียน (# 3 ด้านบน) แต่ฉันไม่สามารถลบนักเรียนที่มีการลงทะเบียน แต่ไม่มีคะแนน (# 2) ฉันได้รับการละเมิดข้อ จำกัด ในการอ้างอิง คำสั่ง DELETE ขัดแย้งกับข้อ จำกัด การอ้างอิง "FK_dbo.GPA_dbo.Student_StudentID" ความขัดแย้งเกิดขึ้นในฐานข้อมูล "", ตาราง "dbo.GPA", คอลัมน์ 'StudentID' หากฉันไม่สามารถลบนักเรียนใหม่ที่ไม่มีการลงทะเบียน (และไม่มีรายการ GPA) ฉันจะเข้าใจการละเมิดข้อ จำกัด แต่ฉันสามารถลบนักเรียนคนนั้นได้ เป็นนักเรียนที่มีการลงทะเบียนและไม่มีคะแนน (และยังไม่มีรายการเกรดเฉลี่ย) ที่ฉันไม่สามารถลบได้ ฉันได้ติดตั้งทริกเกอร์ของฉันเพื่อให้สามารถไปข้างหน้า ทีนี้ถ้าคุณมีการลงทะเบียนทริกเกอร์จะแทรกคุณลงในตารางเกรดเฉลี่ยไม่ว่าจะเกิดอะไรขึ้น แต่ฉันไม่เข้าใจปัญหาพื้นฐาน คำอธิบายใด ๆ …

1
ธุรกรรมแยกระดับ SNAPSHOT กับ TRUNCATE?
ฉันหวังว่าจะมีใครบางคนแสดงความเข้าใจบางอย่างเกี่ยวกับพฤติกรรมนี้ซึ่งฉันไม่ได้คาดหวังเกี่ยวกับการแยก SNAPSHOT กับ TRUNCATE ฐานข้อมูล: อนุญาตการแยก Snapshot = True; Is Snapshot On Read ที่ได้รับการยอมรับ = False ขั้นตอนที่ 1 (แทนที่เนื้อหาของ table foo จาก SELECT ที่ซับซ้อนที่รันเป็นเวลานานด้วยการรวมจำนวนมาก): BEGIN TRAN; TRUNCATE TABLE foo; INSERT INTO foo SELECT...; COMMIT; ขั้นตอนที่ 2 (อ่านจากตาราง foo): SET TRANSACTION ISOLATION LEVEL SNAPSHOT; SELECT * FROM foo; หากโพรซีเดอร์ 1 กำลังรันในขณะที่โพรซีเดอร์ …

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