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

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

1
ไม่สามารถกู้คืนได้ (ข้อผิดพลาด 3456)
ฉันมีสถานการณ์ที่ไม่สามารถเข้าใจได้ง่ายและคิดว่าฉันจะถามในฟอรัมนี้หากผู้อื่นอาจมีคำแนะนำ ฉันใช้ SQL Server 2008 R2 SP3 มาตรฐานบน Windows Server 2008R2 Enterprise ฐานข้อมูลต้องการการบำรุงรักษาและหลังจากที่ฉันต้องกู้คืนบนเซิร์ฟเวอร์อื่น ฉันมีการสำรองฐานข้อมูลเต็มรูปแบบโดยใช้ COPY_ONLY บวกชุดสำเนาสำรอง 4 ชุด ก่อนที่จะเริ่มสร้าง tlogbackup1 เปลี่ยนจากFULLเป็นBULK_LOGGEDโมเดลการกู้คืน เพิ่มกลุ่มไฟล์ใหม่ เพิ่มไฟล์ไปยัง newfilegroup ตั้ง newfilegroup ให้เป็นค่าเริ่มต้น เลือกลงในตาราง (ใน newfilegroup) วางตารางต้นฉบับ ลบไฟล์ต้นฉบับ ลบกลุ่มไฟล์ดั้งเดิม เปลี่ยนชื่อของตารางใหม่เพื่อให้ตรงกับตารางเดิม เปลี่ยนชื่อไฟล์ของ newfilegroup เพื่อให้ตรงกับกลุ่มไฟล์ดั้งเดิม เปลี่ยนชื่อไฟล์ในแค็ตตาล็อกเพื่อให้ตรงกับชื่อไฟล์ต้นฉบับ เปลี่ยนชื่อไฟล์ที่ระดับ OS เพื่อให้ตรงกับชื่อไฟล์ต้นฉบับ กำหนด filegroup เริ่มต้นให้เป็นต้นฉบับ นำ db ออนไลน์ เปลี่ยนจากBULK_LOGGEDเป็นFULLโมเดลการกู้คืน หลังจากเสร็จสิ้นทุกขั้นตอนให้สร้าง tlogbackup2 …

2
Page Life Expectancy พูดถึงเรื่องนี้อย่างไร
ฉันได้ติดตั้งซอฟต์แวร์ตรวจสอบในอินสแตนซ์ของ SQL Server สองสามตัวในสภาพแวดล้อม ฉันพยายามค้นหาคอขวดและแก้ไขปัญหาด้านประสิทธิภาพ ฉันต้องการตรวจสอบว่าเซิร์ฟเวอร์บางแห่งต้องการหน่วยความจำเพิ่มเติมหรือไม่ ฉันสนใจในหนึ่งเคาน์เตอร์: อายุขัยหน้า มันดูแตกต่างในทุกเครื่อง ทำไมมันถึงเปลี่ยนบ่อยในบางกรณีและมันหมายถึงอะไร? โปรดดูข้อมูลจากสัปดาห์ที่แล้วที่รวบรวมบนเครื่องที่แตกต่างกันสองสามเครื่อง คุณจะพูดอะไรเกี่ยวกับแต่ละตัวอย่าง ใช้ตัวอย่างการผลิตอย่างหนัก (1): istance การผลิตที่ใช้ในระดับปานกลาง (2) ตัวอย่างการทดสอบที่ใช้ไม่ค่อย (3) ใช้ตัวอย่างการผลิตอย่างหนัก (4) ตัวอย่างทดสอบที่ใช้ในระดับปานกลาง (5) ใช้คลังข้อมูลอย่างหนัก (6) แก้ไข: ฉันกำลังเพิ่มเอาต์พุตของ SELECT @@ VERSION สำหรับเซิร์ฟเวอร์เหล่านี้ทั้งหมด: Instance 1: Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) Jun 17 2011 00:54:03 Copyright (c) Microsoft Corporation …

