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

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

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

1
การเชื่อมต่อเซิร์ฟเวอร์ ODBC แหล่งข้อมูล SQL Server - การเข้าสู่ระบบล้มเหลวสำหรับผู้ใช้
ฉันย้ายฐานข้อมูลของฉันจาก SQL 2005 ไปยังเซิร์ฟเวอร์ที่มี SQL 2008 ตอนนี้ฉันกำลังพยายามสร้างแหล่งข้อมูล ODBC ฉันใช้ "ด้วยการรับรองความถูกต้องของเซิร์ฟเวอร์ SQL โดยใช้รหัสเข้าสู่ระบบและรหัสผ่านที่ป้อนโดยผู้ใช้" และได้เข้าสู่ระบบและรหัสผ่านของฉัน การเข้าสู่ระบบจะมองเห็นได้ใน SQL Server Management Studio ภายใต้ความปลอดภัย -> เข้าสู่ระบบ การเข้าสู่ระบบยังมีคุณสมบัติที่แน่นอนของการเข้าสู่ระบบเดียวกันในเซิร์ฟเวอร์เก่าของฉัน เมื่อฉันกดปุ่มถัดไปหลังจากป้อนชื่อผู้ใช้และรหัสผ่านฉันจะได้รับ: Connection failed: SQLState: '28000' SQL Server Error: 18456 [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'myUser'. หลังจากอ่านสิ่งนี้: http://support.microsoft.com/kb/555332ฉันรู้ว่าคุณสมบัติเซิร์ฟเวอร์ถูกตั้งค่าเป็น "Windows Authentication Mode" เท่านั้น แต่แม้หลังจากเปลี่ยนเป็น "SQL Server และ …

1
Workspace หน่วยความจำภายใน
ตามหนังสือการอ่านของฉันเกี่ยวกับ SQL Server 2008 Internals และการแก้ไขปัญหา (ยืมมาจากห้องสมุดท้องถิ่นในรัฐอิลลินอยส์) โดย Christian Bolton, Brent Ozar เป็นต้นฉันกำลังพยายามทำความเข้าใจและยืนยันบนเซิร์ฟเวอร์ SQL และการค้นหาบนเว็บฉันจะขอบคุณถ้ามีคน สามารถยืนยันหรือแก้ไขความเข้าใจของฉัน ทุกแบบสอบถามหรือการดำเนินการที่ต้องการให้หน่วยความจำแบบสอบถามจะต้องมีหน่วยความจำพื้นที่ทำงาน ในข้อความค้นหาทั่วไปที่ใช้การเรียงลำดับการจับคู่การแฮชการขนาน (ไม่แน่ใจเกี่ยวกับเรื่องนี้) การแทรกจำนวนมาก (ไม่แน่ใจ) การสร้างดัชนีใหม่เป็นต้นจะต้องใช้หน่วยความจำของพื้นที่ทำงานแบบสอบถาม หน่วยความจำพื้นที่ทำงานเป็นส่วนหนึ่งของพูลบัฟเฟอร์ของ SQL Server (ถูกจัดสรรเป็นส่วนหนึ่งของบัฟเฟอร์พูล) และหน่วยความจำสูงสุดของพื้นที่ทำงานคือ 75% ของหน่วยความจำที่จัดสรรให้กับบัฟเฟอร์พูล โดยค่าเริ่มต้นแบบสอบถามเดียวไม่สามารถรับหน่วยความจำเวิร์กสเปซเกินกว่า 25% (ใน SQL 2008 / SQL 2012 - ควบคุมโดยกลุ่มภาระงานเริ่มต้นของผู้ว่าการทรัพยากรออกจากกล่อง) ค้นหาการยืนยันความเข้าใจของฉัน 1) ระบบการพิจารณาที่มี 48 GB RAM และหน่วยความจำเซิร์ฟเวอร์สูงสุดที่กำหนดค่าเป็น 40 GB หมายความว่าหน่วยความจำสูงสุดของพื้นที่ทำงานถูก จำกัด …

