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

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

10
ฉันจะได้รับการชดเชยที่ถูกต้องระหว่างเวลา UTC กับเวลาท้องถิ่นสำหรับวันที่ก่อนหรือหลัง DST ได้อย่างไร
ขณะนี้ฉันใช้สิ่งต่อไปนี้เพื่อรับเวลาข้อมูลท้องถิ่นจาก UTC วันที่และเวลา: SET @offset = DateDiff(minute, GetUTCDate(), GetDate()) SET @localDateTime = DateAdd(minute, @offset, @utcDateTime) ปัญหาของฉันคือว่าถ้ากลางวันเวลาออมทรัพย์เกิดขึ้นระหว่างGetUTCDate()และ@utcDateTimeที่@localDateTimeสิ้นสุดขึ้นเป็นปิดชั่วโมง มีวิธีง่าย ๆ ในการแปลงจาก utc เป็นเวลาท้องถิ่นสำหรับวันที่ไม่ใช่วันที่ปัจจุบันหรือไม่? ฉันใช้ SQL Server 2005

5
ฉันจะรันสคริปต์ขนาดใหญ่ที่มีส่วนแทรกจำนวนมากโดยไม่ใช้หน่วยความจำไม่เพียงพอได้อย่างไร
คำถาม: ฉันมีสคริปต์ที่มีการแทรกประมาณ 45,000 รายการจากคำสั่งที่เลือก เมื่อฉันลองและเรียกใช้ฉันได้รับข้อความแสดงข้อผิดพลาดระบุว่าฉันมีหน่วยความจำไม่เพียงพอ ฉันจะทำให้สคริปต์นี้ทำงานได้อย่างไร บริบท: เพิ่มเขตข้อมูลใหม่บางส่วนเพื่อให้แอปพลิเคชันเล่นได้ดีกับแอปอื่นที่ลูกค้าใช้ มีสเปรดชีตข้อมูลจากลูกค้าที่เต็มไปด้วยข้อมูลที่แมปไอเท็มข้อมูลปัจจุบันกับค่าสำหรับฟิลด์ใหม่เหล่านี้ แปลงสเปรดชีตเพื่อแทรกคำสั่ง ถ้าฉันใช้คำสั่งบางคำสั่งใช้งานได้ แต่สคริปต์ทั้งหมดไม่ทำงาน ไม่ไม่มีการพิมพ์ผิด หากมีวิธีอื่นที่ฉันควรจะโหลดข้อมูลนี้เพื่อลงโทษฉันและแจ้งให้เราทราบ

3
Views จะปรับให้เหมาะสมเมื่อฉันเพิ่มส่วนคำสั่ง WHERE กับพวกเขาหรือไม่
มันสร้างความแตกต่างหรือไม่ถ้าคุณกรองมุมมองภายในหรือภายนอกมุมมอง ตัวอย่างเช่นมีข้อแตกต่างระหว่างสองข้อความค้นหานี้หรือไม่ SELECT Id FROM MyTable WHERE SomeColumn = 1 หรือ SELECT Id FROM MyView WHERE SomeColumn = 1 และMyViewถูกกำหนดให้เป็น SELECT Id, SomeColumn FROM MyTable และเป็นคำตอบที่แตกต่างกันหรือไม่หากตารางต้นฉบับตั้งอยู่บนเซิร์ฟเวอร์ที่เชื่อมโยง ฉันถามเพราะฉันต้องค้นหาตารางขนาดใหญ่ (44mil แถว) สองครั้งจากเซิร์ฟเวอร์ที่เชื่อมโยงและรับผลรวม ฉันต้องการทราบว่าฉันควรสร้างสองมุมมองเพื่อเข้าถึงข้อมูลหรือไม่สำหรับแต่ละแบบสอบถามหรือถ้าฉันสามารถออกไปได้ด้วยมุมมองเดียวและWHEREประโยค

