Bir Veritabanı Sunucusunu Web Dağıtımı Yayımlama için Yapılandırma

tarafından Jason Lee

Bu konuda, bir SQL Server 2008 R2 veritabanı sunucusunun web dağıtımını ve yayımlamasını destekleyecek şekilde nasıl yapılandırıldığı açıklanmaktadır.

Bu konuda açıklanan görevler her dağıtım senaryosunda yaygındır; web sunucularınızın IIS Web Dağıtım Aracı (Web Dağıtımı) Uzak Aracı Hizmeti' ni, Web Dağıtımı İşleyicisi'ni veya çevrimdışı dağıtımı kullanacak şekilde yapılandırılmış olması ya da uygulamanızın tek bir web sunucusunda veya bir sunucu grubunda çalışması önemli değildir. Veritabanını dağıtma şekliniz, güvenlik gereksinimlerine ve dikkat edilmesi gereken diğer noktalara göre değişebilir. Örneğin, veritabanını örnek verilerle veya örnek veriler olmadan dağıtabilir ve dağıtımdan sonra kullanıcı rolü eşlemelerini dağıtabilir veya el ile yapılandırabilirsiniz. Ancak, veritabanı sunucusunu yapılandırma yönteminiz aynı kalır.

Bir veritabanı sunucusunu web dağıtımlarını destekleyecek şekilde yapılandırmak için ek ürün veya araç yüklemeniz gerekmez. Veritabanı sunucunuzun ve web sunucunuzun farklı makinelerde çalıştığını varsayarsak şunları yapmanız yeterlidir:

  • SQL Server'ın TCP/IP kullanarak iletişim kurmasına izin ver.
  • Tüm güvenlik duvarları üzerinden SQL Server trafiğine izin verin.
  • Web sunucusu makine hesabına bir SQL Server oturumu açın.
  • Makine hesabı oturum açma bilgilerini gerekli veritabanı rolleriyle eşleyin.
  • Dağıtımı çalıştıracak hesaba bir SQL Server oturum açma ve veritabanı oluşturucu izinleri verin.
  • Yinelenen dağıtımları desteklemek için dağıtım hesabı oturum açma bilgilerini db_owner veritabanı rolüyle eşleyin.

Bu konu başlığında, bu yordamların her birinin nasıl gerçekleştirileceği gösterilir. Bu konudaki görevler ve izlenecek yollarda, Windows Server 2008 R2 üzerinde çalışan varsayılan bir SQL Server 2008 R2 örneğiyle başladığınız varsayılır. Devam etmeden önce şunların olduğundan emin olun:

  • Windows Server 2008 R2 Service Pack 1 ve tüm kullanılabilir güncelleştirmeler yüklenir.
  • Sunucu etki alanına katılmış.
  • Sunucunun statik bir IP adresi vardır.
  • SQL Server 2008 R2 Service Pack 1 ve tüm kullanılabilir güncelleştirmeler yüklenir.

SQL Server örneğinin yalnızca herhangi bir SQL Server yüklemesine otomatik olarak dahil edilen Veritabanı Altyapısı Hizmetleri rolünü içermesi gerekir. Ancak, yapılandırma ve bakım kolaylığı için Yönetim Araçları – Temel ve Yönetim Araçları – Eksiksiz sunucu rollerini eklemenizi öneririz.

Not

Bilgisayarları bir etki alanına ekleme hakkında daha fazla bilgi için bkz . Bilgisayarları Etki Alanına Ekleme ve Oturum Açma. Statik IP adreslerini yapılandırma hakkında daha fazla bilgi için bkz . Statik IP Adresi Yapılandırma. SQL Server'ı yükleme hakkında daha fazla bilgi için bkz . SQL Server 2008 R2'yi Yükleme.

SQL Server'a Uzaktan Erişimi Etkinleştirme

