Aracılığıyla paylaş


Güncelleştirme veritabanı betikleri yürütülürken SQL Server yükseltmesi 574 hata koduyla başarısız oluyor

Bu makale, veritabanı yükseltme betiklerini yürütürken SQL Server için Toplu Güncelleştirme (CU) veya Hizmet Paketi'nin (SP) 574 hatasını bildirmesi sorununu gidermenize ve çözmenize yardımcı olur.

Belirtiler

CU veya SP uyguladığınızda kurulum programı aşağıdaki hatayı bildirebilir:

Veritabanı Altyapısı kurtarma tanıtıcısında bekleme başarısız oldu. Olası nedenler için SQL Server hata günlüğüne bakın.

SQL Server hata günlüğünü gözden geçirirken aşağıdaki hata iletilerini fark edebilirsiniz:

Error: 574, Severity: 16, State: 0.
CONFIG statement cannot be used inside a user transaction.
Error: 912, Severity: 21, State: 2.
Script level upgrade for database 'master' failed because upgrade step 'sqlagent100_msdb_upgrade.sql' encountered error 574, state 0, severity 16.
This is a serious error condition which might interfere with regular operation and the database will be taken offline.
If the error happened during upgrade of the 'master' database, it will prevent the entire SQL Server instance from starting.
Examine the previous errorlog entries for errors, take the appropriate corrective actions and re-start the database so that the script upgrade steps run to completion.
Error: 3417, Severity: 21, State: 3.
Script level upgrade for database 'master' failed because upgrade step 'msdb110_upgrade.sql' encountered error 15173, state 1, severity 16

Neden

Güncelleştirme işlemi bir işlem içinde bazı yükseltme betikleri çalıştırabilir. Bu güncelleştirme betikleri, kullanıcıların sistem nesnelerinde ve ilişkili izinlerde değişiklik yapmayabilecekleri varsayımıyla tasarlanmıştır. Sistem nesnelerinde veya izinlerinde yanlışlıkla herhangi bir değişiklik yaparsanız, bu betiklerden bazıları başarısız olabilir ve ilişkili işlem yalnız bırakılmış ve açık kalabilir. Bu senaryoda, kurulum programı daha sonra bazı yapılandırma değerlerini ayarlamak için kullanan sp_configure bir yükseltme betiği yürüttüğünde 574 hatası oluşur. Kurulum hatasının gerçek nedeni, 574 hatasından önce günlüğe kaydedilen girdiler gözden geçirilerek belirlenmelidir.

Örneğin, aşağıdakine benzer bir betik 574 hatasına neden olabilir:

BEGIN TRAN
USE MASTER;
GO
EXEC sp_configure 'recovery interval', '4';
RECONFIGURE WITH OVERRIDE;
COMMIT TRAN

Çözüm

Sorunu çözmek için şu adımları izleyin:

  1. İzleme bayrağı 902 ile SQL Server'ı başlatın. Daha fazla bilgi için bkz . İzleme bayrağı 902 ile SQL Server'ı başlatma adımları.

  2. BAŞARıSıZ işlemi tanımlamak için SQL Server hata günlüğünü açın ve hata 574'e kadar olan iletileri gözden geçirin (aşağıdaki örnek desene bakın).

  3. Başarısız işlemi Olası nedenler ve çözümler bölümündeki bilgilere göre düzeltin.

  4. Başlangıç Parametreleri öğesinden izleme bayrağı 902'yi kaldırın ve SQL Server'ı yeniden başlatın.

    SQL Server izleme bayrağı 902 olmadan başladıktan sonra yükseltme betiği yeniden yürütülür.

    • SP/CU yükseltme betiği başarıyla tamamlanırsa, doğrulamak için SQL Server hata günlüğünü ve bootstrap klasörünü de kontrol edebilirsiniz.
    • Yükseltme betiği yeniden başarısız olursa, SQL Server hata günlüğünü diğer hatalar için denetleyin ve yeni hataları giderin.

Örnek desen: Sistem rolüne izin verme sorunları

2020-08-17 09:38:12.09 spid11s Adding user 'hostname\svc_sqlagent' to SQLAgentUserRole msdb role...
2020-08-17 09:38:12.09 spid11s
2020-08-17 09:38:12.09 spid11s Granting login access'##MS_SSISServerCleanupJobLogin##' to msdb database...
2020-08-17 09:38:12.10 spid11s A problem was encountered granting access to MSDB database for login '(null)'. Make sure this login is provisioned with SQLServer and rerun sqlagent_msdb_upgrade.sql
2020-08-17 09:38:12.10 spid11s A problem was encountered granting access to MSDB database for login '(null)'. Make sure this login is provisioned with SQLServer and rerun sqlagent_msdb_upgrade.sql
2020-08-17 09:38:12.10 spid11s
2020-08-17 09:38:12.10 spid11s Adding user '##MS_SSISServerCleanupJobLogin##' to SQLAgentUserRole msdb role...

Olası nedenler ve çözümler

  • Kullanıcı seçenekleri işlemlerin başarısız olmasına neden olur.

    Çözüm: SQL Server'a bağlanın , soruna neden olabilecek seçenekleri belirlemek için kullanıcı seçenekleri sunucu yapılandırma seçeneği belgelerini kullanın ve çakışan ayarı kaldırın.

    Örneğin Microsoft desteği, IMPLICIT_TRANSACTIONS ayarının kurulumun başarısız olmasına neden olduğu örnekleri görmüştür. Alternatif olarak, çakışan kullanıcı seçeneğini belirleyemiyorsanız, SQL Server Management Studio'da (SSMS) aşağıdaki betiği kullanarak tüm kullanıcı seçeneklerini kaldırın:

    EXEC sp_configure 'user options', '0'
    GO
    RECONFIGURE WITH OVERRIDE;
    GO
    
  • Yalnız bırakılmış kullanıcılar işlemlerin başarısız olmasına neden olur.

    Çözüm: Aşağıdaki gibi bir sorgu kullanarak yalnız bırakılmış kullanıcıları denetleyin:

    SELECT dp.type_desc, dp.SID, dp.name AS user_name
    FROM sys.database_principals AS dp
    LEFT JOIN sys.server_principals AS sp
         ON dp.SID = sp.SID
    WHERE sp.SID IS NULL
         AND authentication_type_desc = 'INSTANCE';
    

    Yalnız bırakılmış kullanıcıları çözme hakkında daha fazla bilgi için bkz . Yalnız bırakılmış kullanıcılarla (SQL Server) ilgili sorunları giderme.

  • Yalnız bırakılmış işler işlemlerin başarısız olmasına neden olur.

    Çözüm: Aşağıdaki gibi bir sorgu kullanarak yalnız bırakılmış işleri denetleyin:

    SELECT sj.name AS Job_Name,
         sl.name AS Job_Owner
    FROM msdb.dbo.sysjobs_view sj
    LEFT JOIN master.dbo.syslogins sl ON sj.owner_sid = sl.sid
    WHERE sl.name <> 'sa'
    ORDER BY sj.name
    

    Burada NULL değeri gösteren herhangi bir kayıt, geçerli Aracı İşi sahibinin yalnız bırakılmış olduğunu gösterir. İşi düzenleyin ve sahibini geçerli bir oturum açmayla değiştirin.