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

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

2
การแบ่งพาร์ติชัน SQL Server 2008 R2 - FileGroup เดียวกัน, 1 ไฟล์, 2 partition_numbers - ช่วยเหลือ
เป็นครั้งแรกที่ฉันแบ่งพาร์ติชันใน SQL Server ฉันเรียนรู้จากคู่มือ Brent Ozar ซึ่งยอดเยี่ยม :) สองสามครั้งที่ฉันได้พบกับสถานการณ์แปลก ๆ เมื่อฉันวิ่ง: SELECT * FROM ph.FileGroupDetail ORDER BY partition_number Go มีกลุ่มไฟล์เดียวกันแสดงสองครั้งโดยมี 2 partition_numbers ที่แตกต่างกัน 1 อย่างถูกต้องในตอนท้ายด้วยค่าช่วงอื่น ๆ ที่เริ่มต้นด้วย null range_value คลิกที่นี่เพื่อดูภาพขยาย คำถามสองข้อ: สิ่งนี้เกิดขึ้นได้อย่างไรฉันไปผิดที่ไหน ฉันจะแก้ไขปัญหานี้ได้อย่างไรซึ่งหมายถึงวิธีกำจัดอย่างใดอย่างหนึ่งในตอนเริ่มต้นเนื่องจากฉันมีพาร์ติชันว่างเปล่าที่จุดเริ่มต้น ฉันพยายามลบไฟล์ (ทำงานเมื่อมันว่างเปล่า) และ filegroup แต่ filegroup บอกว่าไม่สามารถลบได้ มีใครช่วยอธิบายได้ว่าเรื่องนี้เกิดขึ้นได้อย่างไรและจะกำจัดรายการพาร์ติชั่น 2 ได้อย่างไร?

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

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 …

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 กำลังรันในขณะที่โพรซีเดอร์ …

1
ประสิทธิภาพการสืบค้นต่ำ
เรามีกระบวนการขนาดใหญ่ (10,000+ บรรทัด) ซึ่งโดยทั่วไปแล้วจะทำงานใน 0.5-6.0 วินาทีขึ้นอยู่กับปริมาณข้อมูลที่ต้องใช้งาน ในช่วงเดือนที่ผ่านมาหรือประมาณ 30 กว่าวินาทีหลังจากเราอัปเดตสถิติด้วย FULLSCAN เมื่อมันช้าลง sp_recompile "แก้ไข" ปัญหาจนกว่างานสถิติรายค่ำคืนจะทำงานอีกครั้ง ด้วยการเปรียบเทียบแผนการดำเนินการที่ช้าและเร็วฉันได้ จำกัด ให้แคบลงเป็นตาราง / ดัชนีเฉพาะ เมื่อมันทำงานช้ามันกำลังประมาณ ~ 300 แถวจะถูกส่งคืนจากดัชนีเฉพาะเมื่อมันทำงานเร็วมันจะประมาณ 1 แถว เมื่อรันช้ามันจะใช้ Table Spool หลังจากทำการค้นหาบนดัชนีเมื่อมันรันเร็วมันจะไม่ทำ Spool Table ใช้ DBSS SHOW_STATISTICS ฉันทำกราฟฮิสโตแกรมดัชนีใน excel ปกติแล้วฉันจะคาดหวังว่ากราฟจะเป็น "ภูเขากลิ้ง" มากกว่า แต่ดูเหมือนว่าภูเขาซึ่งเป็นจุดที่สูงที่สุดคือ 2x-3x สูงกว่าค่าอื่น ๆ ส่วนใหญ่บนกราฟ หากฉันอัปเดตสถิติโดยไม่มี FULLSCAN มันจะดูเป็นปกติมากกว่า ถ้าฉันเรียกใช้ด้วย FULLSCAN อีกครั้งดูเหมือนว่าฉันอธิบายไว้ข้างต้น …

1
การส่งชื่อคอลัมน์แบบไดนามิกไปที่ UNPIVOT
ฉันมีตารางที่มีข้อมูลต่อไปนี้ First Second Third Fourth Fifth Sixth 2013-08-20 2013-08-21 2013-08-22 2013-08-23 2013-08-24 2013-08-25 และการใช้งาน UNPIVOT SELECT Data ,DATENAME(DW, Data) AS DayName FROM Cal UNPIVOT(Data FOR D IN ( First, Second, Third, Fourth, Fifth, Sixth )) AS unpvt ฉันได้รับผลลัพธ์ต่อไปนี้ Data DayName 2013-08-20 Tuesday 2013-08-21 Wednesday 2013-08-22 Thursday 2013-08-23 Friday 2013-08-24 Saturday …

