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

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

3
ฉันจะพิจารณาอย่างน่าเชื่อถือได้อย่างไรว่าอินสแตนซ์ของ SQL Server ที่ระบุมี“ ล็อกหน้าในหน่วยความจำ” ถูกต้องหรือไม่?
"ล็อคหน้าในหน่วยความจำ" ด้านขวาสามารถมอบให้กับบัญชีบริการที่ใช้โดย SQL Server สิ่งนี้ทำให้ SQL Server สามารถป้องกันหน่วยความจำเพจได้กับดิสก์ ฉันสังเกตเห็นว่าเครื่อง SQL Server ของเราหลายเครื่องไม่มีนโยบายภายในที่กำหนดค่าไว้ให้ใช้สิทธิ์นี้สำหรับบัญชีบริการที่ใช้โดย SQL Server เนื่องจากเรามีเซิร์ฟเวอร์จำนวนมากจึงน่าเบื่อที่สุดที่จะตรวจสอบแต่ละเซิร์ฟเวอร์ด้วยตนเองโดยใช้คอนโซลการจัดการ "นโยบายระบบท้องถิ่น" มีแบบสอบถาม T-SQL, ขยายกระบวนงานที่เก็บไว้หรือวิธีอื่น ๆ ที่ฉันสามารถใช้เพื่อตรวจสอบว่าเซิร์ฟเวอร์ในคำถามมีสิทธิหรือไม่? ฉันต้องการที่จะไม่ใช้EXEC xp_readerrorlog 0, 1, 'lock memory privilege was not granted';เพราะมันต้องอาศัยการตรวจสอบบันทึกข้อผิดพลาด SQL Server ปัจจุบัน และบันทึกข้อผิดพลาดนั้นอาจไม่มีรายการที่เกี่ยวข้องสมมติว่าบันทึกได้ถูกยกเลิกเนื่องจากเซิร์ฟเวอร์รีสตาร์ทครั้งล่าสุด ฉันรู้ว่าฉันสามารถตรวจสอบบันทึกเก่าโดยแก้ไขพารามิเตอร์แรกจาก0เป็น1ฯลฯ อย่างไรก็ตามเราเก็บบันทึกข้อผิดพลาดเพียง 10 รายการเท่านั้นและนั่นอาจไม่เพียงพอ ฉันต้องการวิธีที่ไม่ปลอดภัยในการยืนยันการตั้งค่า

2
การเขียนสคริปต์แผนการบำรุงรักษา
ฉันสร้างแผนการบำรุงรักษาสำหรับ SQL Server 2008 R2 โดยใช้ SQL Server Management Studio (SSMS) อย่างไรก็ตามฉันไม่สามารถส่งออก / แปลงเป็นสคริปต์ในกรณีที่ฉันต้องทำซ้ำบนเซิร์ฟเวอร์อื่น มีวิธีหรือไม่? ถ้าไม่มีจะมีวิธีใช้ SQL Server รุ่นใหม่กว่านี้ไหม

2
วิธีที่มีประสิทธิภาพในการเปรียบเทียบชุดข้อมูลขนาดใหญ่สองชุดใน SQL
ขณะนี้ฉันกำลังเปรียบเทียบชุดข้อมูลสองชุดที่มีStoreKey/ProductKeyชุดค่าผสมที่ไม่ซ้ำกัน ชุดข้อมูลชุดที่ 1 มีชุดค่าStoreKey/ProductKeyผสมที่ไม่ซ้ำกันสำหรับการขายระหว่างเริ่มมกราคม 2012 และสิ้นสุดพฤษภาคม 2014 (ผลลัพธ์ = 450K บรรทัด) ชุดข้อมูลที่ 2 มีชุดค่าStoreKey/ProductKeyผสมที่ไม่ซ้ำกันสำหรับการขายเริ่มต้นมิถุนายน 2014 จนถึงวันนี้ (ผลลัพธ์ = 190K บรรทัด) ฉันกำลังมองหาStoreKey/ProductKeyชุดค่าผสมที่อยู่ในชุดที่ 2 แต่ไม่ใช่ในชุดที่ 1 - คือผลิตภัณฑ์ใหม่ที่ขายตั้งแต่ต้นเดือนมิถุนายน จนถึงตอนนี้ฉันได้ทิ้งชุดข้อมูลสองชุดลงในตารางชั่วคราวสร้างดัชนีสำหรับทั้งสองตารางบนทั้งสองปุ่มแล้วใช้EXCEPTคำสั่งเพื่อค้นหารายการที่ไม่ซ้ำกัน วิธีที่มีประสิทธิภาพที่สุดในการเปรียบเทียบชุดข้อมูลขนาดใหญ่ดังกล่าวคืออะไร มีวิธีที่มีประสิทธิภาพมากกว่าในการทำการเปรียบเทียบขนาดใหญ่ประเภทนี้หรือไม่