2
ทำไมเราต้องสร้างและจัดระเบียบดัชนีใหม่ใน SQL Server
หลังจากค้นหาอินเทอร์เน็ตฉันไม่สามารถหาสาเหตุได้ ทำไมเราต้องสร้างและจัดระเบียบดัชนีใหม่ใน SQL Server เกิดอะไรขึ้นภายในเมื่อเราสร้างและจัดระเบียบใหม่ บทความในเว็บไซต์พูดว่า: ดัชนีควรสร้างใหม่เมื่อการแตกแฟรกเมนต์ดัชนีดีกว่า 40% ดัชนีควรถูกจัดระเบียบใหม่เมื่อการกระจายตัวของดัชนีอยู่ระหว่าง 10% ถึง 40% กระบวนการสร้างดัชนีใหม่ใช้ CPU มากขึ้นและล็อคทรัพยากรฐานข้อมูล เวอร์ชันการพัฒนา SQL Server และเวอร์ชันองค์กรมีตัวเลือก ONLINE ซึ่งสามารถเปิดได้เมื่อสร้างดัชนีใหม่ ตัวเลือกออนไลน์จะทำให้ดัชนีพร้อมใช้งานในระหว่างการสร้างใหม่ ฉันไม่สามารถเข้าใจได้ถึงแม้ว่ามันจะบอกว่าWHENต้องทำสิ่งนี้ แต่ฉันอยากรู้ว่าWHYเราจำเป็นต้องสร้างและจัดระเบียบดัชนีใหม่หรือไม่

4
มีอะไรดีไปกว่าการเปลี่ยนแปลงตาราง: DELETE และ INSERT ทุกครั้งหรือมีการอัพเดทอยู่
ฉันกำลังทำโปรเจ็กต์ที่ต้องเปลี่ยนระเบียนประมาณ 36K ในหนึ่งตารางทุกวัน ฉันสงสัยว่าอะไรจะทำงานได้ดีกว่า: ลบแถวและแทรกแถวใหม่หรือ อัปเดตแถวที่มีอยู่แล้ว สำหรับฉันมันง่ายกว่าที่จะลบแถวทั้งหมดและแทรกแถวใหม่ แต่ถ้านี่จะแยกส่วนของตารางและดัชนีและผลกระทบต่อประสิทธิภาพการทำงานแล้วฉันอยากจะอัปเดตเมื่อเป็นไปได้และลบ / แทรกเมื่อจำเป็นเท่านั้น นี่จะเป็นการให้บริการทุกคืนและฉันไม่ต้องการปรับปรุงความเร็วของกระบวนการเอง ฉันกังวลมากขึ้นเกี่ยวกับประสิทธิภาพของการสืบค้นเทียบกับตารางนี้โดยทั่วไปซึ่งฉันมี 89 ล้านบันทึกแล้วและกระบวนการคืนนี้จะส่งผลกระทบต่อมันอย่างไร ฉันควรลบ / แทรกบันทึกหรือฉันควรปรับปรุงรายการที่มีอยู่ (หากเป็นไปได้) สำหรับกระบวนการทุกคืน?

2
ปัญหาการเพิ่มประสิทธิภาพด้วยฟังก์ชั่นที่ผู้ใช้กำหนด
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 4 ปีที่แล้ว ฉันมีปัญหาในการทำความเข้าใจว่าทำไมเซิร์ฟเวอร์ SQL ตัดสินใจที่จะเรียกใช้ฟังก์ชันที่ผู้ใช้กำหนดสำหรับทุกค่าในตารางแม้ว่าควรดึงข้อมูลได้เพียงหนึ่งแถว SQL จริงมีความซับซ้อนมากขึ้น แต่ฉันสามารถลดปัญหาลงได้ดังนี้ select S.GROUPCODE, H.ORDERCATEGORY from ORDERLINE L join ORDERHDR H on H.ORDERID = L.ORDERID join PRODUCT P on P.PRODUCT = L.PRODUCT cross apply dbo.GetGroupCode (P.FACTORY) S where L.ORDERNUMBER = 'XXX/YYY-123456' and L.RMPHASE = '0' …