SQL Server, uzak bilgisayarlarla iletişim kurmak için TCP/IP kullanır. Veritabanı sunucunuz ve web sunucunuz farklı makinelerdeyse şunları yapmanız gerekir:

  • SQL Server ağ ayarlarını TCP/IP üzerinden iletişime izin verecek şekilde yapılandırın.
  • SQL Server örneğinin kullandığı bağlantı noktalarında TCP trafiğine (ve bazı durumlarda Kullanıcı Veri Birimi Protokolü (UDP) trafiğine izin vermek için tüm donanım veya yazılım güvenlik duvarlarını yapılandırın.

SQL Server'ın TCP/IP üzerinden iletişim kurmasını sağlamak için SQL Server Yapılandırma Yöneticisi kullanarak SQL Server örneğinizin ağ yapılandırmasını değiştirin.

SQL Server'ın TCP/IP kullanarak iletişim kurmasını sağlamak için

  1. Başlat menüsünde Tüm Programlar'ın üzerine gelin, Microsoft SQL Server 2008 R2'ye tıklayın, Yapılandırma Araçları'na ve ardından SQL Server Yapılandırma Yöneticisi'e tıklayın.

  2. Ağaç görünümü bölmesinde SQL Server Ağ Yapılandırması'nı genişletin ve MSSQLSERVER protokolleri'ne tıklayın.

    Not

    SQL Server'ın birden çok örneğini yüklediyseniz, her örnek için bir [örnek adı] protokolü öğesi görürsünüz. Ağ ayarlarını örnek temelinde yapılandırmanız gerekir.

  3. Ayrıntılar bölmesinde TCP/IP satırına sağ tıklayın ve ardından Etkinleştir'e tıklayın.

    Ayrıntılar bölmesinde TCP/IP satırına sağ tıklayın ve ardından Etkinleştir'e tıklayın

  4. Uyarı iletişim kutusunda Tamam'a tıklayın.

    Uyarı iletişim kutusunda Tamam'a tıklayın

  5. Yeni ağ yapılandırmanızın etkili olması için önce MSSQLSERVER hizmetini yeniden başlatmanız gerekir. Bunu bir komut isteminde, Hizmetler konsolundan veya SQL Server Management Studio'dan yapabilirsiniz. Bu yordamda SQL Server Management Studio kullanacaksınız.

  6. SQL Server Yapılandırma Yöneticisi’ni kapatın.

  7. Başlat menüsünde Tüm Programlar'ın üzerine gelin, Microsoft SQL Server 2008 R2'ye tıklayın ve ardından SQL Server Management Studio'ya tıklayın.

  8. Sunucuya Bağlan iletişim kutusundaki Sunucu adı kutusuna veritabanı sunucusunun adını yazın ve bağlan'a tıklayın.

    Sunucuya Bağlan iletişim kutusundaki Sunucu adı kutusuna veritabanı sunucusunun adını yazın ve bağlan'a tıklayın.

  9. Nesne Gezgini bölmesinde üst sunucu düğümüne (örneğin, TESTDB1) sağ tıklayın ve ardından Yeniden Başlat'a tıklayın.

    Nesne Gezgini bölmesinde üst sunucu düğümüne (örneğin, TESTDB1) sağ tıklayın ve ardından Yeniden Başlat'a tıklayın.

  10. Microsoft SQL Server Management Studio iletişim kutusunda Evet'e tıklayın.

    Microsoft SQL Server Management Studio iletişim kutusunda Evet'e tıklayın.

  11. Hizmet yeniden başlatıldığında SQL Server Management Studio'yu kapatın.

Sql Server trafiğine güvenlik duvarı üzerinden izin vermek için öncelikle SQL Server örneğinizin hangi bağlantı noktalarını kullandığını bilmeniz gerekir. Bu, SQL Server örneğinin nasıl oluşturulduğuna ve yapılandırıldığına bağlıdır:

  • SQL Server'ın varsayılan örneği, 1433 numaralı TCP bağlantı noktasındaki istekleri dinler (ve yanıtlar).
  • SQL Server'ın adlandırılmış bir örneği, dinamik olarak atanmış bir TCP bağlantı noktasındaki istekleri dinler (ve yanıtlar).
  • SQL Server Browser hizmeti etkinleştirilirse istemciler, belirli bir SQL Server örneği için hangi TCP bağlantı noktasının kullanılacağını öğrenmek için udp bağlantı noktası 1434'te hizmeti sorgulayabilir. Ancak bu hizmet genellikle güvenlik nedeniyle devre dışı bırakılır.

SQL Server'ın varsayılan bir örneğini kullandığınızı varsayarsak, güvenlik duvarınızı trafiğe izin verecek şekilde yapılandırmanız gerekir.

Yön Bağlantı Noktasından Bağlantı Noktasına Bağlantı Noktası Türü
Gelen Tümü 1433 TCP
Giden 1433 Tümü TCP

Not

Teknik olarak, istemci bilgisayar SQL Server ile iletişim kurmak için 1024 ile 5000 arasında rastgele atanmış bir TCP bağlantı noktası kullanır ve güvenlik duvarı kurallarınızı buna göre kısıtlayabilirsiniz. SQL Server bağlantı noktaları ve güvenlik duvarları hakkında daha fazla bilgi için bkz. Güvenlik duvarı üzerinden SQL ile iletişim kurmak için gereken TCP/IP bağlantı noktası numaraları ve Nasıl yapılır: Sunucuyu Belirli bir TCP Bağlantı Noktasında Dinleyecek Şekilde Yapılandırma (SQL Server Yapılandırma Yöneticisi).

Windows Server ortamlarının çoğunda büyük olasılıkla veritabanı sunucusunda Windows Güvenlik Duvarı'nı yapılandırmanız gerekir. Varsayılan olarak, bir kural özel olarak yasaklanmadığı sürece Windows Güvenlik Duvarı tüm giden trafiğe izin verir. Web sunucunuzun veritabanınıza ulaşmasını sağlamak için, SQL Server örneğinin kullandığı bağlantı noktası numarasında TCP trafiğine izin veren bir gelen kuralı yapılandırmanız gerekir. SQL Server'ın varsayılan bir örneğini kullanıyorsanız, bu kuralı yapılandırmak için sonraki yordamı kullanabilirsiniz.

Windows Güvenlik Duvarı'nı varsayılan SQL Server örneğiyle iletişime izin verecek şekilde yapılandırmak için

  1. Veritabanı sunucusunda, Başlat menüsünde Yönetim Araçları'nın üzerine gelin ve Gelişmiş Güvenlik özellikli Windows Güvenlik Duvarı'na tıklayın.

  2. Ağaç görünümü bölmesinde Gelen Kuralları'na tıklayın.

    Ağaç görünümü bölmesinde Gelen Kuralları'na tıklayın.

  3. Eylemler bölmesinde, Gelen Kuralları'nın altında Yeni Kural'a tıklayın.

  4. Yeni Gelen Kural Sihirbazı'nın Kural Türü sayfasında Bağlantı Noktası'nı seçin ve İleri'ye tıklayın.

    Yeni Gelen Kural Sihirbazı'nın Kural Türü sayfasında Bağlantı Noktası'nı seçin ve İleri'ye tıklayın.

  5. Protokol ve Bağlantı Noktaları sayfasında TCP'nin seçili olduğundan emin olun ve Belirli yerel bağlantı noktaları kutusuna 1433 yazın ve İleri'ye tıklayın.

    Protokol ve Bağlantı Noktaları sayfasında TCP'nin seçili olduğundan emin olun ve Belirli yerel bağlantı noktaları kutusuna 1433 yazın ve İleri'ye tıklayın.

  6. Eylem sayfasında Bağlantıya izin ver'i seçili bırakın ve İleri'ye tıklayın.

  7. Profil sayfasında Etki Alanı'nı seçili bırakın, Özel ve Genel onay kutularını temizleyin ve ardından İleri'ye tıklayın.

    Profil sayfasında Etki Alanı'nı seçili bırakın, Özel ve Genel onay kutularını temizleyin ve ardından İleri'ye tıklayın.

  8. Ad sayfasında, kurala uygun bir açıklayıcı ad verin (örneğin, SQL Server varsayılan örneği – ağ erişimi) ve son'a tıklayın.

SQL Server için Windows Güvenlik Duvarı'nı yapılandırma hakkında daha fazla bilgi için, özellikle sql server ile standart olmayan veya dinamik bağlantı noktaları üzerinden iletişim kurmanız gerekiyorsa, bkz . Nasıl yapılır: Veritabanı Altyapısı Erişimi için Windows Güvenlik Duvarı Yapılandırma.

Oturum Açma bilgilerini ve Veritabanı İzinlerini Yapılandırma

Internet Information Services'e (IIS) bir web uygulaması dağıttığınızda uygulama, uygulama havuzunun kimliği kullanılarak çalışır. Bir etki alanı ortamında, uygulama havuzu kimlikleri ağ kaynaklarına erişmek için çalıştırdıkları sunucunun makine hesabını kullanır. Makine hesapları [etki alanı adı]</strong>[makine adı]$ biçimini alır; örneğin, FABRIKAM\TESTWEB1$. Web uygulamanızın ağ üzerinden bir veritabanına erişmesine izin vermek için şunları yapmanız gerekir:

  • SQL Server örneğine web sunucusu makine hesabı için oturum açma bilgisi ekleyin.
  • Makine hesabı oturum açma bilgilerini gerekli veritabanı rolleriyle eşleyin (genellikle db_datareader ve db_datawriter).

Web uygulamanız tek bir sunucu yerine bir sunucu grubunda çalışıyorsa, bu yordamları sunucu grubundaki her web sunucusu için yinelemeniz gerekir.

Not

Uygulama havuzu kimlikleri ve ağ kaynaklarına erişme hakkında daha fazla bilgi için bkz . Uygulama Havuzu Kimlikleri.

Bu görevlere çeşitli yollarla yaklaşabilirsiniz. Oturum açma bilgilerini oluşturmak için şunları yapabilirsiniz:

  • Transact-SQL veya SQL Server Management Studio kullanarak veritabanı sunucusunda oturum açmayı el ile oluşturun.
  • Oturum açma bilgilerini oluşturmak ve dağıtmak için Visual Studio'da bir SQL Server 2008 Server Projesi kullanın.

SQL Server oturum açma bilgileri, veritabanı düzeyinde bir nesne yerine sunucu düzeyinde bir nesne olduğundan, dağıtmak istediğiniz veritabanına bağımlı değildir. Bu nedenle, herhangi bir noktada oturum açmayı oluşturabilirsiniz ve en kolay yaklaşım genellikle veritabanlarını dağıtmaya başlamadan önce veritabanı sunucusunda oturum açmayı el ile oluşturmaktır. SQL Server Management Studio'da oturum açmak için sonraki yordamı kullanabilirsiniz.

Web sunucusu makine hesabı için SQL Server oturum açma bilgisi oluşturmak için

  1. Veritabanı sunucusunda, Başlat menüsünde Tüm Programlar'ın üzerine gelin, Microsoft SQL Server 2008 R2'ye tıklayın ve ardından SQL Server Management Studio'ya tıklayın.

  2. Sunucuya Bağlan iletişim kutusundaki Sunucu adı kutusuna veritabanı sunucusunun adını yazın ve bağlan'a tıklayın.

    Bu görüntü şunları gösterir: Sunucuya Bağlan iletişim kutusunda, Sunucu adı kutusuna veritabanı sunucusunun adını yazın ve bağlan'a tıklayın.

  3. Nesne Gezgini bölmesinde Güvenlik'e sağ tıklayın, Yeni'nin üzerine gelin ve oturum aç'a tıklayın.

  4. Oturum Aç – Yeni iletişim kutusundaki Oturum açma adı kutusuna web sunucusu makine hesabınızın adını yazın (örneğin, FABRIKAM\TESTWEB1$).

    Oturum Aç – Yeni iletişim kutusundaki Oturum açma adı kutusuna web sunucusu makine hesabınızın adını yazın (örneğin, FABRIKAM\TESTWEB1$).

  5. Tamam'a tıklayın.

Bu noktada veritabanı sunucunuz Web Dağıtımı yayımlamaya hazırdır. Ancak, makine hesabı oturum açma bilgilerini gerekli veritabanı rolleriyle eşleyene kadar dağıttığınız çözümler çalışmaz. Oturum açma bilgilerini veritabanı rolleriyle eşlemek için çok daha fazla düşünmeniz gerekir çünkü veritabanını dağıtana kadar rolleri eşleyemezsiniz. Makine hesabı oturum açma bilgilerini gerekli veritabanı rolleriyle eşlemek için şunları yapabilirsiniz:

  • Veritabanını ilk kez dağıttıktan sonra veritabanı rollerini oturum açma bilgilerine el ile atayın.
  • Veritabanı rollerini oturum açma bilgilerine atamak için dağıtım sonrası betiği kullanın.

Oturum açma bilgilerinin ve veritabanı rolü eşlemelerinin oluşturulmasını otomatikleştirme hakkında daha fazla bilgi için bkz . Test Ortamlarına Veritabanı Rolü Üyeliklerini Dağıtma. Alternatif olarak, makine hesabı oturum açma bilgilerini gerekli veritabanı rolleriyle el ile eşlemek için sonraki yordamı kullanabilirsiniz. Veritabanını dağıtana kadar bu yordamı uygulayamazsınız.

Veritabanı rollerini web sunucusu makine hesabı oturum açma bilgileriyle eşlemek için

  1. SQL Server Management Studio'yu daha önce olduğu gibi açın.

  2. Nesne Gezgini bölmesinde Güvenlik düğümünü genişletin, Oturum açma bilgileri düğümünü genişletin ve ardından makine hesabı oturum açma bilgilerine çift tıklayın (örneğin, FABRIKAM\TESTWEB1$).

    Nesne Gezgini bölmesinde Güvenlik düğümünü genişletin, Oturum açma bilgileri düğümünü genişletin ve ardından makine hesabı oturum açma bilgilerine çift tıklayın (örneğin, FABRIKAM\TESTWEB1$).

  3. Oturum Açma Özellikleri iletişim kutusunda Kullanıcı Eşlemesi'ne tıklayın.

  4. Bu oturum açma bilgileriyle eşlenen kullanıcılar tablosunda veritabanınızın adını seçin (örneğin, ContactManager).

  5. [veritabanı adı] için veritabanı rolü üyeliği listesinde gerekli izinleri seçin. Contact Manager örnek çözümü söz konusu olduğunda, db_datareader ve db_datawriter rollerini seçmeniz gerekir.

    [veritabanı adı] için veritabanı rolü üyeliği listesinde gerekli izinleri seçin. Contact Manager örnek çözümü söz konusu olduğunda, db_datareader ve db_datawriter rollerini seçmeniz gerekir.

  6. Tamam'a tıklayın.

Veritabanı rollerini el ile eşlemek genellikle test ortamları için fazla yeterli olmasa da, hazırlama veya üretim ortamlarına otomatik veya tek tıklamayla yapılan dağıtımlar için daha az tercih edilir. Veritabanı Rol Üyeliklerini Test Ortamlarına Dağıtma bölümünde dağıtım sonrası betikleri kullanarak bu tür görevleri otomatikleştirme hakkında daha fazla bilgi bulabilirsiniz.

Not

Sunucu projeleri ve veritabanı projeleri hakkında daha fazla bilgi için bkz . Visual Studio 2010 SQL Server Veritabanı Projeleri.

Dağıtım Hesabı İzinlerini Yapılandırma

Dağıtımı çalıştırmak için kullanacağınız hesap bir SQL Server yöneticisi değilse, bu hesap için de oturum açmanız gerekir. Veritabanını oluşturmak için hesabın dbcreator sunucu rolünün üyesi olması veya eşdeğer izinlere sahip olması gerekir.

Not

Veritabanını dağıtmak için Web Dağıtımı veya VSDBCMD kullandığınızda, Windows kimlik bilgilerini veya SQL Server kimlik bilgilerini kullanabilirsiniz (SQL Server örneğiniz karma mod kimlik doğrulamasını destekleyecek şekilde yapılandırılmışsa). Sonraki yordamda Windows kimlik bilgilerini kullanmak istediğiniz varsayılır, ancak dağıtımı yapılandırırken bağlantı dizesi SQL Server kullanıcı adı ve parola belirtmenizi engelleyen bir şey yoktur.

Dağıtım hesabının izinlerini ayarlamak için

  1. SQL Server Management Studio'yu daha önce olduğu gibi açın.

  2. Nesne Gezgini bölmesinde Güvenlik'e sağ tıklayın, Yeni'nin üzerine gelin ve oturum aç'a tıklayın.

  3. Oturum Aç – Yeni iletişim kutusundaki Oturum açma adı kutusuna dağıtım hesabınızın adını yazın (örneğin, FABRIKAM\matt).

  4. Sayfa seçin bölmesinde Sunucu Rolleri'ne tıklayın.

  5. dbcreator'ı seçin ve tamam'a tıklayın.

    dbcreator'ı seçin ve tamam'a tıklayın.

Sonraki dağıtımları desteklemek için, dağıtım hesabını ilk dağıtımdan sonra veritabanındaki db_owner rolüne de eklemeniz gerekir. Bunun nedeni, sonraki dağıtımlarda yeni bir veritabanı oluşturmak yerine var olan bir veritabanının şemasını değiştirmenizdir. Önceki bölümde açıklandığı gibi, veritabanını oluşturana kadar, belirgin nedenlerle veritabanı rolüne kullanıcı ekleyemezsiniz.

Dağıtım hesabı oturum açma bilgilerini db_owner veritabanı rolüyle eşlemek için

  1. SQL Server Management Studio'yu daha önce olduğu gibi açın.

  2. Nesne Gezgini penceresinde Güvenlik düğümünü genişletin, Oturum Açma bilgileri düğümünü genişletin ve ardından makine hesabı oturum açma bilgilerine (fabrikam\matt gibi) çift tıklayın.

  3. Oturum Açma Özellikleri iletişim kutusunda Kullanıcı Eşlemesi'ne tıklayın.

  4. Bu oturum açma bilgileriyle eşlenen kullanıcılar tablosunda veritabanınızın adını seçin (örneğin, ContactManager).

  5. [veritabanı adı] için veritabanı rolü üyeliği listesinde db_owner rolü seçin.

    [veritabanı adı] için veritabanı rolü üyeliği listesinde db_owner rolü seçin.

  6. Tamam'a tıklayın.

Sonuç

Veritabanı sunucunuz artık uzak veritabanı dağıtımlarını kabul etmeye ve uzak IIS web sunucularının veritabanlarınıza erişmesine izin vermek için hazır olmalıdır. Veritabanlarını dağıtmaya ve kullanmaya çalışmadan önce şu önemli noktaları denetlemek isteyebilirsiniz:

  • SQL Server'ı uzak TCP/IP bağlantılarını kabul etmek için yapılandırdınız mı?
  • SQL Server trafiğine izin vermek için herhangi bir güvenlik duvarı yapılandırdığınız oldu mu?
  • SQL Server'a erişecek her web sunucusu için bir makine hesabı oturum açma hesabı oluşturdunuz mu?
  • Veritabanı dağıtımınız kullanıcı rolü eşlemeleri oluşturmak için bir betik mi içeriyor yoksa veritabanını ilk kez dağıttığınızda bunları el ile mi oluşturmanız gerekiyor?
  • Dağıtım hesabı için bir oturum açma hesabı oluşturdunuz ve bunu dbcreator sunucu rolüne eklediniz mi?

Daha Fazla Bilgi

Veritabanı projelerini dağıtma hakkında yönergeler için bkz . Veritabanı Projelerini Dağıtma. Dağıtım sonrası betiği çalıştırarak veritabanı rolü üyelikleri oluşturma yönergeleri için bkz . Veritabanı Rolü Üyeliklerini Test Ortamlarına Dağıtma. Üyelik veritabanlarının oluşturduğu benzersiz dağıtım güçlüklerinin nasıl karşılanması konusunda rehberlik için bkz . Üyelik Veritabanlarını Kurumsal Ortamlara Dağıtma.