4
ฉันจะถ่ายโอนข้อมูลเข้าสู่ระบบจาก 2008R2 เป็น 2014 ด้วยรหัสผ่านได้อย่างไร
ฉันได้ลองTasks> Generate Scripts...และตั้งค่า 'การเข้าสู่ระบบสคริปต์' ในตัวเลือกการเขียนสคริปต์ขั้นสูง แต่ฉันได้รับสิ่งนี้ในผลลัพธ์: /* For security reasons the login is created disabled and with a random password. */ มีวิธีง่ายๆในการเขียนสคริปต์การเข้าสู่ระบบเหล่านี้ด้วยรหัสผ่านหรือวิธีอื่นในการถ่ายโอนการเข้าสู่ระบบจากอินสแตนซ์ 2008R2 เป็นอินสแตนซ์ 2014 หรือไม่?

1
ฉันจะตีความผลลัพธ์ของ DMV เหล่านี้เพื่อช่วยฉันประเมินกลยุทธ์การแบ่งพาร์ติชันของเราได้อย่างไร
เวอร์ชัน: SQL Server 2008 R2 Enterprise Edtn (10.50.4000) ในความพยายามที่จะประเมินกลยุทธ์การแบ่งพาร์ติชันของฉันฉันเขียนแบบสอบถามนี้เพื่อรับวิธีการเข้าถึงกับดัชนีในพาร์ติชัน (ในความหมายกว้างที่สุดของคำแม้ว่าฉันจะกำจัดกอง) ในขณะที่ฉัน จำกัด การโฟกัสไปที่ตารางที่แบ่งพาร์ติชันฉันเชื่อว่าฉันต้องมองrange_scan_countและsingleton_lookup_countแต่ก็มีช่วงเวลาที่ยากลำบากในการกำหนดแนวคิด SELECT t.name AS table_name, i.name AS index_name, ios.partition_number, leaf_insert_count, leaf_delete_count, leaf_update_count, leaf_ghost_count, range_scan_count, singleton_lookup_count, page_latch_wait_count , page_latch_wait_in_ms, row_lock_count , page_lock_count, row_lock_wait_in_ms , page_lock_wait_in_ms, page_io_latch_wait_count , page_io_latch_wait_in_ms FROM sys.dm_db_partition_stats ps JOIN sys.tables t ON ps.object_id = t.object_id JOIN …

1
สร้างดัชนี SQL Server 2008 R2 ล้มเหลวด้วยความรุนแรง 17
ในบางครั้งระหว่างการบำรุงรักษาดัชนีของเรางานจะล้มเหลวพร้อมกับข้อผิดพลาด SEV 17 ที่ไม่สามารถจัดสรรพื้นที่ได้เพียงพอสำหรับวัตถุที่สร้างใหม่ ฐานข้อมูลถูกจัดวางเช่น: Data_file1 PRIMARY 0 growth 0% free Max Size UNLIMITED Data_file2 PRIMARY 0 growth 0% free Max Size UNLIMITED Data_file3 PRIMARY 0 growth Less than 1% free Max Size UNLIMITED Data_file4 PRIMARY 250 MB growth Less than 1% free Max Size UNLIMITED โดยพื้นฐานแล้วไฟล์ข้อมูล 3 ใน 4 …

