Aracılığıyla paylaş


Visual Studio veya Visual Web Developer kullanarak SQL Server Compact ile ASP.NET Web Uygulaması Dağıtma: SQL Server Geçiş - 10/12

tarafından Tom Dykstra

Başlangıç Projelerini İndir

Bu öğretici serisi, Visual Studio 2012 RC veya Web için Visual Studio Express 2012 RC kullanarak SQL Server Compact veritabanı içeren bir ASP.NET web uygulaması projesi dağıtmayı (yayımlamayı) gösterir. Web Yayımlama Güncelleştirmesi'ni yüklerseniz Visual Studio 2010'u da kullanabilirsiniz. Seriye giriş için serideki ilk öğreticiye bakın.

Visual Studio 2012'nin RC sürümünden sonra sunulan dağıtım özelliklerini gösteren, SQL Server Compact dışındaki SQL Server sürümleri dağıtmayı ve Azure App Service Web Apps'a dağıtmayı gösteren bir öğretici için bkz. Visual Studio kullanarak Web Dağıtımı'nı ASP.NET.

Genel Bakış

Bu öğreticide, SQL Server Compact'den SQL Server'a nasıl geçiş yapılacağınız gösterilmektedir. Bunu yapmak isteme nedenlerinden biri, saklı yordamlar, tetikleyiciler, görünümler veya çoğaltma gibi SQL Server Compact desteklemediği SQL Server özelliklerden yararlanmaktır. SQL Server Compact ile SQL Server arasındaki farklar hakkında daha fazla bilgi için SQL Server Compact dağıtma öğreticisine bakın.

Geliştirme için tam SQL Server karşı SQL Server Express

SQL Server yükseltmeye karar verdikten sonra geliştirme ve test ortamlarınızda SQL Server veya SQL Server Express kullanmak isteyebilirsiniz. Araç desteği ve veritabanı altyapısı özelliklerindeki farklılıklara ek olarak, SQL Server Compact ve diğer SQL Server sürümleri arasında sağlayıcı uygulamalarında farklılıklar vardır. Bu farklılıklar aynı kodun farklı sonuçlar oluşturmasına neden olabilir. Bu nedenle, geliştirme veritabanınız olarak SQL Server Compact tutmaya karar verirseniz, üretime yapılan her dağıtımdan önce sitenizi SQL Server veya bir test ortamında SQL Server Express kapsamlı bir şekilde test etmelisiniz.

SQL Server Compact aksine, SQL Server Express temelde aynı veritabanı altyapısıdır ve tam SQL Server aynı .NET sağlayıcısını kullanır. SQL Server Express ile test ederken, SQL Server ile elde ettiğiniz sonuçların aynısını elde ettiğinizden emin olabilirsiniz. Aynı veritabanı araçlarının çoğunu SQL Server ile kullanabileceğiniz SQL Server Express kullanabilirsiniz (SQL Server Profiler önemli bir özel durum) ve saklı yordamlar, görünümler, tetikleyiciler ve çoğaltma gibi diğer SQL Server özelliklerini destekler. (Ancak genellikle bir üretim web sitesinde tam SQL Server kullanmanız gerekir. SQL Server Express paylaşılan bir barındırma ortamında çalıştırılabilir, ancak bunun için tasarlanmamıştır ve birçok barındırma sağlayıcısı bunu desteklemez.)

Visual Studio 2012 kullanıyorsanız geliştirme ortamınız için SQL Server Express LocalDB'yi seçersiniz çünkü Visual Studio'da varsayılan olarak bu yüklüdür. Ancak, LocalDB IIS'de çalışmaz, bu nedenle test ortamınız için SQL Server veya SQL Server Express kullanmanız gerekir.

Veritabanlarını Birleştirme ve Ayrı Tutma

Contoso Üniversitesi uygulamasının iki SQL Server Compact veritabanı vardır: üyelik veritabanı (aspnet.sdf) ve uygulama veritabanı (School.sdf). Geçiş yaptığınızda, bu veritabanlarını iki ayrı veritabanına veya tek bir veritabanına geçirebilirsiniz. Uygulama veritabanınızla üyelik veritabanınız arasında veritabanı birleşimlerini kolaylaştırmak için bunları birleştirmek isteyebilirsiniz. Barındırma planınız bunları birleştirmek için bir neden de sağlayabilir. Örneğin, barındırma sağlayıcısı birden çok veritabanı için daha fazla ücret alabilir veya birden fazla veritabanına bile izin vermeyebilir. Bu öğretici için kullanılan Cytanium Lite barındırma hesabı, tek bir SQL Server veritabanına izin verir.

Bu öğreticide iki veritabanınızı şu şekilde geçireceksiniz:

  • Geliştirme ortamındaki iki LocalDB veritabanına geçiş yapın.
  • Test ortamındaki iki SQL Server Express veritabanına geçiş yapın.
  • Üretim ortamında birleştirilmiş bir tam SQL Server veritabanına geçiş yapın.

