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

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

2
SQL 2005: เราสามารถกำหนดงานบำรุงรักษาดัชนีการสร้างใหม่ที่สามารถขยายขนาดไฟล์บันทึกฐานข้อมูลได้หรือไม่?
บน SQL Server 2005 ถ้าฐานข้อมูลทั้งหมดอยู่ในโหมดเต็มรูปแบบ (ที่มีการสำรองข้อมูลบันทึกธุรกรรมรายชั่วโมง) เป็นไปได้หรือไม่ที่จะตรวจสอบว่าการสร้างดัชนีทั้งหมดของฐานข้อมูลใหม่สามารถสร้างล็อกไฟล์ของฐานข้อมูลได้หรือไม่ และสามารถเติบโตได้เท่าไหร่ หากไม่มีคำตอบที่ตรงแล้วทิศทางใด ๆ จะได้รับการชื่นชมจริงๆ ขอบคุณล่วงหน้า.

10
ย่อขนาดฐานข้อมูลให้ต่ำกว่าขนาดเริ่มต้น
ฉันมีฐานข้อมูล dev SQL Server 2005 ที่เป็นสำเนา 30GB เราได้ลบข้อมูลบางส่วนที่ไม่ต้องการใน dev ซึ่งนำพื้นที่ไฟล์ข้อมูลที่ใช้ไปถึง 20GB ดังนั้นเราจึงไม่ได้ใช้ประมาณ 33% ฉันต้องการเรียกคืนพื้นที่ซึ่งจะช่วยให้เรามีฐานข้อมูล dev ที่สองบนเซิร์ฟเวอร์ (ขึ้นอยู่กับรุ่นที่ตัดลง); อย่างไรก็ตามฉันไม่สามารถเรียกคืนพื้นที่ได้ฉันได้ทำสิ่งต่อไปนี้แล้ว: ขนาดเริ่มต้นของไฟล์SMS2_Dataคือ 30GB DBCC SHRINKFILE (N'SMS2_Data' , 0, TRUNCATEONLY) ติดตามโดย DBCC SHRINKFILE (N'SMS2_Data' , 19500) ไม่มีความสุข ฉันได้ลองทำสำเนาสำรองสร้างฐานข้อมูลใหม่ที่มีขนาดเริ่มต้นต่ำแล้วกู้คืนไม่มีความสุขเมื่อขนาดเริ่มต้นถูกเขียนทับ ได้ลองแล้ว: ALTER DATABASE SMS2HazSub MODIFY FILE (NAME = 'SMS2_Data', SIZE = 20000) ข้อผิดพลาดนี้บอกว่า: ไฟล์ MODIFY ล้มเหลว …

3
การระบุว่าค่าใดไม่ตรงกับแถวของตาราง
ฉันต้องการให้สามารถตรวจสอบได้อย่างง่ายดายว่าตัวระบุที่ไม่ซ้ำกันอยู่ในตารางของผู้ที่ระบุในแบบสอบถาม เพื่ออธิบายให้ดียิ่งขึ้นนี่คือสิ่งที่ฉันต้องทำตอนนี้เพื่อตรวจสอบ ID ของรายการ "1, 2, 3, 4" ที่ไม่มีอยู่ในตาราง: SELECT * FROM dbo."TABLE" WHERE "ID" IN ('1','2','3','4')สมมติว่าตารางไม่มีแถวที่มี ID 2 ดัมพ์ผลลัพธ์ลงใน Excel เรียกใช้ VLOOKUP ในรายการต้นฉบับที่ค้นหาแต่ละค่าของรายการในรายการผลลัพธ์ VLOOKUP ใด ๆ ที่ส่งผลให้#N/Aมีค่าที่ไม่ได้เกิดขึ้นในตาราง ฉันคิดว่าต้องมีวิธีที่ดีกว่าในการทำสิ่งนี้ ฉันกำลังมองหาสิ่งที่ต้องการ รายการที่จะตรวจสอบ -> แบบสอบถามบนตารางเพื่อตรวจสอบ -> สมาชิกของรายการที่ไม่ได้อยู่ในตาราง