6
ขนาดฐานข้อมูล SQL Server ไม่ลดลงหลังจากลบแถวจำนวนมาก
คำถามนี้ถูกโยกย้ายจาก Super User เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา ฉันไม่เก่งเรื่อง SQL แต่มีฐานข้อมูลที่จะดูแล แทบจะไม่มีที่เหลือเลยดังนั้นฉันจึงตัดสินใจลบข้อมูลทั้งหมดสำหรับปี 2008 หลังจากดำเนินการลบแบบสอบถาม (มีการทำความสะอาดประมาณ 10,000,000 แถว) และการทำความสะอาดบันทึกธุรกรรมฉันพบว่าฉัน การกระทำไม่มีผลกับขนาดฐานข้อมูล มีอะไรอีกบ้างที่ฉันต้องทำ?

3
เป็นไปได้หรือไม่ที่จะกู้คืน sql-server bak และลดขนาดไฟล์ล็อกในเวลาเดียวกัน?
เรามีไฟล์บั๊กจากลูกค้าที่เราถ่ายโอนไปยังสำนักงานนักพัฒนาของเราเพื่อตรวจสอบปัญหา ขณะนี้การสำรองข้อมูลปัจจุบันมีขนาด 25GB และฐานข้อมูลที่เรียกคืนมีขนาดใกล้เคียงกัน แต่จะต้องมีการกู้คืน 100GB ฉันเชื่อว่าเป็นเช่นนี้เพราะมีการตั้งค่าฐานข้อมูลให้มีขนาดบันทึกธุรกรรม 75GB หลังจากกู้คืนฐานข้อมูลเราสามารถลดขนาดไฟล์บันทึกได้ แต่มีวิธีการในการกู้คืนหรือไม่?

1
“ No Join Predicate” หมายถึงอะไรใน SQL Server
MSDN "ไม่มีกิจกรรมการเข้าร่วมเพรดิเคตคลาส " บอกว่า " แสดงว่ามีการดำเนินการค้นหาที่ไม่มีภาคแสดงการเข้าร่วม " แต่น่าเสียดายที่มันไม่ง่ายอย่างที่คิด ตัวอย่างเช่นสถานการณ์ที่ง่ายมาก: create table #temp1(i int); create table #temp2(i int); Select * from #temp1, #temp2 option (recompile); ไม่มีข้อมูลในตารางไม่มีคำเตือนอย่างใดอย่างหนึ่งถึงแม้ว่าจะเห็นได้ชัดว่าไม่มีการเข้าร่วมเพรดิเคต ถ้าฉันดูเอกสารประกอบสำหรับ SQL Server 2005 (ลิงก์เดียวกันเพียงแค่รุ่นเซิร์ฟเวอร์อื่น) จะมีประโยคพิเศษ: " เหตุการณ์นี้เกิดขึ้นเฉพาะเมื่อทั้งสองด้านของการเข้าร่วมกลับมามากกว่าหนึ่งแถว " สิ่งนี้จะทำให้ ความรู้สึกที่สมบูรณ์แบบในสถานการณ์ก่อนหน้า ไม่มีข้อมูลดังนั้นทั้งสองฝ่ายจึงคืนค่า 0 แถวและไม่มีการเตือน แทรกแถวรับคำเตือน โอเคดี. แต่สำหรับสถานการณ์ที่สับสนต่อไปฉันจะแทรกค่าเดียวกันในทั้งสองตาราง: Insert into #temp1 (i) values (1) Insert into …

2
ความแตกต่างของประสิทธิภาพระหว่างดัชนีแบบคลัสเตอร์และแบบไม่ทำดัชนี
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา ผมอ่านและClusteredNon Clustered Indexes Clustered Index- มันมีหน้าข้อมูล นั่นหมายถึงข้อมูลแถวที่สมบูรณ์จะแสดงในคอลัมน์ดัชนีแบบกลุ่ม Non Clustered Index- มีเฉพาะข้อมูลตัวระบุแถวในรูปแบบของคอลัมน์ดัชนีแบบคลัสเตอร์ (ถ้าไม่มีข้อมูล) หรือตัวระบุไฟล์ + หมายเลขหน้า + จำนวนแถวทั้งหมดในหน้า ซึ่งหมายความว่าเคียวรีเครื่องมือต้องใช้ขั้นตอนเพิ่มเติมเพื่อค้นหาข้อมูลจริง ข้อความค้นหา - ฉันจะตรวจสอบความแตกต่างด้านประสิทธิภาพด้วยความช่วยเหลือของตัวอย่างที่ใช้งานจริงได้อย่างไรเนื่องจากเรารู้ว่าตารางสามารถมีได้เพียงรายการเดียวClustered Indexและจัดเตรียมsortingที่Clustered Index ColumnและNon Clustered Indexไม่ได้ให้บริการsortingและสามารถรองรับ 999 Non Clustered IndexesในSQL Server 2008และ 249 นิ้วSQL Server 2005ได้

