Memberikan akses sistem file ke akun virtual SQLSERVERAGENT

23

Saya mencoba memberikan NT Service\SQLSERVERAGENTakses sistem file akun Windows, berdasarkan jawaban yang ditandai dalam pertanyaan ini . Saya percaya ini adalah akun layanan virtual, dan itu tidak muncul di panel kontrol -> area akun pengguna .

Bagaimana cara saya memberikan akses akun layanan ini ke sistem file? Secara khusus, pada Windows 7.

Saya telah membaca beberapa pendekatan dan sepertinya tidak ada yang menjadi pilihan bagi saya. Saya mencoba pendekatan PowerShell, tetapi perintah AD bukan perintah yang valid. Saya bahkan mengunduh dan menginstal tambalan windows yang diperlukan untuk perintah-perintah itu. Saya juga membaca bahwa saya harus dapat melakukan ini melalui Manajer Konfigurasi Server SQL atau Studio Manajemen. Sepertinya saya tidak bisa mencari tahu di mana harus menyesuaikan izin ini.

Proses SQL Server Agent gagal memulai, dengan pesan galat berikut:

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

Berdasarkan Googling saya, ini ada hubungannya dengan izin akun ini.

Saya tidak yakin apakah database rusak, tetapi dikatakan database dalam status Normal . Login SQL Server Agent adalah bagian dari sysadmindan publicgrup.

Ryan
sumber

Jawaban:

18

Untuk secara khusus menjawab pertanyaan Anda , inilah cara Anda memberikan hak akses disk ke akun Agen SQL Server bawaan. Tapi baca terus saat saya menjawab apa yang saya yakini sebagai masalah sebenarnya:

1.> Klik kanan drive Anda, pilih properti, klik tombol Tambah dan masukkan akun SQLSERVERAGENT (pastikan domain Anda tidak dipilih di kotak teks Dari lokasi ini, melainkan nama komputer Anda):

masukkan deskripsi gambar di sini

2.> Klik tombol Periksa Nama untuk memvalidasi bahwa akun itu valid:

masukkan deskripsi gambar di sini

3.> Sekarang, tambahkan izin file yang Anda butuhkan ke akun SQLSERVERAGENT. Untuk tujuan pemecahan masalah, Anda mungkin ingin memberikan kontrol penuh dan kemudian skala kembali nanti sesuai kebutuhan:

masukkan deskripsi gambar di sini

Yang sedang berkata , Anda mungkin hanya perlu menggunakan SQL Server Configuration Manger untuk menambahkan kembali pengguna SQL Agent - sesuai dengan komentar yang saya lihat tentang msdb dan login. Manajer Konfigurasi membuat lebih banyak perubahan pada SQL Server daripada menggunakan applet Layanan Windows - jadi Manajer Konfigurasi harus selalu digunakan untuk mengubah Layanan SQL APAPUN.

Ini akan memperbaiki masalah jika seseorang mungkin telah mengubah akun dalam Layanan Windows yang menyebabkan layanan gagal pada saat startup. Anda perlu meresetnya di dalam Configuration Manager. Melakukan hal itu memungkinkan Manajer Konfigurasi untuk menambahkan ke SQL Server izin yang sangat dibutuhkan untuk mengelola database MSDB untuk akun Layanan Lokal (NT SERVICE \ SQLSERVERAGENT) sedangkan mengubah akun dalam applet layanan Windows tidak.

Peringatan: Versi SQL Server Express di atas 2000 tidak termasuk Agen SQL. Aspek-aspek tertentu mungkin tampak ada di sana, tetapi tidak dapat digunakan dalam versi Express produk.

Untuk memulai, buka SQL Server Configuration Manager dan klik dua kali layanan SQL Server Agent di SQL Server Services. Pilih tombol radio Akun bawaan dan pilih Layanan Lokal, dan klik tombol Terapkan. Penting : jika Anda sudah melihat bahwa akun ini dipilih, pilih akun lain dan klik Tombol Terapkan. Kemudian, ubah kembali ke Layanan Lokal dan klik tombol Terapkan untuk memungkinkan Pengelola Konfigurasi untuk menambahkan izin MSDB yang benar untuk layanan SQL Agent untuk memulai. Sekarang, restart SQL Server Agent untuk mencerminkan pengaturan baru ini.

masukkan deskripsi gambar di sini

Menyengat
sumber
1
Akun SQL Server Agent saya diatur ke NT Service\SQLAgent$MyInstanceNamedan mencoba untuk mengatur keamanan pada folder dan menekan Periksa Nama kata Nama Tidak Ditemukan dan tidak akan menemukannya. Setelah banyak frustrasi saya menyadari bahwa 'Dari Lokasi Ini' ini ketika menekan Tambah untuk menambahkan izin tidak diatur ke mesin lokal saya, itu diatur ke domain saya. Mengubahnya ke mesin lokal saya (simpul root di pohon) memungkinkannya mendeteksi NT Service\SQLAgent$MyInstanceNameakun saya untuk menambahkannya ke izin folder.
NibblyPig
Saya memperoleh "MyInstanceName" dari Log Kejadian yang mencatat kesalahan.
Jasen
2

Saya mengatasi masalah ini dengan mengatur akun SQL Server Agent Login ke LocalSystem.

louis
sumber
2
Meskipun ini adalah solusi yang dapat menyelesaikan masalah dan menjalankannya, umumnya dianggap kurang aman daripada menggunakan solusi yang disarankan dalam jawaban ini
RDFozz
2

Saya setuju frustasi .. rupanya sesederhana hanya mengetik nama. http://zarez.net/?p=3187

Rangkuman: Ketik NT SERVICE \ MSSQLSERVER dan kemudian jangan klik periksa nama, tekan saja OK dan Anda dapat mengatur izin folder untuk akun agen SQL.

VJason
sumber
1
Selamat datang di DBA SE! Saya tidak memilih. Jawaban Anda termasuk dalam kategori "hanya jawaban tautan". Jawaban-jawaban ini menjadi tidak dapat dipahami, ketika sisi yang jauh turun. Peninjau posting Anda seharusnya mengatakannya kepada Anda, itu adalah kesalahan mereka. Jadi: 1) jawaban Anda seharusnya benar-benar jawaban (untuk pertanyaan di atas) 2) jika Anda mengutip apa pun, merujuk halaman web, salin-rekatkan yang paling penting juga ke dalam pos. | Saya memberi Anda upvote, tetapi saya sarankan untuk meyakinkan pengulas lain.
peterh mengatakan mengembalikan Monica
Saran yang sangat bagus @peterh, terima kasih telah membantu Anda. V Jason, saya telah menambahkan ringkasan dari komentar Anda ke dalam jawaban Anda - itu mungkin cukup tetapi Anda mungkin ingin meninjau untuk melihat apakah Anda ingin menambahkan yang lain. Semua peningkatan dihargai!
Jack Douglas