Anımsatıcı: Öğreticide ilerlerken bir hata iletisi alırsanız veya bir şey çalışmıyorsa sorun giderme sayfasını kontrol edin.

SQL Server Express yükleme

SQL Server Express, Visual Studio 2010 ile varsayılan olarak otomatik olarak yüklenir, ancak varsayılan olarak Visual Studio 2012 ile yüklenmez. SQL Server 2012 Express'i yüklemek için aşağıdaki bağlantıya tıklayın

ENU/x64/SQLEXPR_x64_ENU.exe veya ENU/x86/SQLEXPR_x86_ENU.exeöğesini seçin ve yükleme sihirbazında varsayılan ayarları kabul edin. Yükleme seçenekleri hakkında daha fazla bilgi için bkz. Yükleme Sihirbazı'ndan (Kurulum) SQL Server 2012'yi yükleme.

Test Ortamı için SQL Server Express Veritabanları Oluşturma

Sonraki adım, ASP.NET üyeliğini ve Okul veritabanlarını oluşturmaktır.

Görünümmenüsünden Sunucu Gezgini'ni (Visual Web Geliştiricisi'nde Veritabanı Gezgini) seçin ve ardından Veri Connections'ne sağ tıklayıp Yeni SQL Server Veritabanı Oluştur'u seçin.

Selecting_Create_New_SQL_Server_Database

Yeni SQL Server Veritabanı Oluştur iletişim kutusunda, Sunucu adı kutusuna ".\SQLExpress" yazın ve Yeni veritabanı adı kutusuna "aspnet-Test" yazın ve tamam'a tıklayın.

Create_New_SQL_Server_Database_aspnet

"School-Test" adlı yeni bir SQL Server Express School veritabanı oluşturmak için aynı yordamı izleyin.

(Daha sonra geliştirme ortamı için her veritabanının ek bir örneğini oluşturacağınız ve iki veritabanı kümesini ayırt edebilmeniz gerektiği için bu veritabanı adlarına "Test" ekleyeceksiniz.)

Sunucu Gezgini artık iki yeni veritabanını gösterir.

New_databases_in_Server_Explorer

Yeni Veritabanları için Verme Betiği Oluşturma

Uygulama geliştirme bilgisayarınızda IIS'de çalıştığında, uygulama varsayılan uygulama havuzunun kimlik bilgilerini kullanarak veritabanına erişir. Ancak, varsayılan olarak uygulama havuzu kimliğinin veritabanlarını açma izni yoktur. Bu nedenle bu izni vermek için bir betik çalıştırmanız gerekir. Bu bölümde daha sonra çalıştıracağınız betiği oluşturarak uygulamanın IIS'de çalıştırıldığında veritabanlarını açadığından emin olacaksınız.

Çözümün Üretim Ortamına Dağıtma öğreticisinde oluşturduğunuz SolutionFiles klasöründe Grant.sql adlı yeni bir SQL dosyası oluşturun. Aşağıdaki SQL komutlarını dosyaya kopyalayın ve dosyayı kaydedip kapatın:

IF NOT EXISTS (SELECT name FROM sys.server_principals WHERE name = 'IIS APPPOOL\DefaultAppPool')
BEGIN
    CREATE LOGIN [IIS APPPOOL\DefaultAppPool] 
      FROM WINDOWS WITH DEFAULT_DATABASE=[master], 
      DEFAULT_LANGUAGE=[us_english]
END
GO
CREATE USER [ContosoUniversityUser] 
  FOR LOGIN [IIS APPPOOL\DefaultAppPool]
GO
EXEC sp_addrolemember 'db_owner', 'ContosoUniversityUser'
GO

Not

Bu betik, SQL Server 2008 ile ve bu öğreticide belirtildiği gibi Windows 7'deki IIS ayarlarıyla çalışacak şekilde tasarlanmıştır. SQL Server veya Windows'un farklı bir sürümünü kullanıyorsanız veya bilgisayarınızda IIS'yi farklı bir şekilde ayarladıysanız, bu betikte değişiklik yapılması gerekebilir. SQL Server betikleri hakkında daha fazla bilgi için bkz. Çevrimiçi Kitaplar SQL Server.

Not

Güvenlik Notu Bu betik, kullanıcıya çalışma zamanında veritabanına erişen kullanıcıya db_owner izinler verir. Bu, üretim ortamında sahip olduğunuz izindir. Bazı senaryolarda, yalnızca dağıtım için tam veritabanı şeması güncelleştirme izinlerine sahip bir kullanıcı belirtmek ve çalışma zamanı için yalnızca veri okuma ve yazma izinlerine sahip farklı bir kullanıcı belirtmek isteyebilirsiniz. Daha fazla bilgi için bkz. Test Ortamı Olarak IIS'ye Dağıtma bölümünde Code First Migrations için Otomatik Web.config Değişikliklerini Gözden Geçirme.

