ASPNET_RegSQL.exe İle APP_DATA İçindeki MDF Dosyasında İşlem Yapabilmek
- Ayrıntılar
- Üst Kategori: C#
- Kategori: Problemler ve Çözümler C#
- Cuma, 15 Nisan 2011 09:04 tarihinde oluşturuldu
- Super User tarafından yazıldı.
- Gösterim: 937
PROBLEM:
ASPNET_RegSQL.exe aracı C:\WINDOWS\Microsoft.NET\Framework\(versiyon)\ içerisinde bulunur ve çalıştırdığınızda grafik arayüzlü sihirbaz sayesinde SQL sunucusunun yerini göstererek, sunucudaki istediğiniz veritabanına asp.net security ile alakalı tablolar eklemek için veya çıkarmak için kullanılır.
Ancak, biz asp.net web projemizde app_data klasöründe mdf dosyası olarak sunucusuz bir sql express veritabanına sahipsek, ki bunu kolayca oluşturabiliyoruz web developerdan, ASPNET_RegSQL.exe sihirbazında maalesef bu dosyalara bağlanmak için bir seçenek yok. Evet hiç bununla uğraşmadan web developer project menüsünden asp.net configuration ile de app-data içerisinde ASPNETDB.MDF dosyası oluşturabiliriz ama, ikinci bir veritabanı istemiyoruz çünkü hostingde ikinci veritabanına para vermek istemiyoruz ve kendi tablolarımızla aynı veritabanında bulunmasını istiyoruz. Ne yapacağız?
ÇÖZÜM:
Aslında bir forumda birisi demiş ki, "ASPNETDB.MDF oluştuktan sonra içine kendi tablolarımı da koydum ve veritabanının ismini değiştirdim çalıştı". Bence siz de böyle yapın çünkü en az yarım gün uğraştım beceremedim. Neyi becerdim neyi beceremedim yazayım:
Şimdi aslında web.config gibi ayar dosyaları sadece projemizin klasöründe olacak diye birşey yok. Frameworkun kurulu olduğu dizindeki config klasörü içerisinde de bu config dosyaları var. Bunlardan bir tanesi de machine.config dosyası. Bu dosya içerisinde ASPNETDB.MDF kelimesini aratırsanız, karşınıza çıkacak ve onun ismini orada örneğin DB.MDF yaparsanız, Visual Web Developer IDE'sinin proje menüsündeki ASP.NET Configuration sihirbazı ile oluşan, hatta bir kere oluşturduktan sonra silseniz bile aynı isimle oluşan ve içerisinde membership, role vs. gibi tablolar barındıran bizim istediğimiz üyelik sistemi altyapısını barındaran veritabanının ismi de DB.MDF olacaktır. Yani ismini bu machine.config dosyasından alıyor. Yani ismini değiştirmek istiyorsanız çözüm bu. Ancak bu sefer başka bir problemle karşılaştığım için uğraşmadım. DB.MDF yidaha önce oluşturmuştum. silmeme rağmen hala varolduğunu söyleyip sihirbazın güvenlik ayarı sayfasında ve web projemin login ekranından girmeye çalıştığımda hata veriyordu. Bu hata halen biryerlerde eski veritabanına ait bir iz kaldığının göstergesi.
Bunu bir kenara bırakıp, yani web projemize bu veritabanını nasıl göstereceğimiz tanıtacağımız sorununu baka bir yazıya bırakıp, projemiz görmese bile kendi veritabanı dosyamıza ASPNET_RegSQL.exe aracını kullanarak veya hiç kullanmadan manuel olarak nasıl membership tablolarını atabileceğimizi anlatıyorum en azından buraya kadar çözmüş oluyoruz:
Birinci Yöntem - ASPNET_RegSQL.exe aracını kullanarak yapmak:
C:\WINDOWS\Microsoft.NET\Framework\(versiyon)\
klasörü içinde ASPNET_RegSQL.exe var. Aynı klasörde bir tane bat dosyası oluşturup içine
aspnet_regsql -A all -C "Data Source=.\SQLEXPRESS;Integrated Security=True;User Instance=True" -d "D:\csprojeler\webprojelerim\projeismi\App_Data\db.mdf"
pause
şeklinde, app_data klasörünün içinde bulunan veya nerede bulunuyorsa oradaki SQL express mdf veritabanı dosyanızın klasör yolunu ve ismini doğru yazdıktann sonra, bat dosyasına çift tıklayarak çalıştırırsınız ve tablolar yüklenmiş olur. Nelerin yüklendiğini komut satırında gösterir rapor olarak. Parametreleri değiştirerek örneğin sadece common ve membership özelliklerini kapsayacak şekilde bir tablo kurulumu oluşturmayı gerekleştirebilirsiniz.
Yani grafik arayüzde maalesef veritabanı dosyasını doğrudan seçemiyoruz ancak komut satırından aynı aracı kullanarak işimizi halledebiliyoruz.
İkinci Yöntem - Tabloları oluşturacak olan sorgu dosyalarınını Frameworkün kurulu olduğu klasörden alıp düzenleyip veritabanımızda çalıştırmak.
C:\WINDOWS\Microsoft.NET\Framework\(versiyon)\
klasörü içerisinde InstallCommon.sql, InstallMembership.sql gibi dosyalar var. Bu aracın kullandığı sorgular bunlar aslında. Bunları kaynak gösterdiğim linkte(http://www.msjoe.com/2010/07/adding-asp-net-membership-to-your-own-database/) gösterdiği gibi yani metin editörü ile açıp dbname ismini kendi veritabanınız olarak belirtip kendi veritabanınıza sql yönetim paneli gibi bir araçla bağlanıp sorgu olarak çalıştırarak da elle oluşturabiliyorsunuz.
bendeki framework versiyonu v4.0.30319 olduğundan klasör ismi de v4.0.30319 idi.
Kaynak: http://weblogs.asp.net/lhunt/archive/2005/09/26/425966.aspx
Kaynak: http://forums.asp.net/t/946833.aspx (bunun sayesinde veritabanı ismi ASPNETDB.MDF değil de kendi verdiğimiz isimse ne yapacağız problemini çözdüm.)
Kaynak: http://rbgupta.blogspot.com/2007/03/aspnetregsql-with-sqlexpress-database.html
http://weblogs.asp.net/lhunt/archive/2005/09/26/425966.aspx
http://forums.asp.net/p/1401034/3031347.aspx
http://www.csharp-station.com/Articles/AspDotNetSecurity.aspx
http://scottonwriting.net/sowblog/archive/2006/03/27/163157.aspx



Bilişim Haberleri
Windows Live Hotmail Türkiye Kullanım Sayıları
Internete her gün 32 milyon vatandaşımız erişiyormuş ve de 20 milyon kişi hem Hotmail mail hesabı hem de MSN instant messaging kullanıyormuş.
turkerHR Yayınlandı!
Kodları tamamen bana ait olan turkerHR yazılımımı hemen indirip kurup kullanabilirsiniz. Kaynak kodları herkese açık, şimdilik biraz kötü görünebilir, iyileştireceğim.
Joomla 1.6.1 Güvenlik Sürümü Yayınlandı
Joomla 1.6 kullananların 1.6.1 sürümüne güncelleme yapmaları gerekiyor güvenlik gereği.
PayPal ile Türk Lirası Kullanabiliriz
PayPal’ın ne zaman Türk Lirası ödemelerini kabul edeceğini merak ediyorsanız, artık ediyor.
Dış Linkler

