06.02.2019

Current Database Schema is Not Compatible With This Version Hatası Çözümü

ASP.NET’in kendi içerisindeki kullanıcı yönetimi mimarisini kullanarak Membership, Roles, Profiles gibi önceden hazırlanmış tabloları, view’leri ve stored procedure’ları kullanabilirsiniz. Bu sayede hem database tarafında hem de framework tarafında binlerce satır kod yazmaktan kurtulmış olacağınız gibi kodların tekrar kullanılabilirliği sayesinde kendinize boilerplate kod şabllonları da yaratabilirsiniz.

asp.net error screen

 

Bu giriş açıklamasını yazmam gerekiyordu çünkü The 'System.Web.Security.SqlMembershipProvider' requires a database schema compatible with schema version '1'.  However, the current database schema is not compatible with this version.  You may need to either install a compatible schema with aspnet_regsql.exe (available in the framework installation directory), or upgrade the provider to a newer version. hatası da bu kullanıcı yönetimi sisteminin klonlanmasından kaynaklanmaktadır ve veritabanı schema’sının eksik ya da hatalı olduğunu gösteriyordur.

sql server tasks generate scripts

Stack trace bilgilerine bakarak da aynı mesaj görüntülenebilir. Çözümü oldukça kolay olmakla birlikte kısa ve uzun çözüm yolları şu şekildedir:

 

The 'System.Web.Security.SqlMembershipProvider' requires a database schema compatible with schema version '1' Hatası Çözümü

asp.net membership databse tables

Uzun Çözüm

aspnet_regsql.exe dosyası tekrar çalıştırılarak SqlMembershipProvider tabloları, view’leri ve saklı yordamları sıfırdan kurulabilir. aspnet_regsql.exe dosyasına şu yoldan erişilebilir:

C:\Windows\Microsoft.NET\Framework[framework sürümü]\aspnet_regsql

aspnet_regsql setup wizard

Aspnet_regsql.exe dosyası çalıştırıldığında veritabanı erişim (sunucu ip adresi, kullanıcı adı, parola ve veritabanı adı) bilgilerini isteyecektir. Bu bilgileri girmeden önce bu veritabanında daha önce başka bir SqlMembershipProvider kurulmadığına emin olunmasında fayda var. Tercihen yeni ve temiz bir database açılarak bu işlemin sıfırdan yapılması daha sağlıklı olacaktır.

 

Kolay Çözüm

Hata, Asp.net üyelik sistemi başka bir veritabanından Tasks-> Generate Scripts işlemi yapılarak kopyalandığında aspnet_SchemaVersions tablosunun boş olmasından kaynaklanmaktadır.

Çözüm olarak SchemaVersions tablosuna ilgili değerleri kayıtları gerekmektedir:

INSERT INTO dbo.aspnet_SchemaVersions
VALUES
('common', 1, 1),
('health monitoring', 1, 1),
('membership', 1, 1),
('personalization', 1, 1),
('profile', 1, 1),          
('role manager', 1, 1);
GO

Kayıtlar eklendikten sonra proje rebuild edildiğinde hatanın giderilmiş olduğu görülecektir.

asp.net SchemaVersions table

Current Database Schema is Not Compatible With This Version Hatası Çözümü
Bu makalenin telif hakkı ve tüm sorumlulukları yazara ait olup, şikayetler için lütfen bizimle iletişime geçiniz.
URL:
Etiketler:

Bu makale 2423 kez okundu

06.02.2019 tarihinde yazıldı
Reitix

Yorumlar

  • mbologlu
    14.10.2020

    Bu hatanın Türkçe asp.net sürümlerinde verdiği Türkçe hata da şu şekilde: 'System.Web.Security.SqlMembershipProvider', '1' şema sürümüyle uyumlu bir veritabanı şeması gerektiriyor. Ancak, geçerli veritabanı şeması bu sürümle uyumlu değil. Çerçeve yükleme dizininde bulunan aspnet_regsql.exe ile uyumlu bir şema yüklemeli veya sağlayıcıyı daha yeni bir sürüme yükseltmelisiniz.

  • fatih55
    02.04.2019

    peki bir veri tabanı içerisinde birden çok schema açılarak bu problem daha da öncesinden çözülemez mi? anlayabildiğim kadarıyla sıkıntı zaten olması gereken hayati başlangıç kayıtlarının kopyala çoğalt aşamasında gelmiyor olmasından kaynaklanıyor zaten

Bu yazıya siz de yorum yapabilirsiniz

İnternet sitemizdeki deneyiminizi iyileştirmek için çerezler kullanıyoruz. Bu siteye giriş yaparak çerez kullanımını kabul etmiş sayılıyorsunuz. Daha fazla bilgi.