MIM 2016 Service and Portal Kurulumundaki Bug
Samet Kara
Bu makalede MIM 2016 kurulumunda bulduğum bir bugdan bahsetmek istiyorum. MIM 2016 SP2 sisteminin Service and Portal kurulumu sırasında sıra dışı bir hata aldım ve maalesef ekrana basılan hata açıklayıcı bir hata değildi. Hata verdikten sonra ekranda "OK" tuşuna basınca RollBack işlemi başlatılıyor ve sistem kurulumu tamamlanamıyordu. Kurulum ile ilgili günlükleri incelediğimde aşağıda belirttiğim hatalar ile karşılaştım.
MSI (s) (D8:B8) [12:25:37:638]: Executing op: CustomActionSchedule(Action=UpgradeDatabase,ActionType=1042,Source=D:\Program Files\Microsoft Forefront Identity Manager\2010\Service\Microsoft.IdentityManagement.DatabaseUpgrade.exe,Target=/ConnectionString:"Data Source=SQLSERVER;Initial Catalog=MIMService;Integrated Security=SSPI;Pooling=true;Connection Timeout=225" /FimServiceAccountName:"contoso\MIMService" /FimServiceDatabaseName:"MIMService" keepSQLjobs:"false",)
CustomAction UpgradeDatabase returned actual error code -2 (note this may not be 100% accurate if translation happened inside sandbox)
MSI (s) (D8:B8) [12:25:56:454]: Note: 1: 1722 2: UpgradeDatabase 3: D:\Program Files\Microsoft Forefront Identity Manager\2010\Service\Microsoft.IdentityManagement.DatabaseUpgrade.exe 4: /ConnectionString:"Data Source=SQLSERVER;Initial Catalog=MIMService;Integrated Security=SSPI;Pooling=true;Connection Timeout=225" /FimServiceAccountName:"contoso\MIMService" /FimServiceDatabaseName:"MIMService" keepSQLjobs:"false"
Error 1722. There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor. Action UpgradeDatabase, location: D:\Program Files\Microsoft Forefront Identity Manager\2010\Service\Microsoft.IdentityManagement.DatabaseUpgrade.exe, command: /ConnectionString:"Data Source=SQLSERVER;Initial Catalog=MIMService;Integrated Security=SSPI;Pooling=true;Connection Timeout=225" /FimServiceAccountName:"contoso\MIMService" /FimServiceDatabaseName:"MIMService" keepSQLjobs:"false"
MSI (s) (D8:B8) [12:25:59:829]: Product: Microsoft Identity Manager Service and Portal -- Error 1722. There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor. Action UpgradeDatabase, location: D:\Program Files\Microsoft Forefront Identity Manager\2010\Service\Microsoft.IdentityManagement.DatabaseUpgrade.exe, command: /ConnectionString:"Data Source=SQLSERVER;Initial Catalog=MIMService;Integrated Security=SSPI;Pooling=true;Connection Timeout=225" /FimServiceAccountName:"contoso\MIMService" /FimServiceDatabaseName:"MIMService" keepSQLjobs:"false"
Ancak bu günlük bilgileri aldığım hata mesajından daha fazla bilgi içermesine rağmen hala sorunun neden kaynaklandığını belirtmiyordu. Daha sonra Event Viewer üzerinden kayıtları inceledim.
Kurulum günlüğünde karşılaştığım hatanın aynısı Event Viewerda da kendisini gösterdi.
Bu olayın kaydının altında yer alan olay kaydında ise daha fazla açıklama içerebileceğini düşündüğüm bir tracelog dosyası işaret edilmekteydi.
İlgili dosyayı incelediğimde aşağıdaki gibi bir kayıt gördüm.
Şuana kadar anlayabildiğim tek şey kurulum sırasında "Database Upgrade" isimli işlem gerçekleştirilirken bir problem yaşandığı şeklindeydi. Ben de bu konuyu araştırmaya koyuldum ve hata ile karşılaşan exe dosyasını ve bu dosya ile ilişik config dosyasını buldum. Belki bu dosyaları incelemenin bir faydası olabilir diye düşündüm.
Config dosyasınıı açıp içerisinde yukarıda tracelog dosyasında hata alınan adım olarak belirtilen "ConfigurationChange0006a" ifadesini arattım.
<ConfigurationChange Id="ConfigurationChange0006a" File="ServicePartitionNameAttribute.xml" EmbeddedAsResource="true" PreSql="NoOperation.sql" PostSql="ServicePartitionNameReconciled.sql" SourceVersion="6" />
Bu sonuç bana bir bilgi vermemişti. "ServicePartitionNameAttribute.xml" dosyasını da hiçbir yerde bulamadım ve bir çıkmaza girdim.
Ancak şunu anlamıştım SQL üzerinde veri tabanı oluştururken bir sıkıntı yoktu ancak onu güncellemeye çalışırken bir hata alıyordu. Bu durumda SQL Server Profiler aracını kullanarak kurulumu incelemeye başladım. SQL Server Profiler uygulamasını açtım, gerekli filtreleri girdim ve kurulumu yeniden başlattım. Kurulumda hata aldığım an SQL Server Profiler uygulamasına dönüp son satırlara baktım ve [setup].[EnableServiceBroker] isimli bir StoredProcedure çalıştırıldığını ve hata alındığını gördüm. Bu StoredProcedure'e göz attığımda hatanın nedeni anladım.
Kurulum sırasında aşağıdaki ekranda bizlere veri tabanının ismini değiştirebilmemiz için bir alan verilmiş. Bu alanı aşağıdaki ekran görüntüsünde belirttim.
Ancak bir bu alana FIMService dışında bir isim yazarsak bu Stored Prosedure doğru çalışmamaktadır.
Yine de daha önce pek çok farklı MIM kurulumu yaptım ve her defasında bu veri tabanının adını değiştiririm. Neden ilk defa bu şekilde bir hata aldım diye kontrol ettiğimdeyse Daha önceki MIM denemesinden FIMService diye bir veri tabanı oluşmuş ve bu veri tabanı kullanılmadığı için "Offline" durumuna getirilmiş. Daha önceki kurulumlarımda bu Stored Prosedure sadece veri tabanını bulamadım diye hata verirken bu kurulumda ilgili veri tabanı Offline olduğu için bu sıkıntıyı çıkartmış.
Bunu fark ettikten sonra bu şekilde başka hatalar yapılmış olabileceğini düşündüm ve aşağıdaki SQL cümleciğini yazdım.
Bu cümlecik ile içerisinde FIMService terimi geçen bütün StoredProcedureların listesini oluşturdum.
Çıkan 15 sonucu da incelediğimde genellikle yorum satırlarında FIMService teriminin kullanıldığı, birkaç Stored Prosedure içerisinde ise bu terimin FIMServiceTruncateUser gibi kullanıcı isimlerinde ya da @ile başlayan değişkenlerde kullanıldığını fark ettim. Bu durumda sorun çıkartabilecek olan tek Stored Prosedure'ın [setup].[EnableServiceBroker] olduğunu görmüş oldum.
Sonuç olarak her ne kadar bizlere Veri tabanı adını değiştirebilmemiz için bir alan verilmiş olsa dahi bu Stored Prosedure'dan dolayı ilgili veri tabanının adını değiştirmemenizi önermekteyim.
Last updated