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

SQL Server ของ Microsoft เป็นระบบการจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) ที่ทำงานเป็นเซิร์ฟเวอร์ที่ให้ผู้ใช้หลายคนเข้าถึงฐานข้อมูลจำนวนมาก แท็กนี้มีไว้สำหรับคำถามเกี่ยวกับเวอร์ชัน 2005

7
ฉันจะลดขนาดการสำรองข้อมูลบันทึกธุรกรรมหลังการสำรองข้อมูลเต็มได้อย่างไร
ฉันมีแผนการบำรุงรักษาสามชุดที่ติดตั้งเพื่อใช้งานบนอินสแตนซ์ของ Sql Server 2005: การปรับฐานข้อมูลรายสัปดาห์ตามด้วยการสำรองข้อมูลเต็มรูปแบบ สำรองข้อมูลรายวันที่แตกต่างกัน สำรองข้อมูลบันทึกธุรกรรมทุกชั่วโมง การสำรองข้อมูลบันทึกรายชั่วโมงมักจะอยู่ระหว่างสองสามร้อย Kb และ 10Mb ขึ้นอยู่กับระดับของกิจกรรมความแตกต่างรายวันจะเพิ่มขึ้นประมาณ 250Mb ในตอนท้ายของสัปดาห์และการสำรองข้อมูลรายสัปดาห์ประมาณ 3.5Gb ปัญหาที่ฉันมีคือการเพิ่มประสิทธิภาพก่อนการสำรองข้อมูลเต็มรูปแบบดูเหมือนจะทำให้การสำรองข้อมูลการทำธุรกรรมครั้งต่อไปเพิ่มขึ้นถึง 2x ขนาดของการสำรองข้อมูลเต็มรูปแบบในกรณีนี้ 8Gb ก่อนกลับสู่ภาวะปกติ นอกเหนือจากBACKUP LOG <DatabaseName> WITH TRUNCATE_ONLYนี้มีวิธีใดที่จะลดขนาดของการสำรองข้อมูลบันทึกนั้นหรือป้องกันไม่ให้มีการบันทึกการเพิ่มประสิทธิภาพในบันทึกการทำธุรกรรมเลยเพราะแน่นอนว่าพวกเขาจะถูกบันทึกไว้ในการสำรองข้อมูลเต็มรูปแบบที่นำหน้า

7
วิธีการตรวจสอบความคืบหน้าของ DBCC SHRINKFILE?
มีวิธีการค้นหาความคืบหน้าของDBCC SHRINKFILEคำสั่งหรือไม่ นี่คือวิธีที่ฉันใช้มัน dbcc shrinkfile ('main_data', 250000) ฉันใช้คำสั่งข้างต้นทั้ง SQL Server 2005 และ 2008 [อัพเดท] นี่คือคำถามที่ฉันวิ่งไปตรวจสอบความคืบหน้าและข้อความที่กำลังทำงานอยู่ select T.text, R.Status, R.Command, DatabaseName = db_name(R.database_id) , R.cpu_time, R.total_elapsed_time, R.percent_complete from sys.dm_exec_requests R cross apply sys.dm_exec_sql_text(R.sql_handle) T