1
การติดตาม SQL Server ขึ้นอยู่กับพอร์ต TCP ของไคลเอ็นต์
ฉันมีเทอร์มินัลเซิร์ฟเวอร์ Windows ที่มีผู้ใช้หลายคนลงชื่อเข้าใช้ผ่าน RDP เพื่อเรียกใช้แอปพลิเคชัน แอปพลิเคชันทำให้การเชื่อมต่ออย่างน้อยหนึ่งรายการต่อผู้ใช้กับอินสแตนซ์ของ SQL Server 2008 R2 ผู้ใช้ทั้งหมดเข้าถึงฐานข้อมูลเดียวกันโดยใช้การเข้าสู่ระบบ SQL เดียวกัน ฉันต้องการที่จะสามารถติดตามเซสชัน SQL ของผู้ใช้เฉพาะ แต่ฉันไม่พบวิธีการตรวจสอบเซสชัน SQL ที่เป็นของผู้ใช้ที่ อย่างไรก็ตามฉันสามารถระบุพอร์ต TCP ต้นทางแต่ละอินสแตนซ์ของแอปพลิเคชันที่ใช้ มีวิธีการติดตามเซสชัน SQL ที่ยึดตามพอร์ต TCP ของลูกค้าหรือไม่

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
ฉันควรซ้อนภายนอกเข้าร่วมใน SQL Server หรือไม่
ฉันเคยได้ยินข้อมูลที่หลากหลายเกี่ยวกับเรื่องนี้และหวังว่าจะได้รับความเห็นที่เป็นที่ยอมรับหรือผู้เชี่ยวชาญ หากฉันมีหลายรายการLEFT OUTER JOINแต่ละรายการขึ้นอยู่กับช่วงเวลาสุดท้ายมันจะดีกว่าไหมที่จะซ้อนมัน? สำหรับตัวอย่างที่วางแผนที่JOINจะMyParentขึ้นอยู่กับJOINการMyChild: http://sqlfiddle.com/#!3/31022/5 SELECT {columns} FROM MyGrandChild AS gc LEFT OUTER JOIN MyChild AS c ON c.[Id] = gc.[ParentId] LEFT OUTER JOIN MyParent AS p ON p.[id] = c.[ParentId] เปรียบเทียบกับhttp://sqlfiddle.com/#!3/31022/7 SELECT {columns} FROM MyGrandChild AS gc LEFT OUTER JOIN ( MyChild AS c LEFT OUTER JOIN MyParent …

1
ผลกระทบของการรัน sp_updatestats ในเซิร์ฟเวอร์การผลิตคืออะไร
การเรียกใช้sp_updatestatsSQL Server ในสภาพแวดล้อมการผลิตปลอดภัยหรือไม่? หรือมากกว่านั้นอะไรคือผลกระทบของการอัพเดตสถิติทั้งหมดบนเซิร์ฟเวอร์ sql สามารถ "ทำให้หายใจไม่ออก" เซิร์ฟเวอร์ sql ในขณะที่ทำงานและทำให้หมดเวลาหรือปัญหาอื่น ๆ สำหรับผู้ใช้หรือไม่

1
ความไม่เหมาะสมของการใช้ STATISTICS_NORECOMPUTE
เมื่อไม่นานมานี้ฉันได้มีส่วนร่วมในการบำรุงรักษาชุดฐานข้อมูลที่มีปัญหาดัชนีที่น่าสนใจ หนึ่งในสิ่งที่ทำให้ฉันแย่ที่สุดคือความแตกต่างของดัชนีระหว่างการพัฒนาการทดสอบแบบจำลองและเครื่องจักรการผลิต เนื่องจากความแตกต่างทำให้การปรับแต่งแบบสอบถามค่อนข้างยากที่จะทำการซิงค์เป็นหนึ่งในโครงการแรกของฉัน ในขณะที่ฉันได้เปรียบเทียบสภาพแวดล้อมการทดสอบและแบบจำลองฉันได้สังเกตเห็นว่าดัชนีส่วนใหญ่ในสภาพแวดล้อมแบบจำลองได้STATISTICS_NORECOMPUTEตั้งค่าไว้ONในขณะที่ไม่ได้ทำการทดสอบ ในสภาพแวดล้อมทั้งหมดมีงานยามค่ำคืนที่อัพเดตสถิติของฐานข้อมูลทั้งหมด ฉันไม่เคยจัดการSTATISTICS_NORECOMPUTEมาก่อนดังนั้นนี่คือคำถามของฉัน มีแนวทางปฏิบัติที่ดีที่สุดเมื่อจัดการกับการตั้งค่านี้หรือไม่? หากฉันกำลังอัปเดตสถิติในตอนท้ายของวันดีที่สุดที่จะเปิดSTATISTICS_NORECOMPUTEในทุกสภาพแวดล้อมของดัชนีทั้งหมดหรือไม่ หรือมีเหตุผลที่ดีที่จะไม่? แก้ไข: ฉันได้พบหนึ่งในบล็อกของ Kimberly Tripp ในหัวข้อที่นี่ซึ่งดูเหมือนว่าจะแนะนำว่าSTATISTICS_NORECOMPUTEควรใช้อย่างประหยัดที่สุด แต่ฉันยังคงกังวลเกี่ยวกับการปิดการใช้งานทั่วโลก มีใครลองบ้างและพวกเขามีประสบการณ์อย่างไรบ้าง

