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

SQL Server 2008 (รุ่นบิลด์หลัก 10.00.xxxx) โปรดติดแท็กด้วย sql-server

2
Simple DELETE แต่แผนการดำเนินการที่ซับซ้อน
เมื่อฉันเรียกใช้การลบนี้: DELETE FROM ETLHeaders WHERE ETLHeaderID < 32465870 ... ลบแถวที่ 39,157 ควรง่ายเพราะจะลบ ETLHeaderID ซึ่งเป็นดัชนีคลัสเตอร์และคีย์หลัก แต่ (ตามแผนการดำเนินการ) ดูเหมือนว่าจะมีการกดปุ่ม 361,190 แถวและใช้ดัชนีอื่น ตารางมีเขตข้อมูลที่มีชนิดข้อมูล XML (ในกรณีที่มีผลต่อการลบนี้) ความคิดใดที่เป็นสาเหตุและวิธีที่ฉันสามารถเร่งความเร็วการลบนี้ แผนการดำเนินการที่นี่: http://sharetext.org/qwDY สคีมาของตารางที่นี่: http://sharetext.org/Vl9j ขอบคุณ

2
แทรกวันที่หายไปจากแบบสอบถาม
ฉันจะแทรกวันที่ที่หายไปจากแบบสอบถามที่ฉันสร้างขึ้นได้อย่างไร ผลลัพธ์ด้านล่าง: Date Frequency 2014-05-18 5 2014-05-20 7 2014-05-25 7 2014-05-27 6 ฉันต้องการให้ผลลัพธ์มีวันที่หายไปโดยมีค่า 0 ดังที่แสดงด้านล่าง: Date Frequency 2014-05-18 5 2014-05-19 0 2014-05-20 7 2014-05-21 0 2014-05-22 0 2014-05-23 0 2014-05-24 0 2014-05-25 7 2014-05-26 0 2014-05-27 6 โปรดทราบว่าฉันได้เข้าถึงเซิร์ฟเวอร์เท่านั้น

1
พื้นที่ว่างของ mdf และ ldf ไม่ตรงกับพื้นที่ว่างของฐานข้อมูล
ใน SSMS ฉันเห็นคุณสมบัติที่เกี่ยวข้องกับขนาดไฟล์และพบรายละเอียดด้านล่างสำหรับฐานข้อมูลเดียว ค่าที่นี่ไม่ตรงกับคุณสมบัติอื่น ขนาดที่นี่ของ mdf, ldf และขนาดรวมจะตรงกับค่าอื่น ๆ ภายใต้แต่ละหน้าต่าง แต่พื้นที่ว่างที่มีอยู่ของ mdf และ ldf หากมีการเพิ่มจะไม่เท่ากับพื้นที่ว่างที่มีอยู่ที่แสดงในหน้าต่างฐานข้อมูลที่ลดขนาดและพื้นที่ว่างที่แสดงในคุณสมบัติฐานข้อมูล สิ่งนี้เป็นจริงสำหรับฐานข้อมูลใด ๆ ทำไมถึงเป็นเช่นนั้น ใครช่วยอธิบายตรรกะเบื้องหลังนี้ได้ไหม? ภายใต้คุณสมบัติฐานข้อมูล: ขนาด: 91.31 MB พื้นที่ว่าง: 13.40 MB ภายใต้ความเหมาะสมของไฟล์ฐานข้อมูล: ขนาด mdf: 17 MB ขนาดไฟล์: 75 MB ภายใต้ฐานข้อมูลหดตัว: ขนาดที่จัดสรรในปัจจุบัน: 91.31 MB พื้นที่ว่าง: 13.40 MB ภายใต้ไฟล์ย่อขนาดสำหรับไฟล์ข้อมูล: ขนาดที่จัดสรรในปัจจุบัน: 16.38 MB พื้นที่ว่างที่มีอยู่: 12.63 MB ภายใต้การลดขนาดไฟล์สำหรับไฟล์บันทึก: ขนาดที่จัดสรรในปัจจุบัน: …

