ให้ระบบไฟล์เข้าถึงบัญชีเสมือน SQLSERVERAGENT


23

ฉันพยายามให้สิทธิ์การNT Service\SQLSERVERAGENTเข้าถึงระบบไฟล์บัญชี Windows ตามคำตอบที่ทำเครื่องหมายไว้ในคำถามนี้ ฉันเชื่อว่าเป็นบัญชีบริการเสมือนจริงและไม่ปรากฏในแผงควบคุม ->พื้นที่บัญชีผู้ใช้

ฉันจะอนุญาตให้บัญชีบริการนี้เข้าถึงระบบไฟล์ได้อย่างไร โดยเฉพาะใน Windows 7

ฉันอ่านหลายวิธีแล้วและดูเหมือนจะไม่มีตัวเลือกสำหรับฉัน ฉันลองใช้วิธี PowerShell แต่คำสั่ง AD ไม่ใช่คำสั่งที่ถูกต้อง ฉันยังดาวน์โหลดและติดตั้งแพตช์ windows ที่จำเป็นสำหรับคำสั่งเหล่านั้น ฉันได้อ่านด้วยว่าฉันควรจะทำสิ่งนี้ผ่านทางตัวจัดการการกำหนดค่าเซิร์ฟเวอร์ SQL หรือสตูดิโอการจัดการ ฉันไม่สามารถคิดออกว่าจะปรับเปลี่ยนสิทธิ์เหล่านี้ได้ที่ไหน

กระบวนการ บริษัท ตัวแทนของเซิร์ฟเวอร์ SQL ล้มเหลวในการเริ่มต้นด้วยข้อความแสดงข้อผิดพลาดต่อไปนี้:

Login failed for user 'NT SERVICE\SQLSERVERAGENT'.  
Reason: Failed to open the explicitly specified database 'msdb'.  
[CLIENT: <local machine>]

จาก Googling ของฉันมันเกี่ยวข้องกับการอนุญาตของบัญชีนี้

ฉันไม่แน่ใจว่าฐานข้อมูลเสียหาย แต่ระบุว่าฐานข้อมูลอยู่ในสถานะปกติ บริษัท ตัวแทนการเซิร์ฟเวอร์ SQL เข้าสู่ระบบเป็นส่วนหนึ่งของsysadminและpublicกลุ่ม

คำตอบ:


18

เมื่อต้องการตอบคำถามของคุณโดยเฉพาะนี่คือวิธีที่คุณให้สิทธิ์การเข้าถึงดิสก์กับบัญชีตัวแทนของเซิร์ฟเวอร์ SQL ในตัว แต่อ่านต่อเมื่อฉันตอบสิ่งที่ฉันเชื่อว่าเป็นปัญหาจริง:

1. > คลิกขวาที่ไดรฟ์เลือกคุณสมบัติคลิกปุ่มเพิ่มและป้อนบัญชี SQLSERVERAGENT (ตรวจสอบให้แน่ใจว่าโดเมนของคุณไม่ได้ถูกเลือกในกล่องข้อความจากตำแหน่งนี้ แต่เป็นชื่อคอมพิวเตอร์ของคุณ):

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

2. > คลิกปุ่มตรวจสอบชื่อเพื่อตรวจสอบว่าบัญชีถูกต้อง:

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

3. > ตอนนี้เพิ่มการอนุญาตไฟล์ที่คุณต้องการในบัญชี SQLSERVERAGENT สำหรับจุดประสงค์ในการแก้ไขปัญหาคุณอาจต้องการควบคุมแบบเต็มรูปแบบจากนั้นปรับขนาดในภายหลังตามต้องการ:

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

ที่ถูกกล่าวว่าคุณอาจต้องใช้ SQL Server Configuration Manger เพื่อเพิ่มผู้ใช้ SQL Agent อีกครั้ง - ตามความคิดเห็นที่ฉันเห็นเกี่ยวกับ msdb และการเข้าสู่ระบบ เครื่องมือจัดการการกำหนดค่าเปลี่ยนแปลง SQL Server มากกว่าการใช้แอปเพล็ต Windows Services - ดังนั้นเครื่องมือจัดการการกำหนดค่าควรใช้เพื่อเปลี่ยนบริการ SQL ใด ๆ

วิธีนี้จะแก้ไขปัญหาหากมีใครบางคนอาจเปลี่ยนบัญชีภายในบริการ Windows ทำให้บริการล้มเหลวในการเริ่มต้น คุณต้องรีเซ็ตภายในเครื่องมือจัดการการกำหนดค่า การทำเช่นนี้ช่วยให้เครื่องมือจัดการการกำหนดค่าเพิ่มลงใน SQL Server สิทธิ์ที่จำเป็นในการจัดการฐานข้อมูล MSDB สำหรับบัญชี Local Service (NT SERVICE \ SQLSERVERAGENT) ในขณะที่การเปลี่ยนบัญชีภายในแอปเพล็ตบริการ Windows ไม่