1
SQL-Server - ให้สิทธิ์ DBO ของผู้ใช้ในฐานข้อมูล
ฉันมีฐานข้อมูลการรายงานที่คืนค่าทุกคืนจากการสำรองฐานข้อมูลการผลิต เมื่อฉันกู้คืนฉันต้องเพิ่มผู้ใช้ในDBOบทบาทสำหรับฐานข้อมูลนั้น ฉันคิดว่ามันจะทำงาน: use Restored_Prod go exec sp_addrolemember 'db_owner', 'chris' go แต่ฉันได้รับข้อผิดพลาดต่อไปนี้เนื่องจากผู้ใช้นั้นไม่มีอยู่ในฐานข้อมูล Restored_Prod: Msg 15410, Level 11, State 1, Procedure sp_addrolemember, Line 75 User or role 'chris' does not exist in this database. ฉันจะเพิ่มผู้ใช้ 'chris' ลงในฐานข้อมูลเพื่อให้สามารถเรียกใช้sp_addrolememberเพื่อทำให้เขาเป็นDBOฐานข้อมูลนั้นได้อย่างไร มีวิธีเพิ่มสิทธิ์ผู้ใช้โดยใช้sp_addrolememberคำสั่งจาก master db ที่มีผู้ใช้อยู่หรือไม่?

1
หากการทำธุรกรรม "มุ่งมั่น" จะถูกบันทึกไว้อย่างแน่นอนหรือไม่?
หากการทำธุรกรรมที่จะมุ่งมั่นที่จะประสบความสำเร็จผมสามารถแล้วเป็น 100% แน่ใจว่าจะได้รับการเขียนไปยังฐานข้อมูลและไฟล์บันทึก? ฉันมั่นใจได้อย่างไรว่าข้อมูลถูกบันทึกไว้? วันนี้ล็อกไฟล์ของเราถึงขีด จำกัด ของไดรฟ์และเราได้รับข้อผิดพลาดมากมาย นอกจากนี้บริการอื่น ๆ บางอย่างล้มเหลว เราเพิ่มดิสก์และรีสตาร์ทเซิร์ฟเวอร์ ในระหว่างการเริ่มต้นเซิร์ฟเวอร์ทำการ "กู้คืนฐานข้อมูล" - ฉันจะแน่ใจได้หรือไม่ว่าทุกอย่างโอเคอีกครั้ง?

1
วิธีการแก้ไขปัญหาข้อขัดแย้งเท็จการจำลองแบบผสานอย่างถูกต้อง
เรามีการตั้งค่าการจำลองแบบผสาน SQL Server 2008 R2 เมื่อเร็ว ๆ นี้ฉันเริ่มได้รับความขัดแย้งสำหรับบางตารางและเมื่อฉันตรวจสอบตัวแสดงข้อขัดแย้งฉันจะเห็นว่าค่าของผู้ชนะ & ค่าคอลัมน์ผู้แพ้เหมือนกัน! ฉันแน่ใจว่าข้อมูลเหล่านี้ถูกป้อนโดยผู้สมัครสมาชิกเพียงคนเดียว ฉันใช้sp_showrowreplicainfoเพื่อรับรายละเอียดเพิ่มเติมเกี่ยวกับแถวที่ขัดแย้งกันและฉันได้ 2 แถว: แถวหนึ่งสำหรับผู้เผยแพร่และแถวสำหรับสมาชิกที่มีทั้งสองแถวมี "เวอร์ชัน" เป็น 1 ฉันใช้วิธีของแบรนดอนด้วย: การตรวจสอบการเปลี่ยนแปลงในการจำลองแบบผสานแต่มันแสดงให้เห็นว่ามีการแทรกแบบปกติเท่านั้น! คุณช่วยบอกวิธีเริ่มต้นการแก้ไขข้อขัดแย้งประเภทนี้ได้ไหม

