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

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

3
ย้ายไฟล์บันทึกโดยไม่ต้องออฟไลน์ฐานข้อมูล
ฉันต้องการย้ายไฟล์บันทึกฐานข้อมูลไปยังพาร์ติชันใหม่โดยไม่ต้องออฟไลน์ฐานข้อมูล วิธีปกติในการทำเช่นนี้คือการแยกฐานข้อมูลย้ายไฟล์บันทึกแล้วแนบฐานข้อมูลอีกครั้ง เป็นไปได้ไหมที่จะทำเช่นนี้โดยไม่ทำให้ฐานข้อมูลเป็นออฟไลน์และถ้าเป็นเช่นนั้น

1
SQL Server การจำลองแบบหลายต่อหนึ่ง
ฉันมีเครื่อง SQL Server 2008 R2 8 เครื่องแต่ละเครื่องแต่ละเครื่องโฮสต์ 1 ฐานข้อมูล แต่ละฐานข้อมูลมีโครงสร้างตารางที่เหมือนกันและสคีมาและข้อมูลที่ไม่ซ้ำทั้งหมด ฉันต้องการสร้างเซิร์ฟเวอร์การรายงาน (อาจเป็น 2008 หรือ 2012) ซึ่งรวมแถวจากตารางที่เลือกไว้ใน 8 เซิร์ฟเวอร์ต้นทางเป็นอินสแตนซ์เดียวของตารางเหล่านั้นบนเซิร์ฟเวอร์รายงาน นี่คือการจำลองแบบทางเดียว (จะไม่มีการเปลี่ยนแปลงกับเซิร์ฟเวอร์การรายงาน) ฉันจะต้องทำซ้ำการเปลี่ยนแปลงจากฐานข้อมูลต้นทางที่มีเวลาแฝงค่อนข้างต่ำ (ประมาณ 20-30 วินาที) นอกจากนี้ฉันต้องการค้นหาวิธีการเพื่อให้บรรลุผลนี้โดยมีผลกระทบเพียงเล็กน้อยต่อเซิร์ฟเวอร์ต้นทางตามจริง เอเจนต์บุคคลที่สามทริกเกอร์หรือสคีมา mods ไปยังเซิร์ฟเวอร์เหล่านั้นยากในสภาพแวดล้อมของฉัน คำถามของฉัน: สถาปัตยกรรมและเทคโนโลยีที่มีแนวโน้มในการบรรลุเป้าหมายนี้คืออะไร ฉันดู SQL Server Merge Replication แต่ฉันกังวลเรื่องเวลาในการตอบสนอง นี่เป็นเทคโนโลยีที่เหมาะสมสำหรับเป้าหมายนี้หรือไม่? มีสถาปัตยกรรมแบบหนึ่งต่อหนึ่งสำหรับการจำลองแบบของทรานแซคชันหรือไม่? ฉันควรดูการจำลองแบบ 1 ต่อ 1 เป็น 8 ฐานข้อมูลบนเซิร์ฟเวอร์การรายงานของฉันแล้วตามด้วยฟังก์ชันการผสานแบบกำหนดเอง (การจำลองแบบ 2 ขั้นตอน) ขอบคุณ John