Test Ortamı için Veritabanı Dağıtımını Yapılandırma

Ardından, Visual Studio'yu her veritabanı için aşağıdaki görevleri gerçekleştirecek şekilde yapılandıracaksınız:

  • Hedef veritabanında kaynak veritabanının yapısını (tablolar, sütunlar, kısıtlamalar vb.) oluşturan bir SQL betiği oluşturun.
  • Kaynak veritabanının verilerini hedef veritabanındaki tablolara ekleyen bir SQL betiği oluşturun.
  • Oluşturulan betikleri ve oluşturduğunuz Grant betiğini hedef veritabanında çalıştırın.

Proje Özellikleri penceresini açın ve SQL'i Paketle/Yayımla sekmesini seçin.

Yapılandırma açılan listesinde Etkin (Yayın) veya Yayın'ın seçili olduğundan emin olun.

Bu Sayfayı Etkinleştir'e tıklayın.

Package_Publish_SQL_tab_Enable_This_page

Sql'i Paketle/Yayımla sekmesi normalde eski bir dağıtım yöntemi belirttiğinden devre dışı bırakılır. Çoğu senaryoda, Web'i Yayımla sihirbazında veritabanı dağıtımını yapılandırmanız gerekir. SQL Server Compact'den SQL Server veya SQL Server Express geçiş, bu yöntemin iyi bir seçim olduğu özel bir durumdur.

Web.config'dan içeri aktar'a tıklayın.

Selecting_Import_from_Web.config

Visual Studio ,Web.config dosyasında bağlantı dizelerini arar, üyelik veritabanı için bir tane bulur ve Okul veritabanı için bir satır bulur ve Veritabanı Girdileri tablosundaki her bağlantı dizesi karşılık gelen bir satır ekler. Bulduğu bağlantı dizeleri mevcut SQL Server Compact veritabanları içindir ve sonraki adımınız bu veritabanlarının nasıl ve nereye dağıtılacağını yapılandırmak olacaktır.

Veritabanı girdileri tablosunun altındaki Veritabanı Girişi Ayrıntıları bölümüne veritabanı dağıtım ayarlarını girersiniz. Aşağıdaki çizimde gösterildiği gibi , Veritabanı Girişi Ayrıntıları bölümünde gösterilen ayarlar , Veritabanı Girdileri tablosundaki hangi satırın seçili olduğuna ilişkindir.

Database_Entry_Details_section_of_Package_Publish_SQL_tab

Üyelik Veritabanı için Dağıtım Ayarlarını Yapılandırma

Üyelik veritabanına uygulanan ayarları yapılandırmak için Veritabanı Girdileri tablosunda DefaultConnection-Deployment satırını seçin.

Hedef veritabanı için bağlantı dizesi alanına, yeni SQL Server Express üyelik veritabanına işaret eden bir bağlantı dizesi girin. Sunucu Gezgini'nden ihtiyacınız olan bağlantı dizesi alabilirsiniz. Sunucu Gezgini'ndeVeri Connections'ni genişletin ve aspnetTest veritabanını seçin, ardından Özelliklerpenceresinden Bağlantı Dizesi değerini kopyalayın.

aspnet_connection_string_in_Server_Explorer

Aynı bağlantı dizesi burada yeniden oluşturulur:

Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False

Bu bağlantı dizesi kopyalayıp SQL'i Paketle/Yayımlasekmesindeki hedef veritabanı için Bağlantı dizesine yapıştırın.

Mevcut veritabanından verileri ve/veya şemayı çek'in seçili olduğundan emin olun. Sql betiklerinin otomatik olarak oluşturulmasına ve hedef veritabanında çalıştırılmasına neden olan budur.

Kaynak veritabanı değerinin Bağlantı dizesiWeb.config dosyasından ayıklanır ve geliştirme SQL Server Compact veritabanına işaret edilir. Bu, hedef veritabanında daha sonra çalıştırılacak betikleri oluşturmak için kullanılacak kaynak veritabanıdır. Veritabanının üretim sürümünü dağıtmak istediğinizden, "aspnet-Dev.sdf" öğesini "aspnet-Prod.sdf" olarak değiştirin.

Verilerinizi (kullanıcı hesapları ve rolleri) ve veritabanı yapısını kopyalamak istediğinizden, Veritabanı betik oluşturma seçenekleriniYalnızca Şema ve veri olarak değiştirin.

Dağıtımı daha önce oluşturduğunuz verme betiklerini çalıştıracak şekilde yapılandırmak için bunları Veritabanı Betikleri bölümüne eklemeniz gerekir. Betik Ekle'ye tıklayın ve SQL Betikleri Ekle iletişim kutusunda, verme betiğini depoladığınız klasöre gidin (bu, çözüm dosyanızı içeren klasördür). Grant.sql adlı dosyayı seçin ve Aç'a tıklayın.

Select_File_dialog_box_grant_script