2
เหตุใดแบบสอบถามนี้จึงไม่ใช้ดัชนีที่ไม่ได้เป็นคลัสเตอร์ของฉันและฉันจะสร้างมันได้อย่างไร
ตามมาถึงคำถามนี้เกี่ยวกับการเพิ่มประสิทธิภาพการค้นหาฉันต้องการทราบว่ามีวิธีในการทำให้ดัชนีของฉันถูกใช้เป็นค่าเริ่มต้นหรือไม่ แบบสอบถามนี้ทำงานในประมาณ 2.5 วินาที: SELECT TOP 1000 * FROM [CIA_WIZ].[dbo].[Heartbeats] WHERE [DateEntered] BETWEEN '2011-08-30' and '2011-08-31'; อันนี้ทำงานในประมาณ 33ms: SELECT TOP 1000 * FROM [CIA_WIZ].[dbo].[Heartbeats] WHERE [DateEntered] BETWEEN '2011-08-30' and '2011-08-31' ORDER BY [DateEntered], [DeviceID]; มีดัชนีคลัสเตอร์ในฟิลด์ [ID] (pk) และมีดัชนีที่ไม่ใช่คลัสเตอร์ใน [DateEntered], [DeviceID] แบบสอบถามแรกใช้ดัชนีคลัสเตอร์แบบสอบถามที่สองใช้ดัชนีที่ไม่ใช่คลัสเตอร์ของฉัน คำถามของฉันคือสองส่วน: ทำไมเนื่องจากแบบสอบถามทั้งสองมีส่วนคำสั่ง WHERE ในฟิลด์ [DateEntered] เซิร์ฟเวอร์จึงใช้ดัชนีคลัสเตอร์ในครั้งแรก แต่ไม่ใช่อันดับที่สองหรือไม่ ฉันจะทำให้ดัชนีที่ไม่ใช่แบบคลัสเตอร์นั้นถูกใช้เป็นค่าเริ่มต้นในแบบสอบถามนี้ได้โดยไม่ต้องสั่งซื้อ (หรือเพราะเหตุใดฉันจึงไม่ต้องการพฤติกรรมนั้น)


3
SQL Server 2008 R2“ Ghost Memory” หรือไม่
เรามีเครื่อง SQL Server 2008 R2 โดยเฉพาะที่กำลังประสบปัญหาหน่วยความจำแปลก ๆ ตัวเครื่องมีทรัพยากรมากมายรวมถึงโปรเซสเซอร์ Quad-Core สองตัว, RAM ขนาด 16GB และ Windows Server 2008 R2 Enterprise ขนาด 64 บิต (เป็น Dell PowerEdge 2950) . ปัญหาที่แปลกคือระบบรายงานหน่วยความจำ 82% ที่ใช้งานอยู่ แต่ sqlservr.exe รายงานว่ามีการใช้งาน 155mb เท่านั้น สาเหตุที่ฉันสงสัยว่า SQL Server นั้นเป็นปัญหาเพราะถ้าฉันรีสตาร์ทกระบวนการ sqlservr.exe ปริมาณการใช้หน่วยความจำกลับสู่ปกติเป็นระยะเวลาหนึ่ง ไม่มีใครมีแนวคิดใด ๆ เกี่ยวกับวิธีที่ฉันจะเริ่มติดตามปัญหานี้ได้หรือไม่ ขอบคุณเจสัน