2
สาเหตุที่เป็นไปได้สำหรับ sp_reset_connection ใช้เวลานานในการดำเนินการคืออะไร?
ทำไมsp_reset_connectionขั้นตอนการจัดเก็บระบบจึงใช้เวลานานกว่าสองสามมิลลิวินาทีในการดำเนินการตามที่ดูผ่าน SQL Server Profiler ฉันทำการสืบค้นกลับอย่างง่ายจากระบบการผลิตโดยใช้ SQL Server Profiler จากนั้นใช้ SqlNexus เพื่อวิเคราะห์ SqlNexus ระบุว่า sp_reset_connection มีระยะเวลาสะสมสูงสุด - 33% ของการติดตามโดยรวม ระยะเวลาที่สังเกตได้อยู่ในช่วง 0-7 วินาที (12 ถึง 6,833,270 ไมโครวินาที) แต่มีค่าเฉลี่ยที่ 0.956 วินาที ฉันเข้าใจว่า sp_reset_connection กำลังถูกเรียกใช้เมื่อมีการใช้การเชื่อมต่อร่วมซ้ำอีกครั้ง ฉันได้เห็นข้อเสนอแนะว่าสิ่งนี้อาจเกิดขึ้นได้เนื่องจากมีร่องรอยจากภายนอกแต่ดูเหมือนจะไม่เป็นเช่นนั้น ฉันได้อ่านสิ่งที่เซิร์ฟเวอร์ทำเมื่อเรียกว่า sproc แต่ฉันไม่เชื่อว่าสิ่งเหล่านี้จะเป็นปัญหาในกรณีนี้ - รหัสไม่ออกจากธุรกรรมเปิดหรือตารางชั่วคราวขนาดใหญ่ที่จะต้องทำความสะอาด ฉันยังดูที่/server/199974/sp-reset-connection-taking-a-long-time-to-runแต่ก็ไม่ได้มีประโยชน์ แก้ไข (2013-12-23): ในทุกกรณีการอ่านและการเขียนคือ 0 และ CPU เกือบตลอดเวลาเป็น 0 (เพียงสองอินสแตนซ์ของ CPU ที่ไม่เป็นศูนย์เท่านั้นซึ่งทั้งสองอยู่ที่ 16ms)

1
SentryOne Plan Explorer นับการอ่านเป็น UDF หรือไม่
ฉันมีคำถามเช่นนี้ select dbo.fn_complexFunction(t.id) from mytable t ในSQL Sentry Plan Explorerฉันสังเกตเห็นว่าฉันต้องเรียกใช้ Get Estimated Plan เพื่อให้ Query Plan รวมถึง UDF เมื่อเรียกใช้ 'รับแผนจริง' จะไม่ปรากฏว่าการอ่านเชิงตรรกะและตัวชี้วัดอื่น ๆ รวมถึงการดำเนินการที่เกิดขึ้นใน UDF ในกรณีเช่นนี้การแก้ปัญหาเพียงอย่างเดียวในการใช้ Profiler คืออะไร