2
ฉันสามารถติดตั้ง SQL Server 2012 บนเครื่องที่มี 2008 R2 แล้วได้หรือไม่?
ฉันใช้ SQL Server 2008 R2 มาระยะหนึ่งแล้วมันใช้งานได้ดีมาก ตอนนี้ฉันต้องใช้ SQL Server 2012 จะมีผลกับฐานข้อมูลที่มีอยู่ของฉันหรือไม่ ความเสี่ยงในการติดตั้ง SQL Server 2012 บนเครื่องที่ SQL Server 2008 R2 มีความเสี่ยงมากแค่ไหน?

3
การเรียกใช้งาน SQL Server ภายในงานอื่น
เป็นไปได้ไหมที่จะเรียกใช้งาน SQL Server เพื่อให้ทำงานภายในงานอื่นได้? ฉันรู้ว่าเราสามารถเพิ่มขั้นตอนทั้งหมดของงาน 1 ลงในงาน 2 แต่ฉันไม่ต้องการทำเช่นนั้น ก่อนอื่นงานที่ 2 ค่อนข้างใหญ่และสองฉันไม่สามารถหาตัวเลือกคัดลอกวางเพื่อคัดลอกขั้นตอนระหว่างงานดังนั้นมันจะใช้เวลานานในการเพิ่มขั้นตอนด้วยตนเอง ข้อเสนอแนะใด ๆ ที่มีความนิยม