3
การย้ายข้อมูลจาก SQL Server 2005 ถึง 2016
ฉันยังใหม่กับการจัดการ SQL Server แต่ฉันพอใจกับภาษา SQL และสร้างแพ็คเกจ SSIS ฉันต้องการย้ายข้อมูลจาก SQL Server 2005 ถึง 2016 คำถามของฉันคือฉันต้องกังวลเกี่ยวกับฐานข้อมูลระบบและวัตถุอื่น ๆ เช่นดัชนีขั้นตอนการจัดเก็บมุมมองความปลอดภัยและการอนุญาต เข้าสู่ระบบหรือฉันสามารถย้ายข้อมูล ซึ่งจะเป็นขั้นตอนที่แนะนำในกรณีนี้

3
ปิดใช้งานการบันทึกในบางตาราง
ฉันใช้ SQL Server 2005 ฉันมีสองตารางที่มีข้อมูลรวม ข้อมูลกำลังได้รับการปรับปรุงอย่างต่อเนื่องสร้างข้อมูลบันทึกเกือบ 5GB ต่อวัน (นั่นใหญ่กว่าฐานข้อมูลทั้งหมด!) ฉันต้องการปิดการใช้งานการบันทึกในตารางเหล่านี้เนื่องจากการย้อนกลับไม่จำเป็นจริงๆ อย่างไรก็ตามฉันต้องการที่จะเข้าสู่ระบบในตารางอื่น ๆ ในฐานข้อมูล เป็นไปได้หรือไม่ที่จะปิดการใช้งานการบันทึกในตารางบางอย่างภายในฐานข้อมูล? หากไม่มีฉันสามารถวางสองตารางในสคีมาเดียวกันจากนั้นปิดใช้งานการบันทึกในสคีมาหรือไม่ เป็นตัวเลือกเดียวที่จะย้ายสองตารางไปยังฐานข้อมูลแยกต่างหากและปิดการใช้งานการบันทึกที่นั่นหรือไม่ อัปเดต: ฉันเดาว่าฉันจะอธิบายว่าทำไมฉันจึงไม่จำเป็นต้องบันทึกกิจกรรมบนตารางเหล่านี้ ตารางทั้งสองนั้นเต็มไปด้วยข้อมูล GPS ดังนั้นจึงมีขนาดค่อนข้างใหญ่ ตารางแรกคือการจับตำแหน่งดิบจากหกตาราง Android ในเขตข้อมูล ข้อมูลใหม่จากแท็บเล็ตแต่ละเครื่องมาในทุก ๆ 5-10 วินาที ข้อมูลนั้นจะถูกรวมเป็น locationA, locationB, travelTime เป้าหมายคือเพื่อให้มีเวลาในการเดินทางสั้นที่สุดระหว่างสถานที่ทั้งหมดโดยอิงจากข้อมูลการขับขี่จริง ข้อมูลนี้ใช้สำหรับเมืองเล็ก ๆ เท่านั้นและแม่นยำถึงทศนิยมสี่ตำแหน่งเท่านั้นจึงสามารถจัดการได้ อย่างไรก็ตามเมื่อข้อมูลดิบใหม่เข้ามามีเวลาเดินทางช้าลงซึ่งจำเป็นต้องได้รับการอัปเดตและข้อมูลใหม่ที่ต้องถูกแทรก เมื่อรวบรวมข้อมูลดิบแล้วข้อมูลจะถูกลบทิ้ง เราจะไม่ย้อนกลับไปสู่เวลาเดินทางอีกต่อไปดังนั้นนี่คือเหตุผลที่การย้อนกลับไม่สำคัญมากในตารางเหล่านี้