1
ปรับปรุงความเร็วของการสร้างดัชนีใหม่บนเซิร์ฟเวอร์ SQL
ฉันกำลังนำเข้าข้อมูลจำนวนมากไปยังฐานข้อมูลว่างเปล่าและก่อนที่ฉันจะเริ่มฉันจะปิดการใช้งานดัชนีที่ไม่ใช่แบบคลัสเตอร์ที่ไม่ซ้ำกันทั้งหมดเพื่อดูว่าฉันสามารถปรับปรุงประสิทธิภาพของการนำเข้าได้หรือไม่ ตอนนี้ฉันต้องการเปิดใช้งานดัชนีอีกครั้งและฉันสงสัยว่ามีสิ่งใดบ้างที่ฉันสามารถทำได้เพื่อปรับให้เหมาะสมนี้ มีตารางมากกว่า 100 ตารางและดัชนีเกือบ 2,000 รายการที่จะสร้างใหม่ ฐานข้อมูลมีขนาด 200GB ส่วนสำคัญของสคริปต์ที่ฉันใช้คือ: declare c_toggle_index cursor FORWARD_ONLY READ_ONLY for select 'alter index ' + QUOTENAME(i.name) + ' on ' + o.name + ' rebuild' from sys.indexes as i Inner Join sys.objects o On o.object_id = i.object_id Where o.is_ms_shipped = 0 And i.index_id >= …

2
วิธีที่มีประสิทธิภาพที่สุดในการบีบอัดและจัดเก็บข้อมูลสำรอง SQL Server คืออะไร? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับผู้ดูแลฐานข้อมูล Exchange Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ฉันทำการทดสอบวิธีต่างๆในการบีบอัดและจัดเก็บข้อมูลสำรอง SQL Server (โดยใช้รุ่น SQL Server 2008 R2 Enterprise) และฉันสงสัยว่าอัลกอริทึมการบีบอัดที่มีประสิทธิภาพมากที่สุดคืออะไรสำหรับการจัดเก็บสำรองข้อมูลระยะยาวนอก SQL อัลกอริทึมการบีบอัดภายใน ฉันไม่กังวลเกี่ยวกับที่เก็บข้อมูลจริงหรือเทปไดรฟ์หรืออะไรก็ตามเพียงแค่พยายามเปลี่ยนข้อมูลขนาด 3TB ของเราและล็อกไฟล์ให้เป็นไฟล์เดียวที่เล็กที่สุดที่ฉันสามารถทำได้ เช่นยกตัวอย่างเช่น. zip หรือ. 7z หรือมีตัวแปรมากเกินไปในฐานข้อมูลของฉันเพื่อให้สามารถประมาณการได้อย่างแม่นยำว่าอะไรจะมีประสิทธิภาพมากที่สุดและฉันจะต้องทำการทดสอบบางอย่าง? หรือการบีบอัดภายในของ SQL Server เป็นสิ่งที่ดีที่สุดที่ฉันจะได้รับ

2
เปิดใช้งานการติดตามเริ่มต้น แต่ไม่ทำงาน
เมื่อฉันสอบถามการกำหนดค่าของการติดตามเริ่มต้นมันจะเปิดใช้งาน: exec sp_configure 'default trace enabled'; --> name minimum maximum config_value run_value default trace enabled 0 1 1 1 แต่เมื่อฉันค้นหาsys.tracesพา ธ มันจะส่งคืน rowset ที่ว่างเปล่า: select * from sys.traces; สิ่งใดที่สามารถอธิบายได้ว่าไม่มีร่องรอยการเปิดใช้งาน