Caveat: รุ่น SQL Server Express ที่สูงกว่า 2000 ไม่รวม SQL Agent ลักษณะบางอย่างของมันอาจปรากฏขึ้นที่นั่น แต่ไม่สามารถใช้งานได้ในผลิตภัณฑ์ Express เวอร์ชัน

ในการเริ่มต้นให้เปิดตัวจัดการการกำหนดค่าเซิร์ฟเวอร์ SQL และคลิกสองครั้งที่บริการตัวแทนของเซิร์ฟเวอร์ SQL ในบริการเซิร์ฟเวอร์ SQL เลือกปุ่มตัวเลือกบัญชีในตัวและเลือกบริการในท้องถิ่นแล้วคลิกปุ่มใช้ สำคัญ : หากคุณเห็นว่ามีการเลือกบัญชีนี้แล้วให้เลือกบัญชีอื่นและคลิกปุ่มใช้ จากนั้นเปลี่ยนกลับเป็น Local Service แล้วคลิกปุ่ม Apply เพื่อให้เครื่องมือจัดการการกำหนดค่าสามารถเพิ่มสิทธิ์ MSDB ที่ถูกต้องสำหรับบริการ SQL Agent เพื่อเริ่มต้น ตอนนี้รีสตาร์ท บริษัท ตัวแทนของเซิร์ฟเวอร์ SQL เพื่อแสดงการตั้งค่าใหม่นี้

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


1
บัญชีตัวแทนของเซิร์ฟเวอร์ SQL ของฉันถูกตั้งค่าเป็นNT Service\SQLAgent$MyInstanceNameและพยายามที่จะตั้งค่าความปลอดภัยในโฟลเดอร์และกดตรวจสอบชื่อว่าไม่พบชื่อและไม่พบมัน หลังจากผิดหวังมากฉันรู้ว่าค่าเริ่มต้น 'จากตำแหน่งนี้' เมื่อกดเพิ่มเพื่อเพิ่มการอนุญาตไม่ได้ถูกกำหนดไว้ในเครื่องท้องถิ่นของฉันมันถูกตั้งเป็นโดเมนของฉัน การเปลี่ยนเป็นเครื่องโลคัลของฉัน (โหนดรูทมากในทรี) อนุญาตให้ตรวจพบNT Service\SQLAgent$MyInstanceNameบัญชีของฉันเพื่อเพิ่มลงในการอนุญาตของโฟลเดอร์
NibblyPig

ฉันได้รับ "MyInstanceName" จากบันทึกเหตุการณ์ซึ่งบันทึกข้อผิดพลาด
Jasen

2

ฉันแก้ไขปัญหานี้โดยการตั้งค่าบัญชีการเข้าสู่ระบบตัวแทนของเซิร์ฟเวอร์ SQL เป็น LocalSystem


2
ในขณะที่นี่เป็นวิธีแก้ปัญหาที่สามารถทำให้สิ่งต่างๆทำงานได้โดยทั่วไปถือว่าปลอดภัยน้อยกว่าการใช้โซลูชันที่แนะนำในคำตอบนี้
RDFozz

2

ฉันเห็นด้วยที่น่าผิดหวัง .. เห็นได้ชัดว่ามันง่ายเหมือนพิมพ์ชื่อ http://zarez.net/?p=3187

สรุป: พิมพ์ NT SERVICE \ MSSQLSERVER จากนั้นอย่าคลิกตรวจสอบชื่อเพียงกด OK และคุณสามารถตั้งค่าการอนุญาตโฟลเดอร์สำหรับบัญชีตัวแทนของ SQL


1
ยินดีต้อนรับสู่ DBA SE! ฉันไม่ได้ลงคะแนน คำตอบของคุณอยู่ในหมวดหมู่ "คำตอบเฉพาะลิงก์" คำตอบเหล่านี้เข้าใจยากเมื่อด้านระยะไกลลงไป ผู้ตรวจสอบบทความของคุณควรพูดกับคุณว่าเป็นความผิดพลาดของพวกเขา ดังนั้น: 1) คำตอบของคุณควรเป็นคำตอบจริง (คำถามด้านบน) 2) หากคุณอ้างถึงสิ่งใดอ้างอิงหน้าเว็บคัดลอกวางสิ่งที่สำคัญที่สุดในโพสต์ | ฉันยกระดับการโหวตของคุณให้ แต่คุณแนะนำให้ผู้วิจารณ์คนอื่นเชื่อ
peterh กล่าวว่าคืนสถานะโมนิก้า

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