3
ตารางบันทึกการหมดเวลาใน SQL Server
ฉันกำลังพยายามเพิ่มคอลัมน์ในตารางที่มีข้อมูลจำนวนมากใน SQL Server 2005 โดยใช้ SSMS ดังนั้นฉันเรียกดูตารางเลือกแก้ไขและเพิ่มคอลัมน์ใหม่ จากนั้นเมื่อฉันกดบันทึกฉันจะได้รับคำเตือนต่อไปนี้: การบันทึกคำจำกัดความการเปลี่ยนแปลงตารางที่มีข้อมูลจำนวนมากอาจใช้เวลานานพอสมควร ขณะบันทึกการเปลี่ยนแปลงข้อมูลตารางจะไม่สามารถเข้าถึงได้ ฉันโอเคกับสิ่งนั้นฐานข้อมูลออฟไลน์และฉันมีเวลาทั้งหมดในโลกดังนั้นฉันจึงกดใช่ อย่างไรก็ตามการดำเนินการจะหมดเวลาหลังจากนั้นประมาณ 30 วินาทีด้วยข้อความนี้: ไม่สามารถแก้ไขตาราง การหมดเวลาหมดอายุแล้ว รอบระยะเวลาการหมดเวลาผ่านไปก่อนที่การดำเนินการจะเสร็จสิ้นหรือเซิร์ฟเวอร์ไม่ตอบสนอง จากนั้นเมื่อฉันกดตกลง: ผู้ใช้ถูกยกเลิกจากกล่องโต้ตอบบันทึก (เครื่องมือ MS Visual Database) ฉันไม่เข้าใจ ฉันได้ตั้งค่าการหมดเวลาดำเนินการเป็น 0 (ไม่ จำกัด ) ทั้งในกล่องโต้ตอบการเชื่อมต่อ SSMS และภายใต้เครื่องมือ -> ตัวเลือก -> การดำเนินการค้นหา -> SQL Server อะไรคือจุดของการตั้งค่าการหมดเวลาดำเนินการหากไม่ได้รับการดำเนินการ ไม่มีใครรู้ว่าค่าการหมดเวลาใช้งานที่นี่และฉันจะตั้งค่าได้อย่างไร

6
ฉันจะเปลี่ยนการจัดเรียงของฐานข้อมูลเซิร์ฟเวอร์ SQL ได้อย่างไร
ฉันพยายามสร้างมาตรฐานฐานข้อมูลทั้งหมดในการเปรียบเทียบครั้งเดียว - Latin1_General_CI_AS (การเปรียบเทียบแบบมาตรฐาน) ฉันมีฐานข้อมูลบางส่วนที่อยู่ใน SQL_Latin1_General_CP1_CI_AS ฉันรู้ว่าฉันสามารถใช้ ALTER DATABASE เพื่อเปลี่ยนการจัดเรียงฐานข้อมูลได้ แต่มีผลกับวัตถุใหม่เท่านั้น ความเข้าใจของฉันคือวิธีเดียวที่จะเปลี่ยนคอลัมน์ที่มีอยู่คือทำ ALTER COLUMN ในแต่ละคอลัมน์ในทุกตาราง - และฉันจะต้องวางและสร้างดัชนีทั้งหมดใหม่เพื่อทำสิ่งนั้น ฉันเดาว่ามันจะเป็นแบบนี้: DROP INDEX indexname ON tablename GO ALTER TABLE tablename ALTER COLUMN columname varchar(50) COLLATE Latin1_General_CI_AS NULL GO CREATE CLUSTERED INDEX indexname ON tablename (columname ASC) และทำซ้ำสำหรับทุกคอลัมน์ varchar, char, text, nvarchar, nchar และ …

8
SQL Server คืนค่าผลลัพธ์การสำรองข้อมูลในข้อผิดพลาด
ฉันมีฐานข้อมูลใน dev (SQL Server 2005 บน Windows Server 2008) ที่ฉันต้องการย้ายไปยัง prod (SQL Server 2000 บน Windows Server 2003) กระบวนการของฉันเป็นดังนี้: เข้าสู่ระบบเพื่อพัฒนาเปิด SQL Server Management Studio คลิกขวาที่ฐานข้อมูล | Tasks | การสำรองข้อมูล ใช้ตัวเลือกเริ่มต้นทั้งหมด (สำรองข้อมูลเต็มรูปแบบ ฯลฯ ) ย้ายไฟล์. bak ภายในเครื่องไปที่ prod (ไม่มีไดรฟ์เครือข่าย), เข้าสู่ระบบ prod, เปิดโปรแกรมจัดการเซิร์ฟเวอร์องค์กร SQL คลิกขวาที่โหนดฐานข้อมูล | งานทั้งหมด | กู้คืนฐานข้อมูล เปลี่ยนการคืนค่าเป็นฐานข้อมูลเพื่อแสดงชื่อฐานข้อมูลเดียวกัน คลิกปุ่มตัวเลือก 'จากอุปกรณ์' …