Veritabanı Girdileri'ndekiDefaultConnection-Deployment satırının ayarları artık aşağıdaki çizime benzer:

Database_Entry_Details_for_DefaultConnection_Test

Okul Veritabanı için Dağıtım Ayarlarını Yapılandırma

Ardından, School veritabanının dağıtım ayarlarını yapılandırmak için Veritabanı Girdileri tablosunda SchoolContext-Deployment satırını seçin.

Yeni SQL Server Express veritabanının bağlantı dizesi almak için daha önce kullandığınız yöntemi kullanabilirsiniz. Bu bağlantı dizesi Sql'i Paketle/Yayımla sekmesinde hedef veritabanı için Bağlantı dizesine kopyalayın.

Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False

Mevcut veritabanından veri ve/veya şema çekme seçeneğinin belirlendiğinden emin olun.

Kaynak veritabanı değerinin Bağlantı dizesiWeb.config dosyasından ayıklanır ve geliştirme SQL Server Compact veritabanına işaret edilir. Veritabanının üretim sürümünü dağıtmak için "School-Dev.sdf" öğesini "School-Prod.sdf" olarak değiştirin. (App_Data klasöründe school-prod.sdf dosyası oluşturmadığınız için bu dosyayı test ortamından ContosoUniversity proje klasöründeki App_Data klasörüne daha sonra kopyalayacaksınız.)

Veritabanı betik oluşturma seçenekleriniŞema ve veri olarak değiştirin.

Ayrıca bu veritabanı için uygulama havuzu kimliğine okuma ve yazma izni vermek için betiği çalıştırmak istiyorsunuz, bu nedenle üyelik veritabanı için yaptığınız gibi Grant.sql betik dosyasını ekleyin.

İşiniz bittiğinde, Veritabanı GirdilerindekiSchoolContext-Deployment satırının ayarları aşağıdaki çizime benzer:

Database_Entry_Details_for_SchoolContext_Test

Değişiklikleri SQL'i Paketle/Yayımla sekmesine kaydedin.

c:\inetpub\wwwroot\ContosoUniversity\App_Data klasöründeki School-Prod.sdf dosyasını ContosoUniversity projesindeki App_Data klasörüne kopyalayın.

Verme Betiği için İşlem Yapılan Modu Belirtme

Dağıtım işlemi, veritabanı şemasını ve verilerini dağıtan betikler oluşturur. Varsayılan olarak, bu betikler bir işlemde çalıştırılır. Ancak, özel betikler (verme betikleri gibi) varsayılan olarak bir işlemde çalışmaz. Dağıtım işlemi işlem modlarını bir araya getirirse, betikler dağıtım sırasında çalıştırıldığında zaman aşımı hatası alabilirsiniz. Bu bölümde, özel betikleri bir işlemde çalışacak şekilde yapılandırmak için proje dosyasını düzenlersiniz.

Çözüm Gezgini'daContosoUniversity projesine sağ tıklayın ve Projeyi Kaldır'ı seçin.

Unload_Project_in_Solution_Explorer

Ardından projeye yeniden sağ tıklayın ve ContosoUniversity.csproj dosyasını düzenle'yi seçin.

Edit_Project_in_Solution_Explorer

Visual Studio düzenleyicisi, proje dosyasının XML içeriğini gösterir. Birkaç PropertyGroup öğe olduğuna dikkat edin. (Görüntüde, öğelerin içeriği PropertyGroup atlanmıştır.)

Proje dosyası düzenleyicisi penceresi

Özniteliği olmayan Condition ilki, derleme yapılandırmasından bağımsız olarak uygulanan ayarlar içindir. Bir PropertyGroup öğe yalnızca Hata ayıklama derleme yapılandırmasına (özniteliğine Condition dikkat edin), biri yalnızca Yayın derleme yapılandırmasına ve biri de yalnızca Test derleme yapılandırmasına uygulanır. PropertyGroup Yayın derleme yapılandırması öğesinin içinde, Sql'i Paketle/Yayımla sekmesinde girdiğiniz ayarları içeren bir PublishDatabaseSettings öğe görürsünüz. Belirttiğiniz verme betiklerinin her birine karşılık gelen bir Object öğe vardır (iki "Grant.sql" örneğine dikkat edin). Varsayılan olarak, Transacted her verme betiğinin öğesinin Source özniteliği şeklindedir False.

Transacted_false

öğesinin özniteliğinin TransactedSource değerini olarak Truedeğiştirin.

Transacted_true

Proje dosyasını kaydedip kapatın, ardından Çözüm Gezgini'da projeye sağ tıklayın ve Projeyi Yeniden Yükle'yi seçin.

Reload_project

Bağlantı Dizeleri için Web.Config Dönüşümlerini Ayarlama