1
การปรับให้เหมาะสมของแบบสอบถาม: ช่วงเวลา
ในหลักฉันมีช่วงเวลาสองชนิด: presence time และ absence time absence time อาจเป็นประเภทที่แตกต่างกัน (เช่นตัวแบ่งการขาดวันพิเศษและอื่น ๆ ) และช่วงเวลาอาจทับซ้อนและ / หรือตัดกัน มันเป็นความไม่แน่นอนว่ามีเพียงการรวมกันเป็นไปได้ของช่วงเวลาที่มีอยู่ในข้อมูลดิบเช่น การทับซ้อนช่วงเวลาการแสดงตนไม่สมเหตุสมผล แต่อาจมีอยู่ ฉันพยายามระบุช่วงเวลาการแสดงตนที่เกิดขึ้นในหลาย ๆ ทางในตอนนี้สำหรับฉันความสะดวกสบายที่ดีที่สุดน่าจะเป็น follwing ;with "timestamps" as ( select "id" = row_number() over ( order by "empId", "timestamp", "opening", "type" ) , "empId" , "timestamp" , "type" , "opening" from ( select …

3
SELECT ROW_NUMBER () รับประกันว่าจะให้ผลลัพธ์ที่เรียงลำดับตามหมายเลขแถวที่สร้างขึ้นหรือไม่
เช่นพิจารณาแบบสอบถาม SQL: SELECT A.[Name], ROW_NUMBER() OVER(ORDER BY A.[Name] ASC) FROM [FooTable] AS A ที่นี่ฉันสังเกตเห็นผลลัพธ์ที่ถูกส่งคืนโดย A. [ชื่อ] หากฉันเปลี่ยนคอลัมน์เรียงลำดับที่กำหนดไว้ในฟังก์ชัน ROW_NUMBER เป็นคอลัมน์อื่นผลลัพธ์จะกลายเป็นคอลัมน์เรียงลำดับอีกครั้ง ฉันคาดหวังว่าหมายเลขแถวจะถูกกำหนดให้กับแถว แต่ฉันไม่ได้คาดหวังว่าแถวจะกลับมาเรียงตามเกณฑ์เดียวกัน นี่เป็นเพียงผลข้างเคียงของวิธีการดำเนินการค้นหา (ในกรณีของฉันใน SQL Server 2008 R2) หรือพฤติกรรมนี้รับประกันได้หรือไม่ (ฉันไม่พบการอ้างอิงถึงการรับประกันดังกล่าว)

1
การเริ่มต้นการจำลองแบบของทรานแซคชันจากการสำรองข้อมูล
มีตัวเลือกเมื่อตั้งค่าสิ่งพิมพ์สำหรับการจำลองแบบเพื่ออนุญาตให้เริ่มต้นจากการสำรองข้อมูล เราได้สร้างฐานข้อมูลที่จำลองแบบมาหลายปีแล้วและได้เริ่มต้นจาก backkup เสมอ แต่ไม่เคยตั้งค่าสถานะนี้ (เราเพิ่งสังเกตเห็นมันเป็นครั้งแรกเมื่อสองสามวันก่อน) การจำลองแบบได้ทำงานโดยไม่มีปัญหาตลอดเวลานี้อย่างแน่นอน ฉันพบว่ามีเพลงฮิตมากมายที่อธิบายว่าต้องใช้สิ่งนี้ แต่ไม่มีใครอธิบายได้ว่าทำไม ใครบ้างมีความเข้าใจในสิ่งที่จริงนี้ไม่? จากความได้เปรียบของฉันดูเหมือนจะไม่จำเป็น แต่ฉันคิดว่าฉันต้องพลาดบางสิ่งบางอย่าง

1
กระบวนงานที่เก็บไว้เพื่อส่งคืนข้อมูลตารางที่สร้างขึ้นแบบไดนามิก
เรื่องราวย้อนกลับอย่างรวดเร็วเรากำลังทำงานกับผู้ขายภายนอกที่มีระบบสำรวจ ระบบไม่ได้ถูกออกแบบมาอย่างดีที่สุดเมื่อคุณสร้างแบบสำรวจใหม่และระบบจะสร้างตารางใหม่เช่น: Tables ____ Library_1 -- table for Survey 1 SurveyId int InstanceId int Q_1 varchar(50) Library_2 -- table for Survey 2 SurveyId int InstanceId int Q_2 int Q_3 int Q_4 varchar(255) ตารางจะถูกสร้างขึ้นด้วยการSurveyIdที่ส่วนท้ายของชื่อ ( Library_) และคอลัมน์คำถามจะถูกสร้างขึ้นด้วยการQuestionIdที่ส่วนท้ายของมัน ( Q_) ในการชี้แจงคำถามจะถูกเก็บไว้ในตารางแยกต่างหากดังนั้นในขณะที่รหัสคำถามนั้นเรียงตามลำดับโดยไม่เริ่มต้นที่ 1 สำหรับแต่ละแบบสำรวจ คอลัมน์คำถามจะขึ้นอยู่กับรหัสที่กำหนดให้กับพวกเขาในตาราง ดูเหมือนง่ายพอที่จะสืบค้นยกเว้นเราจำเป็นต้องดึงข้อมูลจากตารางสำรวจทั้งหมดที่จะส่งไปยังระบบอื่นและนี่คือที่มาของปัญหาเนื่องจากตารางจะถูกสร้างขึ้นโดยอัตโนมัติเมื่อมีการเพิ่มแบบสำรวจใหม่โดยหน้า แอปพลิเคชันสิ้นสุดระบบอื่นไม่สามารถจัดการกับโครงสร้างประเภทนี้ได้ พวกเขาต้องการข้อมูลที่สอดคล้องกันเพื่อให้สามารถบริโภคได้ ดังนั้นฉันจึงมอบหมายให้เขียนโพรซีเดอร์ที่เก็บไว้ซึ่งจะดึงข้อมูลจากตารางสำรวจทั้งหมดและวางไว้ในรูปแบบต่อไปนี้: SurveyId InstanceId QNumber Response …

3
วิธีเพิ่มประสิทธิภาพของ Virgin Query ใน MS SQL Server
ฉันมีเว็บไซต์ ASP.NET ที่เป็นเจ้าของแคชข้อมูลและข้อมูลไม่เปลี่ยนแปลงเป็นเวลานานดังนั้นจึงไม่จำเป็นต้องสืบค้น SQL Server ครั้งที่สองด้วยแบบสอบถามเดียวกัน ฉันต้องปรับปรุงประสิทธิภาพของแบบสอบถามครั้งแรก (บริสุทธิ์) ที่ไปยัง SQL Server นั้น แบบสอบถามบางแห่งประมวลผลข้อมูลมากจนอาจทำให้ SQL Server ใช้งานtempdbได้ ฉันไม่ใช้ตัวแปร temp table หรือ temp tables ดังนั้น SQL Server ตัดสินใจที่จะใช้tempdbด้วยตนเองทุกครั้งที่ต้องการ ขนาดฐานข้อมูลของฉันคือ 16Gb ฉันมี RAM จริง 32Gb อยู่ในเครื่องเซิร์ฟเวอร์ ฉันเข้าใจว่ากลยุทธ์การแคช MS SQL Server พยายามเก็บข้อมูลใน RAM เพื่อเพิ่มความเร็วของการค้นหาที่คล้ายกันหากต้องการโหลดข้อมูลเดียวกันอีกครั้ง นอกจากนั้นมันจะพยายามใช้ RAM ที่มีอยู่แทน tempdb เพื่อเพิ่มความเร็วในการทำงานโดยไม่ทำให้เกิดการเข้าถึงดิสก์ ฉันคิดว่าเมื่อแบบสอบถามที่ต้องการเก็บบางสิ่งใน tempdb SQL Server มาและมี …

2
มีวิธีใดที่จะบังคับให้มีการแก้ไขชื่อรอการตัดบัญชีแม้ว่าตารางจะมีอยู่เมื่อสร้างกระบวนงานที่เก็บไว้?
เมื่อสร้างโพรซีเดอร์ที่เก็บไว้ใน SQL Server คุณจะได้รับอนุญาตให้อ้างถึงตารางที่ไม่มีอยู่ แต่ถ้าตารางนั้นมีอยู่คอลัมน์ใด ๆ ที่คุณอ้างถึงในขั้นตอนต้องมีอยู่ในตารางนั้น ( การแก้ปัญหาชื่อที่เลื่อนออกไป ) เป็นไปได้หรือไม่ที่จะสั่งให้ SQL Server เลื่อนการจำแนกชื่อของตารางทั้งหมดที่อ้างอิงในกระบวนการโดยไม่คำนึงว่ามีอยู่จริงหรือไม่? ฉันต้องการเก็บการตรวจสอบไวยากรณ์ทั่วไปดังนั้นแม้ว่าจะเป็นไปได้แฮ็คการนิยามโพรซีเดอร์ที่เก็บไว้ในตารางระบบไม่ใช่ตัวเลือก ฉันคาดหวังว่าการขอทำสิ่งนี้อาจจะดูแปลก ๆดังนั้นนี่คือพื้นหลัง: ฉันสร้างคำจำกัดความของตารางโดยอัตโนมัติและขั้นตอนการจัดเก็บจากแอปพลิเคชันที่เขียนใน C # และมันยากมากสำหรับฉันที่จะเปลี่ยนรหัส พวกเขา รหัสของฉัน "รับประกัน" ว่าสคีมานั้นสอดคล้องกันในการทำธุรกรรม แต่ในปัจจุบันฉันไม่สามารถรับประกันได้ว่าจะมีการกำหนดคอลัมน์ตารางก่อนที่ฉันจะกำหนดขั้นตอนการจัดเก็บซึ่งอ้างอิงพวกเขา ด้านล่างเป็นตัวอย่างที่ยอมรับได้ของ SQL ที่สร้างขึ้นโดย C # ซึ่ง "อธิบาย" ปัญหาที่ฉันพยายามแก้ไข --Say this table already exists. CREATE TABLE myTable ( a NVARCHAR(MAX) ) GO --My C# code …

4
SQL Server 2008 R2: ปัญหาหลังจากเปลี่ยนชื่อคอมพิวเตอร์
ฉันมีปัญหาสับสนหลังจากเปลี่ยนชื่อคอมพิวเตอร์ของเซิร์ฟเวอร์ระยะไกลที่โฮสต์อินสแตนซ์ SQL Server ในพื้นที่ โดยพื้นฐานแล้วรีโมตเซิร์ฟเวอร์ถูกย้ายจากไซต์หนึ่งไปยังอีกไซต์หนึ่ง เพื่ออำนวยความสะดวกในเรื่องนี้ฉันสำรองและกู้คืนฐานข้อมูลเก่าเป็นชื่อฐานข้อมูลใหม่ล้างข้อมูลเพื่อให้สามารถใช้เป็นฐานข้อมูลใหม่สำหรับซอฟต์แวร์ไคลเอ็นต์ ฉันยังเปลี่ยนชื่อคอมพิวเตอร์เนื่องจากเรามักจะทำเพื่อระบุแต่ละเซิร์ฟเวอร์ด้วยหมายเลขไซต์ ฐานข้อมูลสามารถเชื่อมต่อโดยซอฟต์แวร์ไคลเอนต์ได้ดีและฉันสามารถเข้าสู่ระบบโดยตรงไปยัง SQL Server ได้ดี อย่างไรก็ตามหนึ่งในงานตัวแทนการเซิร์ฟเวอร์ SQL ของฉันล้มเหลวโดยมีข้อผิดพลาดในบันทึกเหตุการณ์: SQL Server ที่กำหนดเวลางาน 'รีเซ็ตทุกคืน' (0x4F76FDFFF6DFFE4EA0DE4A70252AD3BD) - สถานะ: ล้มเหลว - เรียกใช้เมื่อ: 2012-02-07 08:10:05 - ข้อความ: งานล้มเหลว ไม่สามารถระบุได้ว่าเจ้าของ (ไซต์ -19 \ Admin) ของงานคืนใหม่มีการเข้าถึงเซิร์ฟเวอร์หรือไม่ (เหตุผล: ไม่สามารถรับข้อมูลเกี่ยวกับกลุ่ม Windows NT / ผู้ใช้ 'ไซต์ -19 \ Admin' รหัสข้อผิดพลาด 0x534 [SQLSTATE 42000] ( …

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