3
ปฏิเสธการเข้าถึง schema ของข้อมูลใน SQL Server
ฉันกำลังมองหาวิธีที่ดีที่สุดในการปิดการเข้าถึงsys.tables/ Information Schemaสำหรับผู้ใช้ / กลุ่มใน SQL Server ฉันพบกระทู้นี้ตั้งแต่ปี 2008 มันแสดงวิธีการปฏิเสธการเข้าถึงโดย[sys].[something]ชอบ: DENY SELECT ON [sys].[columns] TO DenySystemTableSelectRole GO DENY SELECT ON [sys].[tables] TO DenySystemTableSelectRole GO DENY SELECT ON [sys].[syscolumns] TO DenySystemTableSelectRole GO DENY SELECT ON [sys].[sysobjects] TO DenySystemTableSelectRole GO แต่ไม่มีวิธีการปิดการเข้าถึงบนInformation Schema: DENY SELECT ON INFORMATION_SCHEMA.TABLES To DenySystemTableSelectRole ดูเหมือนว่าจะไม่ทำงาน ฉันจะปิดการใช้งานการเข้าถึง information_schema ได้อย่างไร …

2
การดำเนินการของ SQL Server เป็นปัญหา
EXECUTE ASฉันหายไปบางสิ่งบางอย่างในขณะที่พยายามที่จะทำให้การใช้งานขั้นตอนของฉันเก็บไว้ ขั้นตอนการจัดเก็บไว้อ่านข้อมูลจากมวลรวมและส่งผลให้ร้านค้าsource_dbtarget_db ตัว sp อยู่target_dbค่ะ ฉันมีการเข้าสู่ระบบโดยเฉพาะและแมปกับผู้ใช้ทั้งในsource_dbและtarget_dbสำหรับเจ้าของของ sp (ดังนั้นจึงมีผู้ใช้app_agentในsource_dbและในtarget_dbการเข้าสู่ระบบapp_agent) หากฉันเข้าสู่ระบบในฐานะapp_agentและดำเนินการ EXEC target_db.app_agent_schema.import_data ทุกอย่างทำงานได้ดี แต่ถ้าฉันเปลี่ยน ALTER PROCEDURE app_agent_schema.import_data WITH EXECUTE AS OWNER` (or `AS SELF`) และลองใช้งานมันมันจะพ่น เซิร์ฟเวอร์หลัก "app_agent" ไม่สามารถเข้าถึงฐานข้อมูล "source_db" ภายใต้บริบทความปลอดภัยปัจจุบัน ฉันใช้ SQL Server 2008 ใครช่วยชี้ให้เห็นข้อผิดพลาดของฉัน? ขอบคุณ อัปเดต หลังจากทำวิจัยบางอย่างฉันพบว่าการALTER DATABASE target_db SET TRUSTWORTHY ONแก้ปัญหา แต่ดูเหมือนจะไม่ใช่วิธีที่เหมาะสมสำหรับฉัน ...

4
กำลังสร้างดัชนีใหม่ฐานข้อมูลขนาด 10 เท่า
ฉันมีฐานข้อมูล SQL Server (2008 R2 SP1) ประมาณ 15 กิ๊ก ปรากฎว่าการบำรุงรักษาไม่ได้ทำงานมาระยะหนึ่งดังนั้นฉันจึงสร้างแผนการบำรุงรักษาเพื่อสร้างดัชนีทั้งหมดขึ้นใหม่พวกเขามีการแยกส่วนมาก งานเสร็จสิ้นและการแตกแฟรกเมนต์หายไป แต่ตอนนี้ฐานข้อมูลมีมากกว่า 120 กิ๊ก! ฉันเข้าใจว่าจะใช้พื้นที่เพิ่มเติมเพื่อสร้างใหม่ทั้งหมด แต่ตอนนี้งานเสร็จแล้วฉันคิดว่าพื้นที่ทั้งหมดนั้นจะเป็นพื้นที่ว่าง แต่พื้นที่ว่างแสดงเพียง 3 กิ๊กดังนั้นจึงมีการใช้ 117 gigs แม้ว่างานสร้างดัชนีใหม่จะเสร็จสิ้น ฉันสับสนมากและสามารถใช้คำแนะนำบางอย่างฉันได้รับ db กลับไปเป็นขนาดที่เหมาะสมเราไม่มีพื้นที่ดิสก์สำหรับสิ่งนี้ ขอบคุณล่วงหน้า! นี่คือผลลัพธ์ของข้อความค้นหาทั้งสองที่โพสต์: log_reuse_wait_desc ไม่มีอะไร name TotalSpaceInMB UsedSpaceInMB FreeSpaceInMB LIVE_Data 152 123 28 LIVE_Log 18939 89 18849 LIVE_1_Data 114977 111289 3688 ไฟล์ที่สามเป็นไฟล์. ndf ซึ่งเป็นไฟล์ที่แสดงเพียง 3688 ในพื้นที่ที่ไม่ได้ใช้ …

1
Array ของช่องและขนาดหน้าทั้งหมด
ฉันอ่านต่อในฟอรัมจำนวนมากและในหลาย ๆ บล็อกที่หน้าประกอบด้วยดังต่อไปนี้: ขนาดหน้า: 16 x 512B = 8192B ส่วนหัวของหน้า: = 96B แถว In_Row สูงสุด: = 8060B ใบนี้ (8192 - 96 - 8060) B = 36B ตกลงนี่เป็นตรรกะและถูกต้อง คำถามที่ฉันมีคือ: ทำไมผู้คนมากมายพูดว่า 36B ที่เหลือถูกสงวนไว้สำหรับอาร์เรย์สล็อต? เห็นได้ชัดว่าอาร์เรย์สล็อตให้ 2B ต่อแถวในหน้า; ดังนั้นอาจเล็กเพียง 2B และใหญ่ถึง 1472B: 2B: 1 แถว * 2B = 2B 1472B: 8096B = n * …

3
มันจะถือว่าเป็นแนวปฏิบัติที่ไม่ดีที่จะมี FK แบบ nullable หลายรายการบนตารางใน SQL Server หรือไม่
ในโครงสร้างฐานข้อมูลของฉันใน SQL Server ฉันมีผลิตภัณฑ์ 3 ประเภทที่ต้องการข้อมูลที่แตกต่างกันเกี่ยวกับการสั่งซื้อ ดังนั้นฉันสร้างหนึ่งของตารางและสามตารางการสั่งซื้อที่แตกต่างกัน:Customers , , ตารางคำสั่งซื้อทั้งหมดมีความสัมพันธ์แบบหนึ่งต่อหลายบนโต๊ะOrdersForProductAsOrdersForProductBsOrdersForProductCsCustomers ฉันยังมีตารางอื่นที่Paymentsจะเก็บรายละเอียดการชำระเงินไว้ข้างใน แต่ฉันมีข้อสงสัยเกี่ยวกับวิธีการจัดโครงสร้างที่นี่ เนื่องจากฉันมีผลิตภัณฑ์หลายประเภทและลูกค้าอาจมีคำสั่งซื้อหลายผลิตภัณฑ์ในเวลาเดียวกันฉันจึงต้องเชื่อมโยงตารางคำสั่งซื้อทั้งสามนั้นเข้ากับPaymentsตาราง ปัญหาอื่นคือลูกค้าอาจมีคำสั่งซื้อผลิตภัณฑ์เพียงประเภทเดียว ดังนั้นคอลัมน์ FK ในตารางจะต้องมีการPaymentsnullable คำถามของฉันคือว่าnullableคอลัมน์ FK เหล่านั้นจะปวดหัวสำหรับฉันในระยะยาวหรือไม่? โดยทั่วไปแล้วจะถือว่าเป็นการปฏิบัติที่ไม่ดีที่จะมีคอลัมน์ FK ที่ไม่มีค่าว่างบนตารางหรือไม่

3
แทรกถ้าไม่มีอยู่พร้อมกัน
ฉันกำลังมีปัญหาการใช้งานพร้อมกันกับส่วนแทรกในขั้นตอนการจัดเก็บ ส่วนที่เกี่ยวข้องของขั้นตอนนี้คือ: select @_id = Id from table1 where othervalue = @_othervalue IF( @_id IS NULL) BEGIN insert into table1 (othervalue) values (@_othervalue) select @_id = Id from table1 where othervalue = @_othervalue END เมื่อเรารัน proc ที่เก็บไว้ 3 หรือ 4 ของพร้อมกันนี้เราได้รับการแทรกหลายครั้ง ฉันกำลังวางแผนในการแก้ไขเช่นนี้: insert into table1 (othervalue) select TOP(1) @_othervalue as …

2
ข้อผิดพลาด Deadlock ไม่ส่งคืน SQL deadlock
Transaction (Process ID) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction. ฉันได้รับข้อผิดพลาดนี้แบบสุ่มเมื่อหนึ่งในเว็บไซต์ของฉันไม่ว่าง ฉันรู้คร่าวๆว่ามีชุดของตารางใดบ้าง แต่จากประสบการณ์ของฉันกับโปรแกรมอื่น ๆ ฉันมักจะได้รับ SQL คืนมาเมื่อเกิดการหยุดชะงัก มีธงที่ฉันควรเปิดเพื่อให้สิ่งนี้เกิดขึ้นหรือไม่ ฉันจะลองและดีบักการหยุดชะงักเองเป็นปัญหาที่แยกจากกันเนื่องจากนี่เป็นคำถามหลักของฉันในตอนนี้ ฉันใช้ SQL Server 2008 Standard Edition

4
คำสั่ง SQL Server ช้าเป็นระยะ ๆ บน SQL Server 2008 R2
ในลูกค้ารายหนึ่งของเราเราพบปัญหาเกี่ยวกับประสิทธิภาพในการสมัครของเรา เป็นแอปพลิเคชั่นเว็บ. NET 3.5 ที่ใช้งานและอัพเดทข้อมูลในฐานข้อมูล SQL Server ปัจจุบันสภาพแวดล้อมการผลิตของเราประกอบด้วยเครื่อง Windows 2008 R2 เป็นส่วนหน้าและคลัสเตอร์ SQL Server 2008 R2 ที่ส่วนหลัง แอพของเราใช้ COM + และ MSDTC เพื่อเชื่อมต่อกับฐานข้อมูล นี่คือสิ่งที่เกิดขึ้น: บางครั้งผู้ใช้ของเราบ่นว่าความเชื่องช้าในแอปพลิเคชัน บางหน้าใช้เวลาโหลดมากกว่าที่คาดไว้ ในขณะที่พยายามคิดว่าเกิดอะไรขึ้นฉันพยายามหาพฤติกรรมแปลก ๆ ในด้านฐานข้อมูลที่อาจเป็นสาเหตุให้ประสิทธิภาพการทำงานลดลง ฉันสังเกตเห็นว่าบางครั้งมีคำสั่ง SQL บางคำที่ต้องใช้เวลามากในการรันสิ่งที่คาดหวัง ฉันจัดการเพื่อระบุบางส่วนของคำสั่งเหล่านี้ (ส่วนใหญ่เป็นการเรียกร้องให้บางส่วนของขั้นตอนการจัดเก็บใบสมัครของเรา) โดยใช้การติดตาม profiler (ด้วยแม่แบบ TSQL_Duration) เพื่อระบุการสืบค้นที่ใช้เวลานาน ปัญหาคือเมื่อฉันเรียกใช้ขั้นตอนการจัดเก็บเหล่านี้โดยตรงในฐานข้อมูลใน SQL Management Studio บางครั้งพวกเขาใช้เวลานาน (ประมาณ 7/8 วินาที) บางครั้งก็รวดเร็ว (น้อยกว่า 1 …

4
การสร้างฐานข้อมูล DBA ส่วนกลาง
เรามีเซิร์ฟเวอร์มากกว่า 200+ ตัวและฉันคิดว่าจะสร้างฐานข้อมูล DBA แบบรวมศูนย์ซึ่งมันจะทำการสำรองข้อมูลข้อผิดพลาดงานพื้นที่และสร้างรายงานบน SSRS ฉันไม่แน่ใจว่าจะเริ่มจากตรงไหนและจะขอขอบคุณสำหรับความช่วยเหลือของคุณ ขอบคุณมาก.


5
วิธีตรวจจับการเปลี่ยนแปลงใด ๆ ในฐานข้อมูล (DDL และ DML)
มีฐานข้อมูลจำนวนมากบนเซิร์ฟเวอร์ SQL ของลูกค้าของฉัน ฐานข้อมูลเหล่านี้อยู่ระหว่างการพัฒนาเพื่อให้นักพัฒนาสามารถออกแบบปรับโครงสร้างทำการแก้ไขข้อมูลและอื่น ๆ มีฐานข้อมูลบางส่วนที่เปลี่ยนแปลงได้ยาก ลูกค้าของฉันต้องรักษาความปลอดภัยทั้งหมด (สำรองข้อมูล) และใช้เวลาในการจัดการสภาพแวดล้อม (บริษัท ไม่มีตำแหน่งผู้ดูแลฐานข้อมูลที่ บริษัท ) หลังจากการสนทนาที่ยาวนานลูกค้าได้ตัดสินใจใช้กลยุทธ์การสำรองข้อมูลเต็มรูปแบบรายวันเนื่องจากความสะดวกในการกู้คืน ดังนั้นนี่คือบทสรุปของสถานการณ์: จำนวนฐานข้อมูลสามารถเปลี่ยนแปลงได้ทุกวัน ฐานข้อมูลที่เปลี่ยนแปลง (หมายถึงข้อมูลและ / หรือโครงสร้างที่มีการเปลี่ยนแปลง) จะถูกสำรอง ฐานข้อมูลที่ไม่เปลี่ยนแปลงจะไม่ถูกสำรอง โซลูชันจะไม่ส่งผลกระทบต่อโครงสร้างฐานข้อมูล (ไม่ จำกัด ข้อกำหนด) "เครื่องมือสำรอง" นี้จะทำงานโดยอัตโนมัติ ปัญหาหลัก: วิธีการตรวจสอบว่ามีการเปลี่ยนแปลงฐานข้อมูล ส่วนแรกของปัญหา (DDL เปลี่ยนแปลง) สามารถแก้ไขได้โดยการใช้ทริกเกอร์ DDL แต่การเปลี่ยนแปลงข้อมูล (การเปลี่ยนแปลง DML) เป็นปัญหา เป็นไปไม่ได้ที่จะใช้ทริกเกอร์ DML กับทุกตารางของฐานข้อมูลทั้งหมดเพื่อติดตามการเปลี่ยนแปลง (ประสิทธิภาพการจัดการวัตถุที่ขยายเพิ่ม ... ) เอ็นจิ้นการสำรองข้อมูลต้องติดตามการเปลี่ยนแปลงทั้งหมดเพื่อทำเครื่องหมายแต่ละฐานข้อมูลว่าพร้อมสำหรับการสำรองข้อมูล Change Data Captureเป็นวิธีแก้ปัญหา แต่ดูเหมือนว่าหนักเกินไป …

3
วิธีดูสิ่งที่แคชในหน่วยความจำใน SQL Server 2008
มีวิธีหาแคชใน SQL Server 2008 R2 หรือไม่? ฉันได้พบบทความที่ดีต่อไปนี้: http://blog.sqlauthority.com/2010/06/17/sql-server-data-pages-in-buffer-pool-data-stored-in-memory-cache อย่างไรก็ตามฉันต้องการทราบจำนวนข้อมูล (เช่นเป็นเปอร์เซ็นต์และ KB) ของแต่ละตารางและดัชนี มีวิธีง่ายๆในการรับข้อมูลดังกล่าวหรือไม่?

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