5
บังคับให้ SQL Server รันเงื่อนไขการสืบค้นตามที่เขียนไว้หรือไม่
ฉันใช้ SQL Server 2008 R2 และฉันมีแบบสอบถามหลอก (SP) นี้: select ... from ... WHERE @LinkMode IS NULL AND (myColumn IN (...very long-running query...)) ... ... ปัญหาคือว่าแบบสอบถามใช้เวลานานมากในการดำเนินการ - แม้ว่าผมจะดำเนินการ SP @LinkMode=2ด้วย ดังที่คุณสังเกตเห็นเคียวรีที่รันนานควรถูกเรียกใช้งานต่อเมื่อ @LinkMode เป็นโมฆะซึ่งไม่ใช่กรณีที่นี่ ในกรณีของฉัน @LinkMode = 2! อย่างไรก็ตามหากฉันเปลี่ยนเป็น: select ... from ... WHERE 1=2 AND (myColumn IN (...very long time exeted …

4
คิวรีการบันทึกและ T-SQL อื่น ๆ
ฉันต้องการทราบว่า SQL Server 2008 R2 มีรูปแบบการบันทึกเริ่มต้นสำหรับSELECTคำสั่ง (หรือ T-SQL อื่น ๆ สำหรับเรื่องนั้น) ถ้าใช่ฉันจะดูได้ที่ไหน หากไม่มีฉันจะตั้งค่าได้อย่างไร

1
พฤติกรรมของข้อมูลในดัชนีตามปัจจัยการเติม
สมมติว่าคุณมีฐานข้อมูลที่ปัจจัยการเติมเริ่มต้นคือ 20 เมื่อใดก็ตามที่ข้อมูลถูกแทรกมันจะสร้างหน้าเว็บที่เต็มไปถึง 20% เท่านั้นหรือไม่? จากความเข้าใจของฉันเมื่อข้อมูลถูกแทรกจะมีประมาณ 20% ของข้อมูลในหน้า อย่างไรก็ตามเมื่อมีการอัพเดทข้อมูลมันจะขยายไปเป็นดัชนีมากกว่า 20% เพื่อบรรจุและสร้างการแบ่งหน้าใช่ไหม?

5
ประสิทธิภาพของเซิร์ฟเวอร์ SQL ที่เชื่อมโยงกับเซิร์ฟเวอร์: เหตุใดแบบสอบถามระยะไกลจึงมีราคาแพง
ฉันมีเซิร์ฟเวอร์ฐานข้อมูลสองตัวเชื่อมต่อผ่านเซิร์ฟเวอร์ที่เชื่อมโยง ทั้งสองเป็นฐานข้อมูล SQL Server 2008R2 และการเชื่อมต่อเซิร์ฟเวอร์ที่เชื่อมโยงจะทำผ่านลิงค์ "SQL Server" ปกติโดยใช้บริบทความปลอดภัยของการเข้าสู่ระบบปัจจุบัน เซิร์ฟเวอร์ที่เชื่อมโยงนั้นมีทั้งในดาต้าเซ็นเตอร์เดียวกันดังนั้นการเชื่อมต่อจึงไม่เป็นปัญหา ฉันใช้แบบสอบถามต่อไปนี้เพื่อตรวจสอบว่าค่าของคอลัมน์identifierใดที่พร้อมใช้งานจากระยะไกล แต่ไม่ใช่ภายในเครื่อง SELECT identifier FROM LinkedServer.RemoteDb.schema.[TableName] EXCEPT SELECT DISTINCT identifier FROM LocalDb.schema.[TableName] identifierบนโต๊ะทั้งสองเป็นดัชนีที่ไม่ใช่คลัสเตอร์ในคอลัมน์ ในพื้นที่มีแถว 2.6M แถวจากระยะไกลเพียง 54 แต่เมื่อมองไปที่แผนแบบสอบถาม 70% ของเวลาดำเนินการจะถูกใช้เพื่อ "ประมวลผลแบบสอบถามระยะไกล" นอกจากนี้เมื่อศึกษาแผนคิวรีที่สมบูรณ์จำนวนแถวท้องถิ่นโดยประมาณนั้น1แทน2695380(ซึ่งคือจำนวนแถวโดยประมาณเมื่อเลือกเฉพาะคิวรีที่มาหลังจากนั้นEXCEPT) เมื่อดำเนินการค้นหานี้จะใช้เวลานานแน่นอน มันทำให้ฉันประหลาดใจ: ทำไมถึงเป็นอย่างนี้? การประมาณค่าเป็น "เพียงแค่" ปิดหรือมีการสอบถามระยะไกลบนเซิร์ฟเวอร์ที่เชื่อมโยงที่มีราคาแพงจริงๆ?

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

1
ชื่อตาราง SQL Server ที่ขึ้นต้นด้วย # ในฐานข้อมูลผู้ใช้ไม่ใช่ใน tempdb ไม่ใช่ตาราง temp
#อย่างใดทศวรรษที่ผ่านมาตารางได้สร้างขึ้นในฐานข้อมูลของเราที่เริ่มต้นด้วย มันแสดงให้เห็นในวัตถุ Explorer tempdbที่ใต้ฐานข้อมูลของแอปไม่ได้อยู่ใน ด้วยเหตุผลบางอย่าง Azure จะไม่นำเข้าฐานข้อมูลเช่นนี้ เราไม่สามารถวางเปลี่ยนชื่อหรือโต้ตอบกับมันได้ ฉันได้ลองลบจาก Object Explorer, Script Drop , Renameจาก GUI และพวกมันไม่ทำงานเลย เราอยู่บน SQL 2008 R2 drop table [*app*].[dbo]."#OBSOLETE"; Database name '*app*' ignored, referencing object in tempdb. Msg 3701, Level 11, State 5, Line 1 Cannot drop the table '#OBSOLETE', because it does not exist …

2
@os_run_priority ใน sp_add_jobstep ใช้งานได้จริงใน SQL Server 2008 R2 หรือไม่
ไม่@os_run_priorityในsp_add_jobstepการทำงานจริงใน SQL Server 2008 R2? มันอธิบายว่า "สงวน" หรือ "ไม่มีเอกสาร" อย่างไรก็ตามฉันเห็นในsp_add_jobstepนิยาม: @os_run_priority INT = 0, -- -15 = Idle, -1 = Below Normal, 0 = Normal, 1 = Above Normal, 15 = Time Critical)

1
ฉันจะทำลาย XML ของเหตุการณ์ขยายนี้ได้เร็วที่สุดเท่าที่จะเป็นไปได้อย่างไร
ฉันสร้างเซสชันเพิ่มเติมในเหตุการณ์ใน SQL Server 2008 R2 เซสชั่นจะทำงานและรวบรวมกิจกรรมตามที่เกิดขึ้นเช่นเดียวกับที่คุณคาดหวัง ถ้าฉันฉีก xml เมื่อมีเหตุการณ์ค่อนข้างน้อยประสิทธิภาพเป็นที่ยอมรับได้ เมื่อฉันมีเหตุการณ์นับพันใช้เวลานานในการฉีก xml ฉันรู้ว่าฉันกำลังทำสิ่งผิดปกติฉันไม่มีความรู้เพียงพอเกี่ยวกับ internals ของเอ็นจิน XML เพื่อทำความเข้าใจกับสิ่งที่ นี่คือคำจำกัดความของเซสชันเพิ่มเติมของฉัน: IF EXISTS ( SELECT 1 FROM sys.server_event_sessions dxs WHERE dxs.name = 'queries' ) BEGIN IF EXISTS ( SELECT 1 FROM sys.dm_xe_sessions dxs WHERE dxs.name = 'queries' ) BEGIN ALTER EVENT SESSION queries ON …

2
การย้อนกลับของ SQL Server ทั้งสองนี้แตกต่างกันอย่างไร
ใน SQL Server 2008 R2 การย้อนกลับสองแบบนี้แตกต่างกันอย่างไร: เรียกใช้ALTERคำสั่งสักครู่แล้วกด 'ยกเลิกการดำเนินการ' ใช้เวลาสองสามนาทีในการย้อนกลับอย่างสมบูรณ์ เรียกใช้ALTERคำสั่งเดียวกันแต่ให้แน่ใจว่าLDFไฟล์นั้นไม่ใหญ่พอที่จะทำให้สำเร็จ เมื่อถึงLDFขีด จำกัด และไม่อนุญาตให้ 'autogrowth' การประมวลผลแบบสอบถามจะหยุดทันที (หรือย้อนกลับเกิดขึ้น) พร้อมกับข้อความแสดงข้อผิดพลาดนี้: The statement has been terminated. Msg 9002, Level 17, State 4, Line 1 The transaction log for database 'SampleDB' is full. To find out why space in the log cannot be reused, see …

1
คอลัมน์ sys.partition.rows มีความแม่นยำเพียงใด
มุมมองระบบsys.partitionsมีคอลัมน์ "แถว" ที่เป็นจำนวนแถวทั้งหมดในพาร์ติชันที่กำหนด สำหรับตารางที่ไม่ได้แบ่งพาร์ติชัน (หรือมีพาร์ติชันเดียวขึ้นอยู่กับวิธีที่คุณดู) คอลัมน์นี้ให้จำนวนแถวในตาราง SELECT COUNT(1) FROM TableNameฉันอยากรู้วิธีที่ถูกต้องคือคอลัมน์นี้และถ้าผมสามารถใช้มันแทน ฉันได้ทำการทดลองที่สร้างตารางและเพิ่มสองสามพันแถวลบสองสามร้อยเพิ่มอีกสองสามพัน ฯลฯ และจำนวนนั้นตายเสมอ อย่างไรก็ตามฉันมีตารางหนึ่งตารางที่มีประมาณ 700 ล้านแถวและดัชนีหลายรายการ แถวในsys.partitionsสำหรับดัชนีคลัสเตอร์นั้นตายไปแล้วอีกครั้งอย่างไรก็ตามดัชนีอื่น ๆ แสดงความแตกต่างเล็กน้อย (+ -20k) ไม่มีใครรู้วิธีคำนวณแถวนี้และถ้ามันถูกต้องตามที่ปรากฏ?

1
การตั้งค่าตัวแปรในโหมด SQLCMD
ใช้ SQL Server 2008 R2 Enterprise Edition พิจารณาข้อความต่อไปนี้: :setvar source_server_name "SERVERNAME\INSTANCENAME" เป็นไปได้ในโหมด SQLCMD เพื่อรับค่านั้นโดยใช้ TSQL สิ่งที่ต้องการ: :setvar source_server_name = SELECT @@servername ขอขอบคุณ อัพเดทเมื่อ 7/15/2013 คำตอบสองข้อเสนอด้านล่างไม่ได้ให้ผลลัพธ์ที่ต้องการดังนั้นฉันจึงเพิ่มตัวอย่างที่เกี่ยวข้อง :setvar source_server_name [myserver] ตัวแปร source_server_name ถูกตั้งค่าเป็นสตริงข้อความ [myserver_1] ฉันต้องการทำสิ่งนี้: create table #tmp( id int identity(1,1), server sysname ) insert into #tmp values('myserver_1'),('myserver_2'); :setvar source_server_name = SELECT …

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 ได้อย่างไร …

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 ในพื้นที่ที่ไม่ได้ใช้ …

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