3
การจัดการกับช่วงข้อมูลเฉพาะตัวสำหรับการจำลองแบบของทรานแซคชัน
ฉันสังเกตเห็นว่าเมื่อคุณตั้งค่าการจำลองแบบของทรานแซคชัน SQL Server จะตั้งค่าการจัดการช่วงข้อมูลประจำตัวเป็นคู่มือ สิ่งนี้หมายความว่าในฐานข้อมูลการสมัครสมาชิกของฉันเมื่อฉันพยายามที่จะแทรกระเบียนใหม่ลงในตารางที่มี PK เป็นคอลัมน์ข้อมูลประจำตัวมันจะทำให้ฉันมีข้อผิดพลาดและบอกว่ามันพยายามแทรก PK ของ "1", "2 "," 3 "ฯลฯ นี่เป็นเพราะค่าข้อมูลประจำตัวปัจจุบันสำหรับคอลัมน์ข้อมูลประจำตัวทั้งหมดของผู้สมัครสมาชิกจะได้รับการรีเซ็ตเป็นค่าเริ่มต้น (ปกติ 1) แทนที่จะอยู่ในสิ่งที่เป็นอยู่ของผู้เผยแพร่ ฉันเข้าใจว่าทำไม SQL Server ถึงทำเช่นนี้คุณควรปล่อยให้ตารางสมาชิกเป็นแบบอ่านอย่างเดียว อย่างไรก็ตามสถานการณ์ของฉันเป็นเรื่องแปลกนอกรีต - ฉันอัปเดตสมาชิกของฉันเป็นระยะ ๆ ผ่านการจำลองแบบทำการสำรองข้อมูลทันทีของฐานข้อมูลนั้นจากนั้นฉันต้องการทำการอัปเดตบางอย่างสำหรับผู้สมัครสมาชิกที่จะไม่ถูกผลักกลับไปยังผู้เผยแพร่ เมื่อฉันไปอัปเดตผู้สมัครสมาชิกอีกครั้งฉันจะคืนค่าฐานข้อมูลจากการสำรองข้อมูลก่อนหน้าและดึงการอัปเดตล่าสุด เนื่องจากฉันต้องการอัพเดตผู้สมัครสมาชิกระหว่างการอัพเดตเหล่านี้ ('deltas ชั่วคราว' ถ้าคุณต้องการ) ฉันต้องการคอลัมน์ข้อมูลประจำตัวในการทำงานและไม่รีเซ็ตเป็น 1 เมื่อทำซ้ำ ฉันพยายามเปิดการจัดการช่วงข้อมูลเฉพาะตัวอัตโนมัติเมื่อตั้งค่าสิ่งพิมพ์ของฉัน แต่นั่นทำให้ฉันเกิดข้อผิดพลาดต่อไปนี้เมื่อฉันพยายามเพิ่มตารางลงในสิ่งพิมพ์: ข่าวสารเกี่ยวกับ 21231, ระดับ 16, สถานะ 1, กระบวนงาน sp_MSrepl_addarticle, บรรทัด 2243 การสนับสนุนช่วงข้อมูลเฉพาะตัวอัตโนมัติมีประโยชน์สำหรับสิ่งพิมพ์ที่อนุญาตให้มีการอัพเดตผู้สมัครสมาชิกเท่านั้น มีวิธีใดบ้างที่ฉันสามารถแก้ไขปัญหานี้ได้ ฉันต้องการนำเสนอการจำลองแบบนี้ไปยัง …