Sql'i Paketle/Yayımla sekmesine girdiğiniz yeni SQL Express veritabanlarının bağlantı dizeleri, Web Dağıtımı tarafından yalnızca dağıtım sırasında hedef veritabanını güncelleştirmek için kullanılır. DağıtılanWeb.configdosyasındaki bağlantı dizelerinin yeni SQL Server Express veritabanlarına işaret edebilmesi için Web.config dönüştürmeleri ayarlamanız gerekir. ( SQL'i Paketle/Yayımla sekmesini kullandığınızda, yayımlama profilinde bağlantı dizelerini yapılandıramazsınız.)

Web.Test.config açın ve öğesini aşağıdaki örnekteki connectionStrings öğesiyle değiştirinconnectionStrings. (Bağlam sağlamak için burada gösterilen çevresindeki kodu değil yalnızca connectionStrings öğesini kopyaladığınızdan emin olun.)

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="SchoolContext" 
         connectionString="Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
  <!-- appSettings element, comments, and system.web element -->
</configuration>

Bu kod, dağıtılan Web.config dosyasında her add öğenin ve providerName özniteliklerinin değiştirilmesine neden olurconnectionString. Bu bağlantı dizeleri , SQL'i Paketle/Yayımla sekmesine girdiğiniz dizelerle aynı değildir. Entity Framework ve Evrensel Sağlayıcılar için gerekli olduğundan bunlara "MultipleActiveResultSets=True" ayarı eklendi.

SQL Server Compact yükleme

SqlServerCompact NuGet paketi, Contoso Üniversitesi uygulaması için SQL Server Compact veritabanı altyapısı derlemelerini sağlar. Ancak artık uygulama değil, SQL Server veritabanlarında çalıştırılacak betikler oluşturmak için SQL Server Compact veritabanlarını okuyabilen Web Dağıtımı olmalıdır. Web Dağıtımı'nın SQL Server Compact veritabanlarını okumasını sağlamak için aşağıdaki bağlantıyı kullanarak geliştirme bilgisayarına SQL Server Compact yükleyin: Microsoft SQL Server Compact 4.0 SP1.

Test Ortamına Dağıtma

Test ortamında yayımlamak için, yayımlama profili veritabanı ayarları yerine veritabanı yayımlama için Paketle/Yayımla SQL sekmesini kullanacak şekilde yapılandırılmış bir yayımlama profili oluşturmanız gerekir.

İlk olarak mevcut Test profilini silin.

Çözüm Gezgini'da ContosoUniversity projesine sağ tıklayın ve Yayımla'ya tıklayın.

Profil sekmesini seçin.

Profilleri Yönet'e tıklayın.

Test'i seçin, Kaldır'a tıklayın ve ardından Kapat'a tıklayın.

Bu değişikliği kaydetmek için Web Yayımla sihirbazını kapatın.

Ardından yeni bir Test profili oluşturun ve projeyi yayımlamak için bu profili kullanın.

Çözüm Gezgini'da ContosoUniversity projesine sağ tıklayın ve Yayımla'ya tıklayın.

Profil sekmesini seçin.

Açılan listeden Yeni...> öğesini seçin< ve profil adı olarak "Test" yazın.

Hizmet URL'si kutusuna localhost yazın.

Site/uygulama kutusuna Varsayılan Web Sitesi/ContosoUniversity girin.

Hedef URL kutusuna yazınhttp://localhost/ContosoUniversity/.

İleri’ye tıklayın.

Ayarlar sekmesi, SQL'i Paketle/Yayımla sekmesinin yapılandırıldığı konusunda sizi uyarır ve yeni veritabanı yayımlama geliştirmelerini etkinleştir'e tıklayarak bunları geçersiz kılma fırsatı verir. Bu dağıtım için SQL'i Paketle/Yayımla sekme ayarlarını geçersiz kılmak istemezsiniz, bu nedenle İleri'ye tıklamanız yeter.

Publish_Web_wizard_Settings_tab_Migrate

Önizleme sekmesindeki bir ileti yayımlamak için veritabanı seçilmediğini belirtir, ancak bu yalnızca yayımlama profilinde veritabanı yayımlamanın yapılandırılmadığı anlamına gelir.

Yayımla’ya tıklayın.

Publish_Web_wizard_Preview_tab_Migrate

Visual Studio uygulamayı dağıtır ve tarayıcıyı test ortamında sitenin giriş sayfasına açar. Daha önce gördüğünüz verilerin aynısını görüntülediğini görmek için Eğitmenler sayfasını çalıştırın. Öğrenci Ekle sayfasını çalıştırın, yeni bir öğrenci ekleyin ve ardından Öğrenciler sayfasında yeni öğrenciyi görüntüleyin. Bu, veritabanını güncelleştirebileceğinizi doğrular. Üyelik veritabanının dağıtıldığını ve bu veritabanına erişiminiz olduğunu doğrulamak için Kredileri Güncelleştir sayfasını (oturum açmanız gerekir) seçin.

Üretim Ortamı için SQL Server Veritabanı Oluşturma