4
ฉันจำเป็นต้องเก็บไฟล์. LDF จริงๆหรือไม่
ในแต่ละเดือนเราจัดทำฐานข้อมูลการผลิตของเราทุกสิ้นเดือน สแน็ปช็อตสิ้นเดือนนี้มีจุดประสงค์เพื่อการรายงานอย่างเคร่งครัดไม่มีส่วนแทรกการอัปเดตหรือการลบที่เคยทำ แต่ละสแน็ปช็อตเหล่านี้มี.MDFและ.LDFไฟล์ ฉันต้องการลบ.LDFไฟล์และเพิ่มพื้นที่ว่างบนเซิร์ฟเวอร์ มีเหตุผลใดบ้างที่ฉันจำเป็นต้องจัดเก็บ.LDFไฟล์? ชี้แจง: ฐานข้อมูลการผลิตของเราถูกสร้างขึ้นใหม่ทุกคืนจากการแตกไฟล์ออกจากระบบอื่น เรารายงานจากฐานข้อมูลการผลิตเท่านั้น ... ไม่มีการอัปเดต กระบวนการกลางคืน: จากสิ่งที่ฉันสามารถบอกได้ ... แต่ละคืนตาราง databse จะถูกตัดทอน ตารางจะถูกเติมผ่านชุดคำสั่งแทรกจำนวนมาก ดัชนีจะถูกสร้างใหม่

4
มีเหตุผลที่ดีในการรักษาวันที่และเวลาในคอลัมน์แยกกันหรือไม่?
ฉันพยายามเข้าใจการตัดสินใจของผู้จำหน่ายซอฟต์แวร์ของเราเพื่อเก็บวันที่และเวลาในคอลัมน์แยกกัน ตัวอย่างเช่นเมื่อแถวถูกสร้างหรือปรับปรุง ทั้งเวลาและวันที่เป็นคอลัมน์ DateTime เรากำลังใช้ SQL Server 2005 ฐานข้อมูลเก็บข้อมูลระบบ ERP ของเราและฉันเชื่อว่าตารางที่ใหญ่ที่สุดมีประมาณ ~ 3 ล้านแถว ตารางส่วนใหญ่อยู่ระหว่างประมาณ 100,000 ถึง 1 000 000 แถว โดยส่วนตัวแล้วฉันจะเลือก DateTime เดียวสำหรับการประทับเวลาเดียว สิ่งนี้จะช่วยให้การคำนวณความแตกต่างของเวลาง่ายขึ้นและสามารถแยกส่วนวันที่และเวลาได้อย่างง่ายดายจากการประทับเวลา มันจะใช้พื้นที่น้อยลง การแยกวันและเวลานั้นเป็นการฝึกฝนที่ไม่ดีหรือมีบางสิ่งที่ยอดเยี่ยมมากในการออกแบบนี้ที่ฉันไม่เข้าใจ

3
ต้องการความช่วยเหลือในการแก้ไขปัญหาสถานการณ์การหยุดชะงักของ SQL Server 2005
ฉันกำลังทำงานในสถานการณ์การหยุดชะงักที่ผู้เข้าร่วมเพียงคนเดียวในการหยุดชะงักดูเหมือนจะเป็นตารางเดียวและขั้นตอนการจัดเก็บเดียวที่ถูกลบออกจากตารางนั้น ฉันดึงข้อสรุปนั้นจากการวิเคราะห์บันทึกข้อผิดพลาด sql ของฉันในช่วงเวลาของการหยุดชะงักหลายครั้งโดยใช้บทความ MSDN ด้านล่างเป็นแนวทางในการถอดรหัสการติดตามในบันทึกข้อผิดพลาด ตาราง DEXTable และขั้นตอนการจัดเก็บ ClearDEXTableRows มีการกำหนดไว้ด้านล่าง มีกระบวนงานที่เก็บไว้อีก InsertDEXTableRow ที่แทรกแถวลงใน DEXTable แต่ proc ที่ดูเหมือนจะไม่เกี่ยวข้องในการหยุดชะงักตามรายการในบันทึกข้อผิดพลาด sql DEXTable มีแถวที่อยู่ประมาณ 8.3 ล้านแถวและมีแนวโน้มที่จะเติบโตอย่างต่อเนื่อง ตารางผู้ตอบแบบสอบถามมีขนาดใหญ่และมีแนวโน้มที่จะเติบโตอย่างต่อเนื่อง มันเข้าถึงได้จากเว็บไซต์ปริมาณการใช้งานสูงที่มีหน้าเว็บที่เรียก ClearDEXTableRows และ InsertDEXTableRow บ่อย ๆ อย่างต่อเนื่อง การหยุดชะงักเกิดขึ้นระหว่าง 0 ถึง 9 ครั้งต่อวันในช่วง 10 วันที่ผ่านมา ฉันเปิดใช้งานการติดตาม sql สำหรับ 1222 (โดยใช้ DBCC TRACEON 1222) และเพิ่งเปิดใช้งานการตั้งค่าสถานะ 1204 มีคำอธิบายที่ดีเกี่ยวกับผลลัพธ์สำหรับการตั้งค่าสถานะเหล่านี้ในการตรวจจับและการสิ้นสุด Deadlocks …