1
เงื่อนไขการบันทึกขั้นต่ำใน SQL
ฉันได้เขียนสคริปต์เพื่อทดสอบการอ้างสิทธิ์ที่เกิดขึ้นในหน้านี้http://technet.microsoft.com/en-us/library/dd425070(v=sql.100).aspxในตารางชื่อสรุปเงื่อนไขการบันทึกขั้นต่ำเกี่ยวกับเมื่อ การบันทึกที่น้อยที่สุดจะเกิดขึ้นหรือไม่เกิดขึ้น การใช้สคริปต์นี้ฉันพบว่าผลรวมของความยาวบันทึกการใช้งานสำหรับเม็ดมีดแต่ละประเภทมีดังต่อไปนี้: กองว่างไม่มี tablock 60000 กองว่างเปล่าด้วย tablock 56000 กองไม่ว่างเปล่าไม่มี tablock 60000 กองไม่ว่างเปล่าด้วย tablock 56000 ฮีปบวกดัชนีว่างเปล่าไม่มี tablock 126188 ฮีปบวกดัชนีว่างเปล่าด้วย tablock 114188 Heap plus index ไม่ว่างเปล่าไม่มี tablock 138696 ฮีปบวกดัชนีไม่ว่างด้วย tablock 112000 คลัสเตอร์ว่างไม่มีคำสั่ง tablock 64168 คลัสเตอร์ว่างเปล่าเรียงลำดับด้วย tablock 56168 คลัสเตอร์ว่างเปล่าไม่มีการเรียงลำดับ tablock 73388 คลัสเตอร์ว่างเปล่าเรียงลำดับด้วย tablock 65388 คลัสเตอร์ไม่ว่างเปล่าไม่มี tablock 63912 คลัสเตอร์ไม่ว่างเปล่าด้วย tablock 55944 คลัสเตอร์และดัชนีว่างเปล่าไม่มี tablock …

2
ค้นหาแถวพาเรนต์ที่มีชุดของแถวลูกที่เหมือนกัน
สมมติว่าฉันมีโครงสร้างเช่นนี้: ตารางสูตรอาหาร RecipeID Name Description ตาราง RecipeIngredients RecipeID IngredientID Quantity UOM กุญแจสำคัญในการมีRecipeIngredients(RecipeID, IngredientID) วิธีที่ดีในการค้นหาสูตรอาหารที่ซ้ำกันคืออะไร สูตรที่ซ้ำกันหมายถึงการมีชุดส่วนผสมและปริมาณที่แน่นอนเหมือนกันสำหรับแต่ละส่วนผสม ฉันคิดว่าFOR XML PATHจะใช้เพื่อรวมส่วนผสมต่างๆไว้ในคอลัมน์เดียว ฉันยังไม่ได้สำรวจอย่างเต็มที่ แต่ควรจะทำงานถ้าฉันแน่ใจว่าส่วนผสม / UOMs / ปริมาณนั้นเรียงตามลำดับเดียวกันและมีตัวคั่นที่เหมาะสม มีแนวทางที่ดีกว่านี้ไหม? มีสูตร 48K และแถวส่วนผสม 200K

2
วิธีการติดตามแบบสอบถาม SQL ที่ crashing SQL Server
เรามีเซิร์ฟเวอร์ฐานข้อมูล SQL Server 2008 (เกิดขึ้นกับการทำงานภายใต้ MS Failover Clustering แต่ฉันไม่คิดว่าเกี่ยวข้องกับที่นี่) แอปพลิเคชันของเรารัน Hibernate สำหรับการเข้าถึงฐานข้อมูลและเนื่องจากเราอัปเกรดเมื่อเร็ว ๆ นี้จาก v3.1 เป็น 3.6 เราพบ SQL Server หยุดทำงานเป็นประจำ (ทุก ๆ 24-48 ชั่วโมง แต่บางครั้งก็บ่อยกว่า) ปัญหาเฉพาะในคำถามน่าจะเกี่ยวข้องกับหน่วยความจำ ก่อนที่เซิร์ฟเวอร์จะล่ม (และจากนั้นรีสตาร์ทอัตโนมัติโดยตัวจัดการคลัสเตอร์ล้มเหลวที่ดูเหมือนว่า) เราได้รับข้อผิดพลาดเหล่านี้: Error: 701, Severity: 17, State: 130. There is insufficient system memory in resource pool 'internal' to run this query. ข้อความ …

