แถวศูนย์กลับมาจากการสอบถาม DMV sys.dm_os_performance_counters


9

ฉันมีผู้ใช้ที่SQL Server 2014 Standard Edition (RTM)มีSYSADMINบทบาทกับสิทธิ์การดูสถานะเซิร์ฟเวอร์ แต่เมื่อฉันเรียกใช้ DMV sys.dm_os_performance_countersจะไม่มีการบันทึก

มีความคิดใดที่ผิดปกติเกี่ยวกับการอนุญาต

ป้อนคำอธิบายรูปภาพที่นี่

เอาต์พุตของ @@ เวอร์ชัน:

Microsoft SQL Server 2014 - 12.0.2000.8 (X64) 20 ก.พ. 2014 20:04:26 ลิขสิทธิ์ (c) Microsoft Corporation Standard Edition (64 บิต) บน Windows NT 6.3 (รุ่น 9600:) (Hypervisor)


ค่อนข้างเป็นไปได้ว่าระหว่างการติดตั้งตัวนับรีจิสทรีจะไม่ถูกติดตั้ง หากผู้ใช้มีsysadminสิทธิ์แล้วเขาไม่จำเป็นต้องview server stateได้รับอนุญาตให้เรียกใช้ DMV ที่รวมอยู่ในบทบาทดูแลระบบ ในแง่ของข้างต้นหากไม่มีการส่งคืนแถวหมายความว่าตัวนับ perfmon ไม่ได้ถูกติดตั้ง
Shanky

@Shanky ไม่เคยมีเหตุผลที่เป็นไปได้อีก 2 ข้อ ฉันเองมีเหตุผลรีจิสทรี (ในสภาพแวดล้อมการรักษาความปลอดภัยที่เห็นได้ชัดว่าการเปลี่ยนแปลงรีจิสทรีในระหว่างการติดตั้งไม่ได้ผ่านไปอย่างถูกต้อง)
58

คำตอบ:


4

หากคุณแน่ใจว่าผู้ใช้นั้นมีปัญหาView Server State(และดูเหมือนว่าในภาพหน้าจอของคุณ)

จากนั้นมีสาเหตุหลายประการที่ใส่ไว้ในบล็อก msdnก่อนหน้านี้ ตั้งแต่:

  1. วัตถุของประสิทธิภาพและการตั้งค่าตัวนับในระหว่างการติดตั้ง SQL Server ล้มเหลว
  2. ส่วนผสมของแพลตฟอร์ม 64 และ 32 บิต
  3. สิทธิ์ของรีจิสทรีได้รับการเบ้

ในการแก้ไขปัญหานี้เราสามารถใช้ขั้นตอนเดียวกันกับที่ระบุไว้ในแนวทางในการติดตั้งเคาน์เตอร์วัดประสิทธิภาพในการโพสต์แลกเปลี่ยนสแต็กอื่น:

การใช้พรอมต์คำสั่งผู้ดูแลระบบยกระดับให้ทำตามขั้นตอนต่อไปนี้

  1. เปลี่ยนพา ธ ไปยังBINNไดเร็กทอรีของอินสแตนซ์ SQL Server ที่คุณต้องการแก้ไข
    (Ex: C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\Binn)
  2. ดำเนินการunlodctr <<REGISTERED SERVER NAME>>
    ตัวอย่าง: unlodctr MSSQL$SQL2008หรือSQLAgent$SQL2008...
  3. ดำเนินการlodctr /T:<<perf-sql* matching the counters you desire to load>>
    ตัวอย่าง: perf-MSSQL$SQL2008sqlctr.iniหรือperf-SQLAgent$SQL2008sqlagtctr.iniสำหรับ SQLAgent /Tเป็นสิ่งสำคัญในการโหลดให้บริการนับประสิทธิภาพการทำงานของ SQL Server เป็นผู้ให้บริการที่เชื่อถือได้
  4. วนรอบบริการรีจิสตรีระยะไกล:
    net stop "Remote Registry"จากนั้นnet start "Remote Registry"
  5. บังคับการซิงโครไนซ์ WMI โดยwinmgmt /resyncperfctr "<<PID>>"
    ที่ PID เป็นรหัสกระบวนการของWinPriv.exe(คุณสามารถรับได้จากตัวจัดการงาน)

อาจจำเป็นต้องมีสิ่งต่อไปนี้ด้วย:

  • ตรวจสอบให้แน่ใจว่าได้รับสิทธิ์ด้านความปลอดภัยที่ถูกต้องให้กับHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009
    คีย์รีจิสทรี:

    1. ให้สิทธิ์ควบคุมทั้งหมดแก่บัญชีเจ้าของผู้สร้าง
    2. ให้สิทธิ์ควบคุมทั้งหมดกับบัญชีผู้ดูแลระบบ
    3. ให้สิทธิ์ในการอ่านแก่ผู้ดูแลระบบ SQL บนกล่อง / โหนด
    4. ให้สิทธิ์ควบคุมทั้งหมดกับบัญชีระบบ

วิธีนี้สำหรับ SQL Server 2008 เหมือนกันกับปี 2014 ใช่ไหม
AA.SC

@ AA.SC ใช่วิธีนี้ไม่ได้เปลี่ยน AFAIK
เปิดใช้งาน

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