2
วิธีสร้างคอลัมน์เฉพาะด้วยค่าเริ่มต้นของ UUID
ฉันมีคอลัมน์สำคัญสำหรับการใช้ภายในซึ่งเป็นเพียงจำนวนเต็มที่เพิ่มขึ้น แต่ฉันต้องการคอลัมน์ที่ไม่ซ้ำที่สองซึ่งเป็น UUID แต่ฉันไม่รู้ว่าจะมีฟังก์ชันที่เรียกใช้เป็นค่าเริ่มต้นได้อย่างไร (เพื่อให้ SQL เซิร์ฟเวอร์กำลังสร้าง UUID ไม่ใช่จาวา) มีเอกสารใดบ้างที่ฉันสามารถแนะนำให้ฉันได้

5
แบบสอบถามที่เรียกใช้แตกต่างกันใน SQL 2005 กับ SQL 2008R2
ที่สำนักงานของฉันเรามีข้อความค้นหาที่น่าเกลียด แต่ทำงานได้ค่อนข้างดีในการผลิตและในสภาพแวดล้อมการพัฒนา (20 วินาทีและ 4sec ตามลำดับ) อย่างไรก็ตามในสภาพแวดล้อมการทดสอบของเราใช้เวลามากกว่า 4 ชั่วโมง SQL2005 (+ แพตช์ล่าสุด) กำลังทำงานในการผลิตและการพัฒนา SQL2008R2 กำลังทำงานในการทดสอบ ฉันดูที่ Query Plan และมันแสดงให้เห็นว่า SQL2008R2 กำลังใช้ TempDB โดย Table Spool (lazy spool) เพื่อจัดเก็บแถวที่ส่งคืนจากลิงก์เซิร์ฟเวอร์ ขั้นตอนต่อไปคือการแสดงลูปซ้อน (ซ้ายกึ่งต่อต้านเข้าร่วม) ขณะที่กินแบบสอบถามถึง 96.3% เส้นแบ่งระหว่างตัวดำเนินการทั้งสองอยู่ที่ 5,398MB! แผนแบบสอบถามสำหรับ SQL 2005 ไม่แสดงการใช้ tempdb และไม่ใช้ Left Anti Semi Join ด้านล่างนี้คือรหัสที่ถูกสุขอนามัยและการดำเนินการตามแผนในปี 2005 ด้านบนคือ 2008R2 ด้านล่าง อะไรเป็นสาเหตุให้เกิดการเปลี่ยนแปลงอย่างรุนแรงและช้าลง? …

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
การแสดงแผนแบบสอบถามใน Server Management Studio
คำถามอื่นเกี่ยวกับเซิร์ฟเวอร์ SQL: ฉันมีคำถามง่ายๆที่ให้ CPU ที่ใช้ CPU มากที่สุดตั้งแต่ตัวนับถูกรีเซ็ต: select top 10 sum(qs.total_worker_time) as total_cpu_time, sum(qs.execution_count) as total_execution_count, qs.plan_handle, st.text from sys.dm_exec_query_stats qs cross apply sys.dm_exec_sql_text(qs.plan_handle) as st group by qs.plan_handle, st.text order by sum(qs.total_worker_time) desc คำถามที่ 1: สิ่งที่แน่นอนคือplan_handle? ดูเหมือนว่าจะไม่มีการแฮชของแผนเหมือนใน Oracle ฉันถามเพราะฉันต้องการให้สามารถตรวจสอบสถานการณ์ที่แผนของคำสั่งมีการเปลี่ยนแปลง คำถามที่ 2: เมื่อฉันมีแผนมือจับฉันสนใจแผนจริง ดังนั้นฉันทำเช่น: select * from sys.dm_exec_query_plan (0x060006001F176406B8413043000000000000000000000000) ในคอลัมน์ …