Artık test ortamına dağıttığınız için üretime dağıtımı ayarlamaya hazırsınız. Dağıtım için bir veritabanı oluşturarak test ortamında yaptığınız gibi başlarsınız. Genel Bakış'tan hatırlayacağınız gibi, Cytanium Lite barındırma planı yalnızca tek bir SQL Server veritabanına izin verir, bu nedenle iki değil yalnızca bir veritabanı ayarlarsınız. Üyelik ve School SQL Server Compact veritabanlarındaki tüm tablolar ve veriler üretimdeki tek bir SQL Server veritabanına dağıtılır.

konumundaki http://panel.cytanium.comCytanium kontrol paneline gidin. Fareyi Veritabanları'nın üzerinde tutun ve SQL Server 2008'e tıklayın.

Selecting_Databases_in_Control_Panel

SQL Server 2008 sayfasında Veritabanı Oluştur'a tıklayın.

Selecting_Create_Database

Veritabanını "School" olarak adlandırın ve Kaydet'e tıklayın. (Sayfa otomatik olarak "contosou" ön ekini ekler, dolayısıyla geçerli ad "contosouSchool" olur.)

Naming_the_database

Aynı sayfada Kullanıcı Oluştur'a tıklayın. Cytanium'un sunucularında tümleşik Windows güvenliği kullanmak ve uygulama havuzu kimliğinin veritabanınızı açmasına izin vermek yerine, veritabanınızı açma yetkisine sahip bir kullanıcı oluşturacaksınız. Kullanıcının kimlik bilgilerini üretim Web.config dosyasındaki bağlantı dizelerine ekleyeceksiniz. Bu adımda bu kimlik bilgilerini oluşturursunuz.

Creating_a_database_user

SQL Kullanıcı Özellikleri sayfasında gerekli alanları doldurun:

  • Ad olarak "ContosoUniversityUser" yazın.
  • Parola girin.
  • Varsayılan veritabanı olarak contosouSchool öğesini seçin.
  • contosouSchool onay kutusunu seçin.

SQL_User_Properties_page

Üretim Ortamı için Veritabanı Dağıtımını Yapılandırma

Artık daha önce test ortamında yaptığınız gibi SQL'i Paketle/Yayımla sekmesinde veritabanı dağıtım ayarlarını yapmaya hazırsınız.

Proje Özellikleri penceresini açın, SQL'i Paketle/Yayımla sekmesini seçin ve Yapılandırma açılan listesinde Etkin (Yayın) veya Yayın'ın seçili olduğundan emin olun.

Her veritabanı için dağıtım ayarlarını yapılandırırken, üretim ve test ortamları için yaptıklarınız arasındaki temel fark, bağlantı dizelerini yapılandırma yönteminizdedir. Test ortamı için farklı hedef veritabanı bağlantı dizeleri girdiniz, ancak üretim ortamı için hedef bağlantı dizesi her iki veritabanı için de aynı olacaktır. Bunun nedeni, her iki veritabanını da üretimdeki bir veritabanına dağıtmanızdır.

Üyelik Veritabanı için Dağıtım Ayarlarını Yapılandırma

Üyelik veritabanına uygulanan ayarları yapılandırmak için Veritabanı Girdileri tablosunda DefaultConnection-Deployment satırını seçin.

Hedef veritabanı için bağlantı dizesi alanına, yeni oluşturduğunuz üretim SQL Server veritabanına işaret eden bir bağlantı dizesi girin. hoş geldiniz e-postanızdan bağlantı dizesi alabilirsiniz. E-postanın ilgili bölümü aşağıdaki örnek bağlantı dizesi içerir:

Data Source=vserver01.cytanium.com;Initial Catalog={myDataBase};User Id={myUsername};Password={myPassword};

Üç değişkeni değiştirdikten sonra, ihtiyacınız olan bağlantı dizesi şu örneğe benzer:

Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;

Bu bağlantı dizesi kopyalayıp SQL'i Paketle/Yayımla sekmesinde hedef veritabanı için Bağlantı dizesine yapıştırın.

Mevcut veritabanından veri ve/veya şema çekme seçeneğinin seçili olduğundan ve Veritabanı betik oluşturma seçeneklerinin hala Şema ve Veri olduğundan emin olun.

Veritabanı Betikleri kutusunda, Grant.sql betiğinin yanındaki onay kutusunu temizleyin.

Disable_Grant_script

Okul Veritabanı için Dağıtım Ayarlarını Yapılandırma

Ardından, School veritabanı ayarlarını yapılandırmak için Veritabanı Girdileri tablosunda SchoolContext-Deployment satırını seçin.

Üyelik veritabanı için bu alana kopyaladığınız hedef veritabanı için bağlantı dizesine aynı bağlantı dizesi kopyalayın.

Mevcut veritabanından veri ve/veya şema çekme seçeneğinin seçili olduğundan ve Veritabanı betik oluşturma seçeneklerinin hala Şema ve Veri olduğundan emin olun.