2
สิ่งใดที่ทำให้เซสชันการมิเรอร์หมดเวลาจึงเกิดความล้มเหลว
เรามีเซิร์ฟเวอร์การผลิต SQL สองเครื่องที่รัน SQL Server 2005 SP4 พร้อมการอัพเดท 3 เซิร์ฟเวอร์ทั้งสองทำงานบนเครื่องจริงที่เหมือนกัน DELL PowerEdge R815 พร้อมซีพียู 4 x 12 คอร์และ 512GB (ใช่ GB) ของ ram พร้อมไดรฟ์ที่เชื่อมต่อ iSCSI SAN ขนาด 10GB สำหรับฐานข้อมูลและบันทึก SQL ทั้งหมด ระบบปฏิบัติการเป็น Microsoft Windows Server 2008 R2 Enterprise ที่มีการอัพเดท SP และ windows ทั้งหมด ไดรฟ์ระบบปฏิบัติการคืออาร์เรย์ RAID 5 ของไดรฟ์ 3 x 72GB …

5
เหตุใดจึงต้องเริ่มต้นใหม่เป็นระยะ ๆ เพื่อให้อินสแตนซ์ของฉันทำงานได้ดี
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา เรามีเซิร์ฟเวอร์ฐานข้อมูลการผลิตใน SQL 2005 ทุกอย่างทำงานได้ตามปกติ แต่หลังจากผ่านไปสองสัปดาห์เราจะเห็นว่าประสิทธิภาพการทำงานลดลง การรีสตาร์ท SQL Server จะทำให้ประสิทธิภาพกลับสู่ปกติ พื้นหลังบางส่วน: ใช้งานฐานข้อมูลมากกว่า 1,200 ฐานข้อมูล (ส่วนใหญ่เป็นผู้เช่ารายเดียวและมีหลายผู้เช่า) ก่อนที่ใครจะบรรยายเกี่ยวกับการย้ายไปยังผู้เช่าหลายคนเท่านั้นมีเหตุผลที่ถูกต้องในการรักษาโครงสร้างนี้ ...... RAM คือ 16 GB หลังจากรีสตาร์ทจะใช้เวลาไม่นานสำหรับ SQL Server ที่จะกลับไปใช้งานขนาด 15 GB การเชื่อมต่อฐานข้อมูล Active มีประมาณ 80 การเชื่อมต่อซึ่งเรารู้สึกว่าค่อนข้างดีเนื่องจากมีพูลการเชื่อมต่อหนึ่งต่อเว็บเซิร์ฟเวอร์ต่อกระบวนการดังนั้นเราจึงไม่มีปัญหาการรั่วไหลของการเชื่อมต่อ เราได้ลองหลายสิ่งหลายอย่างในเวลาที่ไม่มาก: - รัน DBCC DROPCLEANBUFFERS (พร้อม CHECKPOINT) เพื่อล้างแคชข้อมูล …