7
SQL Server - ฐานข้อมูลกำลังในหน่วยความจำ?
เรามีเซิร์ฟเวอร์ Windows 2008 x64 ขนาดใหญ่ (4 x 4 คอร์ CPU, 32GB RAM) ที่ใช้ SQL Server 2005 64 บิต เรามีขนาดเล็ก (6GB) แต่มีฐานข้อมูลที่สำคัญมากซึ่งค่อนข้างช้าในการเข้าถึงจนกว่าหน้าเว็บจะถูกเก็บไว้ในหน่วยความจำ (การใช้งานเป็นแบบสุ่มมาก I / O ดังนั้นอัตราต่อรองต่ำมากหน้าหนึ่งอยู่ในหน่วยความจำและผู้ใช้ปลายทาง บ่นเกี่ยวกับความเชื่องช้าเริ่มต้น) ดิสก์นั้นเร็วพอ (Local 15K SAS) แต่ฉันเดาว่าแอพค่อนข้างเขียนอย่างงุ่มง่าม (มันเป็นวิธีแก้ปัญหา COTS) ดังนั้นฉันสงสัยว่ามีวิธี "บังคับ" ฐานข้อมูลในหน่วยความจำใน SQL Server 2005 (2008) ไม่รองรับ โดยผู้ขายดังนั้นเราไม่ควรอัปเกรดเป็น) เพื่อช่วยหลีกเลี่ยงบลูส์การเติมแคชเริ่มต้นหรือไม่ วิธีปัจจุบันของฉันคือฉันเรียกใช้ SELECT * จากแต่ละตารางในสคริปต์เพื่อรับหน้าข้อมูลในหน่วยความจำ แต่วัตถุบางอย่าง (ดัชนีการค้นหาข้อความแบบเต็ม …

5
ฉันจะแยกฐานข้อมูลที่ใช้งานอยู่ได้อย่างไร
แม้ว่าจะไม่มีการใช้งานใด ๆ ฉันไม่สามารถแยกฐานข้อมูลออกได้เนื่องจากเป็นการใช้งาน Cannot detach the database 'DEMO' because it is currently in use. ฉันพยายามรีบูตเครื่องและได้รับข้อความเดิม

7
เซิร์ฟเวอร์ต้องการ RAM จริงเท่าใด
ฉันมีเซิร์ฟเวอร์ไม่กี่ตัวที่ติดตั้งทั่วโลก พวกเขากำลังเรียกใช้ Windows 2003 x64 พร้อม SQL Server 2005 x64 พร้อม RAM ขนาด 6 GB กล่องไม่ได้มีการกำหนดค่าที่ดีที่สุด (หรือแม้แต่ยอมรับได้) เพราะคนที่สั่งให้พวกเขาเมื่อหลายปีก่อนไม่รู้จริง ๆ ว่าเขากำลังทำอะไรอยู่ กล่องนั้นมีหน่วยความจำไม่พอสมควรจบลงด้วยการใช้ไฟล์เพจจิ้งและทุกอย่างช้าลง โดยทั่วไปแล้วค่าคอมมิชชั่นคือ 5.8GB จากนั้นเมื่อมีคนต้องการทำอะไรที่เข้มข้น (เช่นเรียกใช้รายงาน) หมายเลขนั้นจะผ่านหลังคา ฉันพยายามรับพลังที่สั่งหน่วยความจำเพิ่มขึ้น แต่ฉันได้รับการคัดค้านอย่างมาก (เช่นทำให้ซอฟต์แวร์มีประสิทธิภาพมากขึ้นมีค่าใช้จ่ายมากเกินไปสำหรับเซิร์ฟเวอร์เหล่านี้ทั้งหมดหรือพิสูจน์ว่ากล่องนั้นมีหน่วยความจำไม่เพียงพอ ฯลฯ .. ) มีแนวทาง (หรือสูตร) ​​สำหรับกล่องแรมที่ต้องการให้ฉันนำเสนอให้กับผู้ที่ไม่ใช้เทคโนโลยีเพื่อให้เราสามารถสั่งหน่วยความจำได้มากขึ้นหรือไม่?

2
ค้นหาฐานข้อมูลใดใน SQL Server 2005 ใช้ RAM เท่าใด
เพื่อนของฉันคนหนึ่งถามฉันในวันนี้ (พยายามที่จะลดความกังวลใจของลูกค้าของเขา) คุณจะรู้ได้อย่างไรใน SQL Server 2005 ว่าฐานข้อมูลใดใช้หน่วยความจำเท่าใด (ใน RAM ของเซิร์ฟเวอร์) ในเวลาใดก็ตาม เป็นไปได้หรือไม่ ถ้าเป็นเช่นนั้นได้อย่างไร คุณสามารถทำได้ด้วยเครื่องมือ SQL Server ในตัวหรือคุณต้องการตัวเลือกบุคคลที่สามเพิ่มเติมหรือไม่ ลูกค้าของเขาทุกคนสับสนเพราะเครื่อง SQL Server ของเขานั้นใช้ RAM ทั้งหมดเพียง 200KB จาก 4 GB ฉันไม่คิดว่านี่เป็นปัญหาจริง ๆ - แต่เนื่องจากผู้ชายคนนี้อ้างว่ามันเกิดขึ้นมากหรือน้อยข้ามคืนเขาต้องการที่จะรู้ว่าอะไรทำให้การใช้หน่วยความจำเพิ่มขึ้น ..... มาร์ค

4
การติดตั้งเซิร์ฟเวอร์ SQL: มันคือ 32 หรือ 64 บิต?
เมื่อเร็ว ๆ นี้ฉันทำการอัปเกรดระบบปฏิบัติการบนเซิร์ฟเวอร์ฐานข้อมูลหนึ่งของเราย้ายจาก Server 2003 ไปเป็น Server 2008 DBMS คือ SQL Server 2005 ในขณะที่ติดตั้ง SQL ในการติดตั้ง Windows ใหม่ฉันไปที่เซิร์ฟเวอร์ DB อื่นเพื่อตรวจสอบคู่ ของการตั้งค่า ตอนนี้ฉันคิดเสมอว่าเซิร์ฟเวอร์ตัวที่สองนี้คือ Server 2003 x64 + SQL 2005 x64 (จากที่ฉันบอกไป) แต่ตอนนี้ฉันมีข้อสงสัยเกี่ยวกับเรื่องนี้ ตอนนี้ฉันสงสัยว่าจริงๆแล้วมันเป็น SQL 32 บิตเท่านั้น แต่ฉันต้องการตรวจสอบสิ่งนี้ นี่คือรายละเอียดบางส่วน: ระบบปฏิบัติการแน่นอน 64 บิต xp_msverแสดงให้เห็นPlatformว่าNT INTEL X86 SELECT @@VERSION แสดงให้เห็นว่า Microsoft SQL Server 2005 …

2
SQL Server 2005/2008 - หลายไฟล์ / กลุ่มไฟล์ - เท่าไหร่? ทำไม?
ฉันเป็นนักพัฒนาที่สำคัญ - แต่ทุกเวลาลูกค้าจะไม่มี DBA ที่เหมาะสมในการจัดการกับปัญหาเหล่านี้ดังนั้นฉันจึงถูกเรียกให้ตัดสินใจ กลยุทธ์ / แนวปฏิบัติที่ดีที่สุดของคุณคืออะไรเมื่อต้องจัดการกับฐานข้อมูล SQL Server ที่มีขนาดพอสมควร (อะไรที่ใหญ่กว่า Northwind หรือ AdventureWorks ประมาณ 2-4GB ของข้อมูลและดัชนี ฯลฯ ) - คุณใช้หลายไฟล์ / กลุ่มไฟล์หรือไม่? ถ้าเป็นเช่นนั้น และทำไม? คุณมีเกณฑ์อะไรบ้างในการตัดสินใจว่าจะย้ายออกจากแนวทาง "หนึ่งกลุ่มไฟล์สำหรับทุกอย่าง" เมื่อไหร่: * database size? * database complexity? * availability / reliability requirements? * what else? หากคุณใช้กลุ่มไฟล์หลายกลุ่มคุณใช้มากแค่ไหน? หนึ่งสำหรับข้อมูลหนึ่งสำหรับดัชนีหนึ่งสำหรับบันทึก? มีข้อมูลมากมาย (เท่าไร)? คุณมีเหตุผลอะไรในการเลือกของคุณ - ทำไมคุณถึงใช้จำนวนกลุ่มไฟล์ที่แน่นอน …

4
ทำไมสถานะ“ DbccFilesCompact” จึงถูก“ หยุด”
ฉันกำลังเรียกใช้ไฟล์ SHRINK ในไฟล์ข้อมูล 600G ขณะนี้สถานะจะรายงานว่า "ถูกระงับ" และsys.dm_exec_requests.percent_completeสำหรับDbccFilesCompactคำสั่งรายงานว่ากำลังทำงาน (แต่ช้ามาก) มีวิธีตรวจสอบสาเหตุที่ถูกระงับหรือไม่และจะทำให้ราบรื่นขึ้นได้อย่างไร FYI - SQL Query สำหรับการตรวจสอบสถานะ select T.text, R.Status, R.Command, DatabaseName = db_name(R.database_id) , R.cpu_time, R.total_elapsed_time, R.percent_complete from sys.dm_exec_requests R cross apply sys.dm_exec_sql_text(R.sql_handle) T order by Command

1
ยกเลิกฐานข้อมูลใช้ออฟไลน์
ฉันพยายามทำให้ฐานข้อมูลออฟไลน์ผ่านคำสั่งเมนูตามบริบท> งาน> ใช้ออฟไลน์ กระบวนการกำลังดำเนินอยู่ในขณะนี้และไม่สามารถเชื่อมต่อใหม่ได้ ฉันจะยกเลิกกระบวนการนี้ได้อย่างไร

6
วิธีโยกย้ายจาก SQL Server 2005 ถึง 2008
คุณจะย้ายฐานข้อมูล SQL Server 2005 ไปยัง SQL Server 2008 ได้อย่างไร มันง่ายเหมือนสำรองฐานข้อมูล 2005 และเรียกคืนในปี 2008? มีปัญหาความเข้ากันได้หรือไม่? บริการรายงานของ SQL Server มีการเปลี่ยนแปลงหรือไม่ คุณจะอัพเกรดเซิร์ฟเวอร์ SQL อย่างไร?

2
วิธีการเลิกทำการมอบหมายความเป็นเจ้าของของสคีมา db_datareader / db_datawriter?
ฉันหมายถึงการกำหนดเข้าสู่ระบบ SQL Server เพื่อ db_datareader db_datawriter ฐานข้อมูลบทบาท แต่ถ้าสักครู่เจ็บหน้าท้องและเหน็ดเหนื่อยฉันตั้งใจให้เจ้าของสคีมาเป็นเจ้าของแทน: ไม่สนใจเลยว่าผู้ใช้สามารถ"เป็นเจ้าของ"สกีมาในตัวทั้งสองได้ และไม่สนใจสักครู่ถ้ามันเป็นปัญหาถ้าผู้ใช้เป็นเจ้าของ schema ทั้งสอง (เช่นถ้าฉันต้องการลบผู้ใช้ schemas ในตัวจะไปด้วย) คำถามของฉันคือ: ฉันจะยกเลิกได้อย่างไร ฉันกดปุ่มบนแป้นพิมพ์แบบสุ่มและมันก็ออกมา : แก้ไขการอนุญาตใน SCHEMA :: [db_datareader] ถึง [db_datareader]F5 แต่นั่นไม่ได้ทำอะไรเลย ดังนั้นถึงเวลาที่จะปรึกษาผู้เชี่ยวชาญ Microsoft SQL Server 2005 - 9.00.5057.00 (Intel X86) 25 มีนาคม 2011 13:50:04 ลิขสิทธิ์ (c) 1988-2005 Microsoft Corporation Standard Edition

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