3
SQL Server Sandbox
ฉันกำลังพยายามตั้งค่า sandbox สำหรับผู้พัฒนารายงานของเราเพื่อทำงานในแผนปัจจุบันของฉันคือ "รีเซ็ต" ฐานข้อมูลทุกเย็น แต่ฉันไม่แน่ใจว่าจะทำอย่างไร สิ่งที่ฉันหมายถึงโดยการตั้งค่าใหม่คือฉันต้องการวางตารางผู้ใช้มุมมองกระบวนงานที่เก็บไว้และอื่น ๆ จากทั้งหมดยกเว้นฐานข้อมูลเดียวบนเซิร์ฟเวอร์ ฉันคิดว่าอีกทางเลือกหนึ่งคือการปล่อยและสร้างฐานข้อมูลอีกครั้ง แต่ฉันค่อนข้างแน่ใจว่านั่นหมายถึงการเข้าถึงกลุ่มโฆษณา / คนที่เหมาะสมทั้งหมดอีกครั้ง ฉันไม่รู้จริงๆว่าอะไรจะเป็นวิธีที่ดีที่สุดในการทำสิ่งนี้ดังนั้นฉันหวังว่าพวกคุณบางคนจะสามารถให้ความคิด / คำแนะนำที่ดีได้ ขอบคุณ เพื่อความชัดเจนเราเป็นหลักต้องการที่จะทำเช่นนี้กับฐานข้อมูลของเรา: http://try.discourse.org/t/this-site-is-a-sandbox-it-is-reset-every-day/57 ความแตกต่างเพียงอย่างเดียวคือเราไม่ต้องการสร้างผู้ใช้ของเราใหม่ทุกวัน รุ่น: SQL Server 2008 Edition: ผู้พัฒนาและองค์กร

2
เปลี่ยนการดักจับข้อมูลและไบนารี __ $ update_mask
เรากำลังใช้ CDC เพื่อบันทึกการเปลี่ยนแปลงที่เกิดขึ้นกับตารางการผลิต แถวที่เปลี่ยนแปลงกำลังถูกส่งออกไปยังคลังข้อมูล (informatica) ฉันรู้ว่าคอลัมน์ __ $ update_mask เก็บคอลัมน์ใดที่ได้รับการปรับปรุงในรูปแบบ varbinary ฉันยังรู้ว่าฉันสามารถใช้ฟังก์ชั่น CDC ที่หลากหลายเพื่อค้นหาจากหน้ากากที่คอลัมน์เหล่านั้น คำถามของฉันคือสิ่งนี้ ใครสามารถนิยามตรรกะเบื้องหลังหน้ากากนั้นให้ฉันเพื่อให้เราสามารถระบุคอลัมน์ที่เปลี่ยนแปลงไปในคลังสินค้าได้หรือไม่? เนื่องจากเรากำลังประมวลผลนอกเซิร์ฟเวอร์เราจึงไม่สามารถเข้าถึงฟังก์ชั่น MSSQL CDC เหล่านั้นได้อย่างง่ายดาย ฉันค่อนข้างจะพังหน้ากากตัวเองในรหัส ประสิทธิภาพของฟังก์ชั่น cdc ใน SQL end นั้นเป็นปัญหาสำหรับวิธีนี้ กล่าวโดยย่อฉันต้องการระบุคอลัมน์ที่มีการเปลี่ยนแปลงด้วยมือจากฟิลด์ __ $ update_mask ปรับปรุง: ในฐานะที่เป็นทางเลือกที่ส่งรายชื่อคอลัมน์ที่เปลี่ยนแปลงไปยังคลังสินค้าที่มนุษย์สามารถอ่านได้ เราพบว่าสิ่งนี้สามารถทำได้ด้วยประสิทธิภาพที่สูงกว่าวิธีดั้งเดิมของเรา คำตอบ CLR สำหรับคำถามนี้ตรงกับทางเลือกนี้และรวมถึงรายละเอียดของการตีความหน้ากากสำหรับผู้เข้าชมในอนาคต อย่างไรก็ตามคำตอบที่ยอมรับได้โดยใช้ XML PATH นั้นเร็วที่สุดสำหรับผลลัพธ์สุดท้ายเดียวกัน