4
'หลีกเลี่ยงการสร้างดัชนีแบบคลัสเตอร์โดยยึดตามคีย์ที่เพิ่มขึ้น' เป็นตำนานมาจาก SQL Server 2000 หรือไม่
ฐานข้อมูลของเราประกอบด้วยตารางจำนวนมากโดยส่วนใหญ่ใช้คีย์ตัวแทนจำนวนเต็มเป็นคีย์หลัก ประมาณครึ่งหนึ่งของคีย์หลักเหล่านี้อยู่ในคอลัมน์ข้อมูลประจำตัว การพัฒนาฐานข้อมูลเริ่มต้นขึ้นในยุคของ SQL Server 6.0 หนึ่งในกฎที่ใช้จากจุดเริ่มต้นคือหลีกเลี่ยงการสร้างดัชนีคลัสเตอร์บนพื้นฐานของความสำคัญที่เพิ่มขึ้นในขณะที่คุณพบในเหล่านี้ดัชนีเคล็ดลับการเพิ่มประสิทธิภาพ ตอนนี้ใช้ SQL Server 2005 และ SQL Server 2008 ฉันมีความประทับใจอย่างมากว่าสถานการณ์เปลี่ยนไป ในขณะเดียวกันคอลัมน์คีย์หลักเหล่านี้เป็นตัวเลือกแรกที่สมบูรณ์แบบสำหรับดัชนีกลุ่มของตาราง

4
ให้สิทธิ์ในการเรียกใช้งานเซิร์ฟเวอร์ SQL
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา ฉันมีงานบนเซิร์ฟเวอร์ MSSQL 2005 ของฉันที่ฉันต้องการอนุญาตให้ผู้ใช้ฐานข้อมูลใด ๆ ทำงาน ฉันไม่กังวลเกี่ยวกับความปลอดภัยเนื่องจากอินพุตของงานจริงมาจากตารางฐานข้อมูล เพียงแค่เรียกใช้งานโดยไม่ต้องเพิ่มบันทึกลงในตารางนั้นจะไม่ทำอะไรเลย ฉันไม่สามารถหาวิธีอนุญาตสิทธิ์สาธารณะให้กับงานได้ มีวิธีการทำเช่นนี้? สิ่งเดียวที่ฉันสามารถคิดได้ ณ จุดนี้คือการให้งานทำงานอย่างต่อเนื่อง (หรือตามกำหนดเวลา) แต่เนื่องจากมันจำเป็นต้องทำงานจริง ๆ น้อย ๆ (บางทีทุกๆสองสามเดือน) และฉันต้องการให้งานเป็นจริง เสร็จสิ้นทันทีที่มีอยู่สิ่งนี้ดูเหมือนจะไม่เป็นทางออกที่ดีที่สุด

1
คีย์หลักพร้อมตัวเลือก“ ไม่ใช่สำหรับการจำลอง”
ฉันเพิ่งเข้าร่วมโครงการและฉันได้ค้นพบว่าในตารางส่วนใหญ่คีย์หลักมีคุณสมบัติ " NOT FOR REPLICATION" ฉันไม่ใช่ DBA แต่แน่นอนในฐานข้อมูลส่วนใหญ่ระเบียนที่ไม่มีคีย์หลักจะถือว่าเสียหาย คีย์หลักของบันทึกเหล่านี้ส่วนใหญ่จะถูกใช้เป็นคีย์ต่างประเทศอย่างแน่นอน นี่เป็นข้อผิดพลาดในส่วนของนักพัฒนาก่อนหน้า (ที่ไม่ได้ทำงานให้กับ บริษัท อีกต่อไป) หรือมีตรรกะอื่น ๆ ที่เกี่ยวข้องหรือไม่? เราไม่ได้ใช้การจำลองแบบในสภาพแวดล้อมการผลิตดังนั้นนี่จะไม่ส่งผลกระทบต่ออะไรที่ร้ายแรงอยู่ดี แต่ฉันสงสัยว่ามีผลข้างเคียงอื่น ๆ จากการลบคำสั่งเหล่านี้ทั้งหมดที่ฉันไม่ทราบ ฉันไม่พบเพลงฮิตที่มีประโยชน์มากมายสำหรับคำค้นหาจำนวนหนึ่งที่เกี่ยวข้องกับหัวข้อนี้ดังนั้นฉันค่อนข้างมั่นใจว่านี่เป็นเพียงข้อผิดพลาดที่ฉันต้องย้อนกลับดังนั้นคำถามนี้เป็นคำถามที่ทำให้หวาดระแวงของฉันจริงๆ

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