3
ข้อผิดพลาด“ ฐานข้อมูลกำลังอยู่ในช่วงเปลี่ยนผ่าน”
วันนี้ฉันพยายามกู้คืนฐานข้อมูลผ่านฐานข้อมูลที่มีอยู่แล้วฉันเพียงคลิกขวาที่ฐานข้อมูลใน SSMS -> ภารกิจ -> ใช้ออฟไลน์เพื่อที่ฉันจะคืนค่าฐานข้อมูล หน้าต่างป๊อปอัปขนาดเล็กปรากฏขึ้นและปรากฏขึ้นQuery Executing.....เป็นครั้งคราวแล้วเกิดข้อผิดพลาดDatabase is in use cannot take it offlineขึ้น จากที่ฉันรวบรวมมีการเชื่อมต่อที่ใช้งานกับฐานข้อมูลนั้นดังนั้นฉันพยายามที่จะดำเนินการค้นหาต่อไปนี้ USE master GO ALTER DATABASE My_DatabaseName SET OFFLINE WITH ROLLBACK IMMEDIATE GO อีกครั้งที่จุดนี้ SSMS พบQuery Executing.....บางครั้งแล้วโยนข้อผิดพลาดต่อไปนี้: Msg 5061, Level 16, State 1, Line 1 ALTER DATABASE failed because a lock could not be placed …

4
รับ id ของงานหรือชื่องานจากภายในการดำเนินงาน
ฉันมีฐานข้อมูลกลางที่ฉันเขียนผลลัพธ์งานบนเซิร์ฟเวอร์ทั้งหมดของฉันกลับไป ฉันส่งพารามิเตอร์ 3 ตัวผ่าน powershell ในงาน SQL กลับไปที่ sp บนเซิร์ฟเวอร์กลางที่ตรวจสอบว่างานควรจะทำงานในเวลานั้น ฯลฯ ข้อมูลจะถูกเปิดเผยผ่าน SSRS เพื่อให้เราเห็นงานล้มเหลว / งานที่ต้องทำงานนาน / & งานที่ไม่ได้ทำงาน แต่ควรมี (หรือถ้ามีคนยุ่งกับตาราง) ในการทำเช่นนี้ฉันมี 2 ขั้นตอนงานในแต่ละงานบนเซิร์ฟเวอร์ทุกเครื่องและฉันต้องการลดสคริปต์ลงเหลือเพียง 1 ขั้นตอนในแต่ละงาน .. อาจเป็นไปได้ที่จะโทรหาจากเครือข่ายที่ใช้ร่วมกัน .. แต่ปัญหาของฉันคือหนึ่งในสามพารามิเตอร์ที่ฉันผ่าน ฉันต้องการรับ jobid ที่กำลังเรียกใช้หรือชื่องานจากภายในงานที่กำลังดำเนินการดังนั้นฉันไม่ต้อง hardcode พารามิเตอร์ name 3 พารามิเตอร์ที่ฉันผ่านคือ jobid สถานะ (สำเร็จ / ล้มเหลว), errormsg สคริปต์ powershell ที่ฉันเขียนนั้นค่อนข้างตรงไปตรงมา เรียกใช้-sqlcmd -ServerInstance "MYRemoteSYSTEM" …

4
แยกฟิลด์จาก RESTORE HEADERONLY
ฉันพยายามใช้ 'เรียกคืน HEADERONLY ' เพื่อรับวันที่ที่ฉันกำลังจะทำการสำรองข้อมูล คำสั่ง: RESTORE HEADERONLY FROM DISK = '<path to .bak file>' ทำงานได้ดีใน Query Analyzer และให้ชุดผลลัพธ์กับคอลัมน์ 50 คอลัมน์ ปัญหาคือการเข้าถึงนี้จากรหัส ฉันสามารถเอามันเข้าไปในตารางชั่วคราวได้โดยการประกาศทุก ๆ คอลัมน์ของคอลัมน์ 50: ish แทรกเข้าไปด้วยexecและรับค่าที่ฉันต้องการจากตรงนั้น ปัญหาคือฉันต้องการหลีกเลี่ยงการประกาศ resultset ทั้งหมดเป็นตารางชั่วคราวเนื่องจากดูเหมือนว่าจะเป็นวิธีการแก้ไขที่เปราะบางหากพวกเขาเพิ่มคอลัมน์ลงในรุ่นอนาคต มีวิธีใดที่จะเอาคอลัมน์เดียวออกจากชุดผลลัพธ์นี้โดยไม่ต้องประกาศคอลัมน์ทั้งหมดหรือไม่

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