Veritabanı Betikleri kutusunda, Grant.sql betiğinin yanındaki onay kutusunu temizleyin.

Değişiklikleri SQL'i Paketle/Yayımla sekmesine kaydedin.

Üretim Veritabanlarına Bağlantı Dizeleri için Web.Config Dönüşümleri Ayarlama

Ardından, dağıtılanWeb.config dosyasındaki bağlantı dizelerinin yeni üretim veritabanına işaret edebilmesi için Web.config dönüştürmeleri ayarlayacaksınız. Web Dağıtımı'nın kullanması için SQL'i Paketle/Yayımla sekmesine girdiğiniz bağlantı dizesi, seçeneğin eklenmesi MultipleResultSets dışında uygulamanın kullanması gerekenle aynıdır.

Web.Production.config açın ve öğesini aşağıdaki örneğe benzer bir connectionStrings öğeyle değiştirinconnectionStrings. (Bağlamı connectionStrings göstermek için sağlanan çevresindeki etiketleri değil yalnızca öğesini kopyalayın.)

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="SchoolContext" 
         connectionString="Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
  <!-- appSettings element, comments, and system.web element -->
</configuration>

Bazen Web.config dosyasındaki bağlantı dizelerini her zaman şifrelemenizi söyleyen öneriler görürsünüz. Bu, kendi şirketinizin ağındaki sunuculara dağıtıyorsanız uygun olabilir. Ancak paylaşılan bir barındırma ortamına dağıtım yaparken, barındırma sağlayıcısının güvenlik uygulamalarına güvenirsiniz ve bağlantı dizelerini şifrelemek gerekli veya pratik değildir.

Üretim Ortamına Dağıtma

Artık üretim ortamına dağıtmaya hazırsınız. Web Dağıtımı, projenizin App_Data klasöründeki SQL Server Compact veritabanlarını okur ve üretim SQL Server veritabanında tüm tablolarını ve verilerini yeniden oluşturur. Paketle/Yayımla Web sekmesi ayarlarını kullanarak yayımlamak için üretim için yeni bir yayımlama profili oluşturmanız gerekir.

İlk olarak, daha önce Test profilinde yaptığınız gibi mevcut Üretim profilini silin.

Çözüm Gezgini'da ContosoUniversity projesine sağ tıklayın ve Yayımla'ya tıklayın.

Profil sekmesini seçin.

Profilleri Yönet'e tıklayın.

Üretim'i seçin, Kaldır'a ve ardından Kapat'a tıklayın.

Bu değişikliği kaydetmek için Web Yayımla sihirbazını kapatın.

Ardından yeni bir Üretim profili oluşturun ve projeyi yayımlamak için bu profili kullanın.

Çözüm Gezgini'da ContosoUniversity projesine sağ tıklayın ve Yayımla'ya tıklayın.

Profil sekmesini seçin.

İçeri Aktar'a tıklayın ve daha önce indirdiğiniz .publishsettings dosyasını seçin.

Bağlantı sekmesinde, Hedef URL'sini doğru geçici URL olarak değiştirin; bu örnekte .http://contosouniversity.com.vserver01.cytanium.com