3
กู้คืนการสำรองข้อมูลล้มเหลว - ไฟล์ 'Db' ไม่สามารถกู้คืนเป็น '{…} .mdf' ใช้ WITH MOVE เพื่อระบุตำแหน่งที่ถูกต้องสำหรับไฟล์
ฉันได้รับข้อผิดพลาดต่อไปนี้พยายามกู้คืนโดยใช้คำสั่งกู้คืนในไฟล์สำรองข้อมูลที่ฉันได้รับจากลูกค้า เรียกคืนฐานข้อมูล SFDB จาก DISK = N'C: \ Backup \ Backup.bak ' มีความคิดเกี่ยวกับสิ่งที่ฉันสามารถทำได้เพื่อแก้ไขสิ่งนี้หรือไม่? มันกำลังมองหา mdf ดังนั้นฉันจึงสามารถสรุปได้ว่าไฟล์สำรองที่ฉันมีคือการสำรองข้อมูลที่เพิ่มขึ้นไม่ใช่การสำรองข้อมูลทั้งหมดและนั่นคือสาเหตุที่ทำไมจึงมองหา mdf ฉันไม่แน่ใจว่า 1) พวกเขาให้ข้อมูลทั้งหมด (ทั้งฐานข้อมูล) หรือ 2) ฉันมีข้อมูลที่ถูกต้อง - และฉันสามารถกู้คืนได้ด้วยคำสั่ง T-SQL ที่ถูกต้อง - ฉันไม่รู้วิธีการ ความช่วยเหลือชื่นชม Msg 5133, Level 16, State 1, Line 2 Directory lookup for the file "D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Db.mdf" failed with …

2
ฉันจะเขียน SQL แบบพกพาที่อ้างถึงเซิร์ฟเวอร์ที่เชื่อมโยงได้อย่างไร
ฉันมีขั้นตอนการจัดเก็บที่อ้างอิงถึงเซิร์ฟเวอร์ที่เชื่อมโยง ในหลาย ๆ ที่ตลอดกระบวนการฉันมีบางอย่างดังต่อไปนี้: INSERT INTO [TableName] (...Columns...) SELECT ...Columns... FROM [ServerName\InstanceName].[Catalogue].[dbo].[TableName] WHERE TableNameID = @TableNameID ขั้นตอนนี้มีอยู่ในสภาพแวดล้อมการพัฒนาของฉันสภาพแวดล้อมการทดสอบและสภาพแวดล้อมแบบสด ปัญหาคือแต่ละสำเนาของโพรซีเดอร์นั้นแตกต่างกันอย่างละเอียดเนื่องจากชื่อเซิร์ฟเวอร์แตกต่างกันสำหรับแต่ละสภาพแวดล้อม สิ่งนี้ทำให้การจัดการการปรับใช้การอัปเดตสคริปต์ลำบาก มีวิธีทำให้โพรซีเดอร์แบบพกพาเพื่อให้แต่ละสภาพแวดล้อมสามารถรันเวอร์ชันที่เหมือนกันได้หรือไม่? ถ้าไม่มีอะไรที่ฉันสามารถทำได้เพื่อให้การปรับใช้สคริปต์มีแนวโน้มที่จะเกิดข้อผิดพลาด / ข้อผิดพลาดน้อยลง

