Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, SQL Server Agent hizmetinin yanıt vermeyi durdurması veya başlatmayı denediğinizde beklediğinizden daha uzun sürmesi sorununa yönelik sorun giderme yönergeleri sağlanır. Birçok farklı temel sorun bu soruna neden olabilir. Bu makale en yaygın senaryolardan bazılarını kapsar.
Özgün ürün sürümü: SQL Server
Özgün KB numarası: 2795690
Belirtiler
BAŞLATMAyı denediğinizde SQL Server Aracısı başarısız olur veya başlatmayı beklediğinizden daha uzun sürer. Ayrıca, aşağıdaki senaryolardan biriyle veya daha fazlasıyla karşılaşabilirsiniz:
Senaryo 1: Sistem olay günlüğüne aşağıdaki hata iletisi kaydedilir:
SQL Server Aracısı (MSSQLSERVER) hizmeti aşağıdaki hata nedeniyle başlatılamadı:
Hizmet başlangıç veya denetim isteğine zamanında yanıt vermedi.Senaryo 2: Aracının durumu Denetim Masası'nda "Başlatılıyor" olarak görünür ve SQLAgent.log dosyasına aşağıdaki hata iletisi kaydedilir:
Boşta cpu koşulu tanımlanmadı - OnIdle iş zamanlamalarının hiçbir etkisi olmaz.
Ayrıca, SQLAgent.log dosyasında aşağıdaki girdiler günlüğe kaydedilebilir:
<Time Stamp> - ? [431] Populating subsystems cache... <Time Stamp> - ? [432] There are 7 subsystems in the subsystems cache <Time Stamp> - ? [124] Subsystem 'ActiveScripting' successfully loaded (maximum concurrency: 40) <Time Stamp> - ? [124] Subsystem 'ANALYSISCOMMAND' successfully loaded (maximum concurrency: 400) <Time Stamp> - ? [124] Subsystem 'ANALYSISQUERY' successfully loaded (maximum concurrency: 400) <Time Stamp> - ? [124] Subsystem 'CmdExec' successfully loaded (maximum concurrency: 40) <Time Stamp> - ? [124] Subsystem 'PowerShell' successfully loaded (maximum concurrency: 2) <Time Stamp> - ? [124] Subsystem 'SSIS' successfully loaded (maximum concurrency: 400) <Time Stamp> - ? [124] Subsystem 'TSQL' successfully loaded (maximum concurrency: 80) <Time Stamp> - ! [364] The Messenger service has not been started - NetSend notifications will not be sent <Time Stamp> - ? [129] SQLSERVERAGENT starting under Windows NT service control <Time Stamp> - + [396] An idle CPU condition has not been defined - OnIdle job schedules will have no effect <Time Stamp> - ? [110] Starting SQLServerAgent Monitor using '' as the notification recipient... <Time Stamp> - ? [146] Request servicer engine started <Time Stamp> - ? [133] Support engine started <Time Stamp> - ? [167] Populating job cache... <Time Stamp> - ? [131] SQLSERVER service stopping due to a stop request from a user, process, or the OS... <Time Stamp> - ? [134] Support engine stopped <Time Stamp> - ? [197] Alert engine stopped <Time Stamp> - ? [168] There are 4731 job(s) [0 disabled] in the job cache <Time Stamp> - ? [170] Populating alert cache... <Time Stamp> - ? [171] There are 0 alert(s) in the alert cache <Time Stamp> - ? [149] Request servicer engine stopped <Time Stamp> - ? [248] Saving NextRunDate/Times for all updated job schedules... <Time Stamp> - ? [249] 0 job schedule(s) saved <Time Stamp> - ? [127] Waiting for subsystems to finish... <Time Stamp> - ? [128] Subsystem 'ActiveScripting' stopped (exit code 1) <Time Stamp> - ? [128] Subsystem 'ANALYSISCOMMAND' stopped (exit code 1) <Time Stamp> - ? [128] Subsystem 'ANALYSISQUERY' stopped (exit code 1) <Time Stamp> - ? [128] Subsystem 'CmdExec' stopped (exit code 1) <Time Stamp> - ? [128] Subsystem 'PowerShell' stopped (exit code 1) <Time Stamp> - ? [128] Subsystem 'SSIS' stopped (exit code 1) <Time Stamp> - ? [175] Job scheduler engine stoppedSenaryo 3: Veritabanı altyapısı
session_idhizmetinden bir görüntüler ve bu oturumda çalıştırılan sorgu metni olarak aşağıdaki iş görüntülenir:EXECUTE msdb.dbo.sp_sqlagent_refresh_job
Neden 1: Birden çok iş girdisi
SQL Server Aracısı'nda çok sayıda zamanlamaya sahip çok sayıda iş yapılandırdığınızda bu sorun oluşabilir. Bu yapılandırma, Genel yenileyici görevini sürekli olarak etkinleştirerek meşgul durumda tutabilir.
Örneğin, SQL Server Reporting Services Configuration Manager'da raporlarınız için istemeden birden çok abonelik ayarlarsanız sorun oluşabilir.
Geçici çözüm
Bu sorunu geçici olarak çözmek için ihtiyacınız olmayan işleri silin.
İstenmeyen olarak birçok abonelik ayarladığınız için birçok iş girdisi varsa , Reporting Services Configuration Manager'ı kullanarak gereksiz abonelikleri silin.
Neden 2: ODBC sürücüsü eksik veya çalışmıyor
SQL Server Açık Veritabanı Bağlantısı (ODBC) sürücüsü kaldırılırsa veya çalışmazsa (genellikle sistem güncelleştirmeleri sonrasında) bu sorun oluşabilir. SQL Server Aracısı, SQL Server'a bağlanmak için SQL Server ODBC sürücüsünü kullanır. Sürücü eksikse veya çalışmıyorsa, SQL Server Aracısı başlatılamaz.
SQL Server'ın farklı sürümleri için ODBC sürücü gereksinimleri hakkında bilgi için bkz. SQL Server için donanım ve yazılım gereksinimleri.
Çözüm
SQL Server ODBC sürücüsünün eksik olup olmadığını denetlemek için yükseltilmiş bir Komut İstemi penceresinde veya PowerShell'de aşağıdaki komutlardan birini çalıştırın:
Komut İstemi:
odbcad32.exeBu komut ODBC Veri Kaynağı Yöneticisi'ni açar.
PowerShell:
Get-OdbcDriverBu komut, yüklü ODBC sürücülerinin listesini oluşturur.
Gerekli SQL Server ODBC sürücüsünün mevcut olup olmadığını, SQL Server sürümlerinde ve ODBC ve OLE DB sürücülerinde bulunan tabloyla karşılaştırarak denetleyin. Tabloda, her SQL Server altyapısıyla birlikte gönderilen ve SQL Server Aracısı tarafından SQL Server altyapısına bağlanmak için kullanılan SQL Server ODBC sürücüsünün sürümü listelenir.
- Gerekli ODBC sürücüsü sürümü varsa, ODBC Sürücüsü'ndeki adımları izleyerek onarın.
- ODBC sürücüsü eksikse, ODBC sürücüsü eksik bölümünde yer alan adımları izleyerek yükleyin.
ODBC sürücüsü var
- Program Ekle veya Kaldır'ı açın ve SQL Server için Microsoft ODBC Sürücüsü <Driver_Version'i> seçin.
- Üç noktayı (...) seçin ve Değiştir'i seçin.
- Açılan sihirbazda Onar seçeneğini belirleyin ve sürücüyü onarma adımlarını izleyin.
- Onarım adımlarını tamamladıktan sonra, onarılan SQL Server sürücüsüyle test DSN'sini yapılandırarak SQL Server bağlantısını test edebilirsiniz. Daha fazla bilgi için bkz. ODBC Veri Kaynağı Yöneticisi DSN seçenekleri.
ODBC sürücüsü eksik
GUI veya sessiz yükleme kullanarak sürücüyü yükleyin.
Sessiz yükleme gerçekleştirmek için aşağıdaki komutu çalıştırın:
msiexec /i <ODBC_Driver_MSI> /qn
Sürücü yüklemesi tamamlandıktan sonra SQL Server Agent'ı yeniden başlatın.
SQL SERVER AGENT hizmetinin çalıştığını doğrulayın.
Adsız bir SQL Server örneği için aşağıdaki PowerShell komutunu çalıştırın:
Get-Service -Name SQLSERVERAGENTAdlandırılmış bir SQL Server örneği için aşağıdaki PowerShell komutunu çalıştırın:
Get-Service -Name SQLAgent$<InstanceName>
Neden 3: SQLAgent bekleniyor - Genel Yenileyici hizmeti
SQL Server Aracısı başlatıldığında SQLAgent – Genel Yenileyici bileşeni, iş meta verilerini yenileme yordamını msdb.dbo.sp_sqlagent_refresh_job çalıştırır. Bu işlem sırasında SQL Server, iş sahipleri veya ara sunucu hesapları için Windows grup üyeliğini tekrar tekrar denetleyebilir. Bu denetimler Windows API çağrılarını kullanır ve bu da oturumun aşağıdaki bekleme türlerinden birini veya daha fazlasını girmesine neden olabilir:
PREEMPTIVE_OS_LOOKUPACCOUNTSIDPREEMPTIVE_OS_AUTHORIZATIONOPSASYNC_NETWORK_IO
Oturumu ve ilişkili komut metnini tanımlamak için aşağıdaki sorguyu kullanın:
SELECT
s.session_id,
r.status,
r.wait_type,
r.wait_time,
s.program_name,
t.text
FROM sys.dm_exec_requests AS r
RIGHT JOIN sys.dm_exec_sessions AS s
ON r.session_id = s.session_id
OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) AS t
WHERE s.program_name = 'SQLAgent - Generic Refresher';
Bu sorun oluştuğunda oturum RUNNABLE durumundadır ve düzenli olarak PREEMPTIVE_OS_LOOKUPACCOUNTSID bekleme türünü kullanarak bekler. Veya oturum, bekleme türü için ASYNC_NETWORK_IO bekleme durumundadır.
Geçici çözüm
Windows yetkilendirme aramalarıyla ilgili gecikmeleri azaltmak için:
- Etki alanı denetleyicilerinin erişilebilir ve duyarlı olduğundan emin olun.
- SQL Aracısı iş sahipliği veya ara sunucu hesapları için yüksek oranda iç içe veya çok büyük Active Directory grupları kullanmaktan kaçının.
- Hizmet hesabının erişim belirtecini yenilemek için önemli Active Directory grup üyeliği değiştikten sonra SQL Server Agent'ı yeniden başlatın.
- Uygun olduğunda iş sahipliği için AD grupları yerine SQL oturum açma bilgilerini kullanmayı göz önünde bulundurun.
- Pahalı Windows güvenlik aramalarına katkıda bulunabilecek Windows sorumlularını belirlemek için SQL Aracısı işlerini ve proxy'lerini gözden geçirin.
Daha Fazla Bilgi
- bir işi silme hakkında daha fazla bilgi için bkz . Bir veya Daha Fazla İşi Silme.
- Raporlama hizmetleri aboneliklerinizi yönetme hakkında daha fazla bilgi için bkz. Yerel Mod Rapor Sunucuları için Abonelik Oluşturma ve Yönetme.
- Çeşitli bekleme türleri hakkında daha fazla bilgi için bkz . SQL Server bekleme türleri.