Profili Üretim olarak yeniden adlandırın. ( Profil sekmesini seçin ve bunu yapmak için Profilleri Yönet'e tıklayın).

Değişikliklerinizi kaydetmek için Web'i Yayımla sihirbazını kapatın.

Veritabanının üretim ortamında güncelleştirildiği gerçek bir uygulamada, yayımlamadan önce iki ek adım daha uygulamanız gerekir:

  1. Üretim Ortamına Dağıtma öğreticisinde gösterildiği gibi app_offline.htmyükleyin.
  2. Üretim sitesinden aspnet-Prod.sdf ve School-Prod.sdf dosyalarını ContosoUniversity projesinin App_Data klasörüne kopyalamak için Cytanium denetim masasının Dosya Yöneticisi özelliğini kullanın. Bu, yeni SQL Server veritabanına dağıttığınız verilerin üretim web siteniz tarafından yapılan en son güncelleştirmeleri içermesini sağlar.

Web Tek Tıkla Yayımla araç çubuğunda Üretim profilinin seçili olduğundan emin olun ve yayımla'ya tıklayın.

Yayımlamadan önce app_offline.htm yüklediyseniz, app_offline silmek için Cytanium denetim masasındaki Dosya Yöneticisi yardımcı programını kullanmanız gerekir .htm dosyasını seçin. . sdf dosyalarını aynı anda App_Data klasöründen de silebilirsiniz.

Artık bir tarayıcı açıp genel sitenizin URL'sine giderek uygulamayı test ortamına dağıttığınız gibi test edebilirsiniz.

Geliştirmede SQL Server Express LocalDB'ye geçme

Genel Bakış bölümünde açıklandığı gibi, genellikle test ve üretimde kullandığınız veritabanı altyapısını geliştirme aşamasında kullanmak en iyisidir. (Geliştirme aşamasında SQL Server Express kullanmanın avantajının, veritabanının geliştirme, test ve üretim ortamlarınızda aynı şekilde çalışması olduğunu unutmayın.) Bu bölümde, uygulamayı Visual Studio'dan çalıştırdığınızda ContosoUniversity projesini SQL Server Express LocalDB kullanacak şekilde ayarlayacaksınız.

Bu geçişi gerçekleştirmenin en basit yolu Code First ve üyelik sisteminin sizin için her iki yeni geliştirme veritabanını da oluşturmasına izin vermektir. Geçiş için bu yöntemin kullanılması üç adım gerektirir:

  1. Yeni SQL Express LocalDB veritabanlarını belirtmek için bağlantı dizelerini değiştirin.
  2. Yönetici kullanıcı oluşturmak için Web Sitesi Yönetim Aracı'nı çalıştırın. Bu, üyelik veritabanını oluşturur.
  3. Uygulama veritabanını oluşturmak ve görmek için Code First Migrations update-database komutunu kullanın.

Web.config dosyasında bağlantı dizelerini güncelleştirme

Web.config dosyasını açın ve öğesini aşağıdaki kodla değiştirinconnectionStrings:

<connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-Dev.mdf;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
  <add name="SchoolContext" connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\School-Dev.mdf;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

Üyelik Veritabanını Oluşturma

Çözüm Gezgini'da ContosoUniversity projesini seçin ve ardından Proje menüsünde ASP.NET Yapılandırması'na tıklayın.

Güvenlik sekmesini seçin.

Rol Oluştur veya Yönet'e tıklayın ve ardından bir Yönetici rolü oluşturun.

Güvenlik sekmesine dönün.

Kullanıcı oluştur'a tıklayın ve yönetici onay kutusunu seçin ve admin adlı bir kullanıcı oluşturun.

Web Sitesi Yönetim Aracı'nı kapatın.

Okul Veritabanını Oluşturma

Paket Yöneticisi Konsolu penceresini açın.

Varsayılan proje açılan listesinde ContosoUniversity.DAL projesini seçin.

Aşağıdaki komutu girin:

update-database

Code First Migrations veritabanını oluşturan İlk geçişi uygular ve ardından AddBirthDate geçişini uygular, ardından Seed yöntemini çalıştırır.

Control-F5 tuşlarına basarak siteyi çalıştırın. Test ve üretim ortamlarında yaptığınız gibi , Öğrenci Ekle sayfasını çalıştırın, yeni bir öğrenci ekleyin ve ardından öğrenciler sayfasında yeni öğrenciyi görüntüleyin. Bu, School veritabanının oluşturulduğunu ve başlatıldığını ve buna okuma ve yazma erişiminiz olduğunu doğrular.

Üyelik veritabanının dağıtıldığını ve bu veritabanına erişiminiz olduğunu doğrulamak için Kredileri Güncelleştir sayfasını seçin ve oturum açın. Kullanıcı hesaplarınızı geçirmediyseniz, bir yönetici hesabı oluşturun ve ardından Kredileri Güncelleştir sayfasını seçerek çalıştığını doğrulayın.

SQL Server Compact Dosyalarını Temizleme

Artık SQL Server Compact desteklemek için dahil edilen dosyalara ve NuGet paketlerine ihtiyacınız yoktur. İsterseniz (bu adım gerekli değildir), gereksiz dosyaları ve başvuruları temizleyebilirsiniz.

Çözüm Gezgini'da App_Data klasöründen.sdf dosyalarını ve bölme klasöründen amd64 ve x86 klasörlerini silin.

Çözüm Gezgini'da çözüme (projelerden birine değil) sağ tıklayın ve ardından Çözüm için NuGet Paketlerini Yönet'e tıklayın.

NuGet Paketlerini Yönet iletişim kutusunun sol bölmesinde Yüklü paketler'i seçin.

EntityFramework.SqlServerCompact paketini seçin ve Yönet'e tıklayın.

Projeleri Seç iletişim kutusunda her iki proje de seçilidir. Paketi her iki projede de kaldırmak için her iki onay kutusunu da temizleyin ve tamam'a tıklayın.

Bağımlı paketleri de kaldırmak isteyip istemediğinizi soran iletişim kutusunda Hayır'a tıklayın. Bunlardan biri, tutmanız gereken Entity Framework paketidir.

SqlServerCompact paketini kaldırmak için aynı yordamı izleyin. ( EntityFramework.SqlServerCompact paketi SqlServerCompact paketine bağlı olduğundan paketler bu sırada kaldırılmalıdır.)

Artık başarıyla SQL Server Express ve tam SQL Server geçtiniz. Sonraki öğreticide başka bir veritabanı değişikliği yapacak ve test ve üretim veritabanlarınız SQL Server Express ve tam SQL Server kullandığında veritabanı değişikliklerini nasıl dağıtabileceğinizi göreceksiniz.