1
การเรียกใช้งานสคริปต์ TSQL ที่สร้างจาก SSMS ใน SQLCMD ล้มเหลวในการพูด
ฉันกำลังพยายามปรับใช้ฐานข้อมูลกับเครื่องโดยการเรียกใช้งานสคริปต์ที่สร้างขึ้นโดยเครื่องมือ "สร้างสคริปต์" ใน SQL Server Management Studio นี่คือคำสั่งที่ฉันออก: sqlcmd -S LOCALHOST\sqlexpress -I -U user -P ******** -i C:\Rollouts\NI-9-25-2012_10-42-AM\Rollout.sql > rolloutlog.txt ฉันได้รับข้อผิดพลาดเช่นนี้: Sqlcmd: ข้อผิดพลาด: ข้อผิดพลาดทางไวยากรณ์ที่บรรทัด 39488 ใกล้กับคำสั่ง '' 'ในไฟล์' C: \ Rollouts \ NI-9-25-2012_10-42-AM \ Rollout.sql ' เมื่อฉันดูบรรทัดนี้ด้วยโปรแกรมแก้ไขข้อความสัญญาณทั้งหมดชี้ไปที่ปัญหาด้วยเครื่องหมายคำพูด บรรทัดคำถามมีลักษณะดังนี้: $ ( '' แมวเมนูใหม่. '') slideDown ( '' ช้า ''). มีสวิตช์ที่ฉันควรเรียกใช้งานหรือสร้างสคริปต์ด้วยเพื่อสนับสนุนเครื่องหมายคำพูดภายในสคริปต์หรือไม่

3
SSRS ล็อคตารางเมื่อทำการสอบถามหรือไม่?
DBA อาวุโสของฉันบอกฉันว่าการประมวลผลแบบสอบถาม SQL โดยค่าเริ่มต้นจะไม่ล็อคตาราง ฉันมีปัญหาบางอย่างกับรายงาน SQL Server Reporting Services (SSRS) ซึ่งดูเหมือนว่าจะมีปัญหาในการล็อคและรับข้อผิดพลาด ฉันทำ Googling แล้ว แต่หาอะไรไม่เจอ รายงาน SSRS ล็อคตารางที่กำลังสอบถามอยู่หรือไม่? มีเอกสาร MSDN ใดที่บันทึกพฤติกรรมนี้โดยเฉพาะ?

1
OPTION FORCE ORDER ปรับปรุงประสิทธิภาพจนกว่าแถวจะถูกลบ
ฉันมีแบบสอบถาม SQL Server 2008 ที่ค่อนข้างซับซ้อน (ประมาณ 200 บรรทัดของ SQL ที่มีความหนาแน่นพอสมควร) ซึ่งไม่ทำงานตามที่ฉันต้องการ เมื่อเวลาผ่านไปประสิทธิภาพจะลดลงจากประมาณ 0.5 วินาทีเป็นประมาณ 2 วินาที ดูที่แผนการดำเนินการมันค่อนข้างชัดเจนว่าการเรียงลำดับตัวเชื่อมใหม่จะทำให้ประสิทธิภาพดีขึ้น ฉันทำและมันลงไปถึงประมาณ 3 วินาที ตอนนี้แบบสอบถามมีคำแนะนำ "คำสั่งตัวเลือกการบังคับ"และชีวิตเป็นสิ่งที่ดี ตามมาด้วยฉันวันนี้ล้างฐานข้อมูล ฉันเก็บประมาณ 20% ของแถวที่จะดำเนินการในฐานข้อมูลที่เกี่ยวข้องอื่นใดนอกจากการลบแถว ... แผนปฏิบัติการที่ได้รับการทยอย มันผิดทั้งหมดจำนวนแถวย่อยบางอย่างจะกลับมาและ (ตัวอย่าง) แทนที่ a: <Hash> กับ <NestedLoops Optimized='false' WithUnorderedPrefetch='true'> ในขณะนี้เวลาของแบบสอบถามเริ่มจากประมาณ. 3 ถึงประมาณ 18 วินาที (!) เพียงเพราะฉันลบแถว หากฉันลบคำใบ้คำค้นหาฉันกลับไปใช้เวลาสอบถามข้อมูลประมาณ 2 วินาที ดีกว่า แต่แย่กว่านั้น ฉันได้ทำซ้ำปัญหาหลังจากกู้คืนฐานข้อมูลไปยังสถานที่และเซิร์ฟเวอร์หลายแห่ง …

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