2
วิธีการนำเพจจิ้งไปใช้อย่างมีประสิทธิภาพ?
ฉันมีแบบสอบถามฐานข้อมูลซึ่งอาจส่งผลให้ชุดผลลัพธ์ขนาดใหญ่ ลูกค้าที่แสดงข้อมูลได้รับข้อมูลผ่านเครือข่ายดังนั้นแนวคิดก็คือการลดจำนวนข้อมูลที่ถ่ายโอนให้น้อยที่สุดโดยการดึงผลลัพธ์ 50 รายการแรกจากฐานข้อมูลและส่งไปยังลูกค้า จากนั้นฉันจะให้ความเป็นไปได้ที่จะข้ามไปยังหน้าสองเพื่อดึงผลลัพธ์ 50 รายการถัดไปเป็นต้น (คล้าย ๆ กับข้อเสนอของ Google) คำถามคือวิธีที่มีประสิทธิภาพในการใช้เพจจิ้ง ฉันต้องการตรวจสอบให้แน่ใจว่า mssql ใช้แคชมากที่สุดเท่าที่จะเป็นไปได้และไม่ดำเนินการเดียวกันอีกครั้งทุกครั้งที่ฉันเปลี่ยนเพจ มีลูกค้าจำนวนมากที่กำลังสืบค้นฐานข้อมูลในเวลาเดียวกัน โปรแกรม sql ที่ใช้: MS SQL 2005 ความคิดของฉันคือ: ใช้ statemenst ของ sql ที่เตรียมไว้เพื่อให้แน่ใจว่ามีการแชร์แผนปฏิบัติการ ใช้ตัวแปร ROW_COUNT เพื่อดึงเฉพาะแถวที่ต้องการ แต่มันเป็นวิธีที่มีประสิทธิภาพที่สุดจริง ๆ หรือ? หรือคุณคิดว่าจะเป็นการดีกว่าที่จะดึงชุดผลลัพธ์ทั้งหมดและนำเพจจิ้งไปใช้ในโค้ดที่ส่งข้อมูลไปให้ลูกค้า ขอบคุณสำหรับเคล็ดลับ! ขอแสดงความนับถือโทมัส

2
วิธีโยกย้าย SQL Server Stored Procedure โดยใช้ตารางชั่วคราวหรือตัวแปรตารางไปยัง Oracle
ผู้พัฒนา C # ได้รับการสนับสนุนโดยฝ่ายบริหารให้เขียนขั้นตอนการจัดเก็บ SQL Server มักจะสร้างขั้นตอนเช่นนี้ create table #t1 (...); insert into #t1 Select ... from table_a where ...; insert into #t1 Select ... from table_b where ...; update #t1 Set ... = ... where ... Select * from #t1; คำสั่งเดียวค่อนข้างง่ายและวิธีนี้ทำให้พวกเขาผลิตผลลัพธ์ที่ถูกต้อง บ่อยครั้งที่งานของฉันคือการโยกย้ายขั้นตอนดังกล่าวไปยัง Oracle ลองหน้าข้อเท็จจริงต่อไปนี้ สำหรับตารางชั่วคราวที่แตกต่างกันใน SQL Server นั้นมีความเป็นอิสระอย่างสมบูรณ์และสามารถมีโครงสร้างแบบเฉพาะกิจได้ ตารางทั่วโลกของ …

3
มีวิธีสคริปต์ทางวัตถุทั้งหมดที่เกี่ยวข้องกับตารางที่กำหนดหรือไม่
ฉันรู้ว่าในสตูดิโอการจัดการ SQL ฉันสามารถคลิกขวาตาราง / ทริกเกอร์ / script object as...ที่สำคัญและ มีวิธีการทำโปรแกรมนี้โดยให้ชื่อวัตถุหรือไม่ ถ้าเป็นเช่นนั้นจะมีวิธีการค้นหาวัตถุทั้งหมด (คีย์หลัก, foreign foreign, triggers) ที่เชื่อมโยงกับตารางที่กำหนดและสคริปต์ทั้งหมดหรือไม่?

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