2
ฟังก์ชั่นแฮงค์กับการดำเนินการกรณีที่ไม่มี
ฉันสร้างฟังก์ชั่นที่ยอมรับวันที่เริ่มต้นและสิ้นสุดโดยมีวันที่สิ้นสุดเป็นตัวเลือก จากนั้นฉันเขียนCASEตัวกรองเพื่อใช้วันที่เริ่มต้นหากไม่มีวันที่สิ้นสุด CASE WHEN @dateEnd IS NULL THEN @dateStart ELSE @dateEnd END เมื่อฉันเรียกใช้ฟังก์ชันสำหรับเดือนล่าสุดของข้อมูล: SELECT * FROM theFunction ('2013-06-01', NULL) ... แบบสอบถามหยุดทำงาน ถ้าฉันระบุวันที่สิ้นสุด: SELECT * FROM theFunction ('2013-06-01', '2013-06-01') ... ผลลัพธ์จะถูกส่งคืนตามปกติ ฉันเอารหัสออกจากฟังก์ชั่นและวิ่งได้ดีในหน้าต่างแบบสอบถาม ฉันไม่สามารถทำซ้ำปัญหาซอทั้ง แบบสอบถามที่ชอบ: SELECT * FROM theFunction ('2013-04-01', '2013-06-01') ... ยังใช้งานได้ดี มีอะไรในแบบสอบถาม (ด้านล่าง) ที่อาจทำให้ฟังก์ชันหยุดทำงานเมื่อมีการNULLส่งผ่านสำหรับวันที่สิ้นสุดหรือไม่ ซอ Fiddle แผนการดำเนินการสำหรับSELECT * FROM theFunction …

2
RAM ที่เพิ่มขึ้นประสิทธิภาพที่แย่ลง
ติดตั้ง: Windows Server 2008 R2 SQL Server 2008 R2 SP1 RAM 240GB TempDB เป็นไฟล์ข้อมูลขนาด 8x16GB โดยไม่มีการเติบโตอัตโนมัติ (รวม 128GB) เซิร์ฟเวอร์ทางกายภาพ / เซิร์ฟเวอร์แบบเอกเทศ เซิร์ฟเวอร์นี้ใช้สำหรับการประมวลผล ETL เราเพิ่งติดตั้ง RAM เพิ่มเติมในเซิร์ฟเวอร์นี้รวม 240GB RAM บริการ SQL Server เป็นสิ่งเดียวที่ทำงานจริง หน่วยความจำแสดงผลได้ดีใน BIOS, OpenManage และ Windows ถ้าฉันกำหนดค่า SQL Server ให้ใช้หน่วยความจำต่ำสุด / สูงสุด 70 / 100GB เราก็ไม่มีปัญหา อย่างไรก็ตามเมื่อฉันเพิ่มเป็น 120/150GB ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อฉันเรียกใช้กระบวนการ …

2
การทำธุรกรรมและลองจับในงาน SQL Server
เรามีการดำเนินงาน DML ในแต่ละขั้นตอนของงาน SQL Server เพื่อให้แน่ใจว่าการปรับปรุง / แทรกจะถูกรีดกลับในกรณีอะไรผิดพลาดผมได้ห่อการปรับเปลี่ยนข้อมูลของแต่ละขั้นตอนในTRY CATCHและTRANSACTIONบล็อก: BEGIN TRY BEGIN TRANSACTION [[INSERT/update statements]] ... IF @@TRANCOUNT > 0 BEGIN COMMIT TRANSACTION PRINT 'Successful.' END END TRY BEGIN CATCH SELECT ERROR_NUMBER() AS ErrorNumber, ERROR_SEVERITY() AS ErrorSeverity, ERROR_STATE() AS ErrorState, ERROR_PROCEDURE() AS ErrorProcedure, ERROR_LINE() AS ErrorLine, ERROR_MESSAGE() AS ErrorMessage IF …

1
การเชื่อมต่อเครื่องมือไคลเอ็นต์การตั้งค่า SQL Server 2008 R2
ระหว่างการตั้งค่า SQL Server 2008 R2 ฉันเห็นช่องทำเครื่องหมายสำหรับตัวเลือกการติดตั้ง "เครื่องมือเชื่อมต่อลูกค้า" และ "เครื่องมือในการเข้ากันได้ของไคลเอ็นต์ย้อนหลัง" มันบอกว่าสิ่งเหล่านี้เป็นส่วนประกอบสำหรับการสื่อสารเซิร์ฟเวอร์ของลูกค้า ใครสามารถอธิบายองค์ประกอบเหล่านี้ได้บ้าง สิ่งที่ติดตั้งบนเซิร์ฟเวอร์จริงเมื่อคุณเลือกส่วนประกอบเหล่านี้

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