Bir sunucum var sunucumda SQL server 2012 kullanıyorum, bir veri tabanım var. Bu veritabanını ana PC de olan projeme bağlamam gerek ancak hata alıyorum, nasıl bağlamam gerektiğini anlatabilir misiniz?
Kendi yaptığım işlemler;
Connectionstring="server = TCP:185.X. X. X, 1433; ınitial catalog = kifi; user ID = sa; password=******;"
Aldığım hata;
System. Data. Sqlclient. Sqlexception: 'sunucuyla bağlantı kurulurken ağ ile ilgili veya örneğe özel bir hata oluştu. Sunucu bulunamadı veya sunucuya erişilemiyor. Örnek adının doğru olduğunu ve SQL Server'ın uzak bağlantılara izin verdiğini doğrulayın. (provider: TCP provider, error: 0 - bekleme işlem zamanı aşıldı.)'
Merhabalar, işlemlerin tamamı yalnızca bunlardan ibaret değil, hala yürütülmesi gereken adımlar var. Örnek olarak: LAN üzerinden bir bağlantı oluşturulacaksa yine birkaç adım uygulanmalıdır, WAN üzerinden bağlantı oluşturulacaksa sunucunun bağlı olduğu modem/router üzerindeki arayüzden detaylı ayarlamalar yapılmalıdır. Biz şuan yalnızca TCP/IP protokolünü aktif hale getirdik ve sunucunun bağlı olduğu yerel ağdaki port numarası ile adresinde konfigürasyonlar yaptık.
Kontrol amaçlı yapılan eylemleri gözden geçirin:
SQL Server Configuration Manager (SSCS) üzerinden sunucu olarak kullanılacak olan makinenin TCP/IP Protokolünün aktif olduğundan emin olun.
Sunucu olarak kullanılacak olan makinede "Komut İstemi"ni yönetici olarak çalıştırarak açılan pencereye "ipconfig" komutunu yazın. Elde ettiğiniz geri dönüşte Wireless LAN Adapter ya da Ethernet Adapter olarak "IPv4 Address" olarak belirtilen yerel ağ adresini SQL Server Configuration Manager (SSCS) üzerinden TCP/IP Protokolünü aktif edilen penceredeki "IP Addresses" isimli sekmeden bulun; "Enabled" isimli parametrede "Yes" yazdığından ve altında "TCP Port" isimli parametrede "1433" numaralı portun yazıldığından emin olun.
Eğer bahsettiğim önceki eylemlerde güncelleme yaptıysanız SQL Server Configuration Manager'ın arayüzüne geri dönün ve ekranın sol tarafında yer alan "SQL Server Services" isimli parametreye tıklayarak güncellenen pencerede yer alan "SQL Server (ÖGENİN ADI)"ı yeniden başlatın.
Sunucuda yer alan Windows Güvenlik Duvarı'nda TCP/IP protokolüne uygun davranış sergilenmesi için oluşturulan "Kural"da kuralın; TCP/UDP portlarıyla kurulan bağlantıları kontrol etmesi gerektiğinden, TCP protokolünde uygulanacağından, 1433 numaralı port tetiklendiğinde devreye gireceğinden, bağlantı sağlandığında bağlantıyı onaylamaya yönelik bir aksiyon uygulayacağından ve tüm senaryolarda/profillerde geçerli olduğundan emin olun.
Uygulanması Gereken Diğer Adımlar:
NOT: Halihazırda sunucuda ve veri tabanında yürütülecek olan çalışma için gerekli yetkilerle donatılmış olan bir kullanıcı mevcut ise 2. Adım'ı uygulamanıza gerek yoktur.
Microsoft SQL Server Management Studio (SSMS)'i açın. Arayüzün sol tarafında Database Engine'e bağlanın ve kullanacağınız sunucuya giriş yapın. Sonrasında da bağlanılan sunucuya sağ tuş ile tıklayın ve açılan sekmelerden "Properties" isimli butona tıklayın. Açılan pencerede sol tarafta "Select A Page" isimli parametrede yer alan "Connections" isimli butona tıklayın; güncellenen pencerenin alt kısımlarında "Remote Server Connections" isimli başlıkta bulunan "Allow remote connections to this server" isimli özelliği aktif edin. En nihayetinde pencereyi kapatın. Kullanacağınız sunucuya sağ tuş ile tıklayın ve açılan sekmelerden "Restart" butonuna basarak sunucuyu yeniden başlatın (yeniden başlatma esnasında genelde "SQL Server Agent" çökecektir, yeniden başlatma işlemi bittikten sonra manuel olarak çalıştırılması gerekir).
Arayüzün sol tarafında yüklenenler arasından "Security" isimli dosyaya sağ tuş ile tıklayın ve açılan sekmelerden "New" butonuna ardından da "Login" butonuna tıklayın. Açılan pencerede "Login Name" isimli parametreye kullanıcı için belirlediğiniz ismi girin, "SQL Server Authentication" isimli özelliği aktif edin, şifre belirleyin, şifre politikaları için uygulanacak prosedürler ile ilgili güncellemeleri kendi isteğiniz dahilinde ayarlayın. Sonrasında pencerenin sol tarafında yer alan "Server Rules" isimli parametreye tıklayın; güncellenen pencerede oluşturduğunuz kullanıcıya tanımlamak istediğiniz sunucu rollerini seçin (her rolün özgün yetkinlikleri vardır, en zayıf rol "Public" isimli roldür). Sonrasında pencerenin sol tarafında yer alan "User Mapping" isimli parametreye tıklayın; güncellenen pencerede kullanıcının hangi veri tabanında faaliyet yürütmesini istiyorsanız eğer onu seçin ve kullanıcının bu veri tabanındaki rollerini tanımlayın. Sonrasında pencerenin sol tarafında yer alan "Securables" isimli parametreye tıklayın; güncellenen pencerede kullanıcının sunucu içerisindeki izinlerini isteğiniz dahilinde düzenleyin. Sonrasında pencerenin sol tarafında yer alan "Status" isimli parametreye tıklayın; güncellenen pencerede "Permission to connect to database engine" isimli özelliği "Grant" olarak güncelleyin, "Login" isimli özelliği de "Enabled" olarak güncelleyin. Ardından pencereyi kapatın.
LAN (Yerel Ağ) Üzerinden Bağlantı Kurulacağı Takdirde Uygulanması Gereken Adımlar:
İkinci bilgisayarda Windows Güvenlik Duvarı'nı açın. Sunucu olarak kullanılacak olan makinede Windows Güvenlik Duvarı içerisinde oluşturulan "Kural" için uygulanan tüm adımları bu ikinci bilgisayarda da uygulayın.
İkinci bilgisayarda "Komut İstemi"ni açın; "ping XXX.XXX.X.X" komutunu yazın ve çalıştırın. Alacağınız geri dönüş yaklaşık "Reply From XXX.XXX.X.X " buna benzer olmalıdır, olmadığı takdirde "Request Failed/Denied" ya da ona benzer bir geri dönüş alırsınız. Olumsuz geri dönüş aldığınız takdirde IP adresinin kontrolü, port numarasının kontrolü ve Windows Güvenlik Duvarı eylemleri tekrardan gözden geçirilmelidir.
Olumlu olduğu takdirde C# üzerinde "ConnectionString" kurun:
C#:
using System.Data.SqlClient;SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Data Source = Sunucu Adı;" +
"Initial Catalog = Veri Tabanı Adı;" +
"User id = Kullanıcı Adı;" +
"Password = Şifre;";
conn.Open();
WAN (Genel Ağ) Üzerinden Bağlantı Kurulacağı Takdirde Uygulanması Gereken Adımlar:
Sunucu olarak kullanılacak olan makinenin sahip olduğu internet sağlayıcısının arayüzüne web tarayıcısından yerel IP adresini girerek giriş yapın; "Temel/Kurulum" isimli butona tıklayın, güncellenen pencereden "Ağ Yapılandırması" başlığı altında yazan WAN IP Adresi'ni bir yere not edin (MAC Adresi ya da IPv4 DNS Sunucu IP Adresi ile karıştırmayın).
Arayüze geri dönün; "Gelişmiş/Seçenekler" butonuna tıklayın; güncellenen pencerede "WAN Engelleme/WAN Ağ Geçişini Durdurma" isimli özelliği "Aktif" pozisyonda ise kapatın, "IPsec Geçişi" isimli parametreyi "Kapalı" pozisyonda ise "Aktif" olarak güncelleyin ve yapılan tüm işlemleri uygulamaya sokun.
Arayüze geri dönün; "Gelişmiş/Port Yönlendirme" butonuna tıklayın, yeni bir "Port Yönlendirme Protokolü" başlatın (bazılarında "IPv4 Oluştur" şeklinde yazabilir), "Lokal IP" isimli parametreye sunucu olarak kullanılan makinenin yerel IP adresini yazın, "Lokal Başlangıç Portu" isimli parametreye "1433" yazın, "Lokal Bitiş Portu" isimli parametreye "1433" yazın, "Harici IP" isimli parametreye WAN IP Adresi'ni yazın, "Harici Başlangıç Portu" isimli parametreye "1433" yazın, "Harici Bitiş Portu" isimli parametreye "1433" yazın, "Protokol" isimli parametreye "TCP" yazın (tüm protokolleri dahil eden bir seçenek varsa eğer onu seçin), "Çalışma Durumu" isimli parametreyi "Aktif" olarak güncelleyin, yapılan bu Port Yönlendirme Protokolü'ne bir isim verin ve işlemi uygulamaya sokun.
İkinci bilgisayarda Windows Güvenlik Duvarı'nı açın. Sunucu olarak kullanılacak olan makinede Windows Güvenlik Duvarı içerisinde oluşturulan "Kural" için uygulanan tüm adımları bu ikinci bilgisayarda da uygulayın.
İkinci bilgisayara geçin; "Komut İstemi"ni yönetici olarak çalıştırdıktan sonra açılan pencereye WAN Adresi IP'sini ve 1433 portu içinde barındıran "telnet XXX.XXX.X.X 1433" komutu yazın ve çalıştırın. Eğer Komut İstemi'nde yazan tüm metinler kaybolur ve siyah ekranda sadece beyaz renkli bar yanıp sönerse bu olumlu bir geri dönüştür, bağlantı başarıyla kurulmuştur.
C# üzerinde artık gerekli Connection String kurulabilir.
NOT: WAN IP Adresi'nin Statik IP ya da Dinamik IP bir değere sahip olup olmadığından emin olun ve ona göre hareket edin.
Umarım işinize yarar, eksik bir konuyu geride bıraktığımı düşünmüyorum ancak insanlık hali idare edin. Belki farklı fikirleri ya da tavsiyeleri olan arkadaşlar da olabilir, yorumlamalarda bulunurlarsa eğer onları da lütfen dikkate almayı unutmayın. Herhangi bir yanlış açıklama/terim kullandıysam eğer kusura bakmayın mümkün olduğunca sade anlatmaya özen gösterdim, iyi çalışmalar ve kolaylıklar diliyorum...
ConnectionString bu şekilde yazıyorsanız sorunun kaynağı bu olabilir. ı harfi kullanmışsınız mesela. Connection string örneklerine bakıp kendi stringinizi düzeltip deneyin.
ConnectionString bu şekilde yazıyorsanız sorunun kaynağı bu olabilir. ı harfi kullanmışsınız mesela. Connection string örneklerine bakıp kendi stringinizi düzeltip deneyin.
Sorun değil. Şöyle ifade edeyim: Server Configuration Manager (SSCM-SCM) üzerinden bağlantı düzenlemeleri yapmak istediğiniz sunucunun protokol ayarlarına girdikten ve TCP/IP protokolünü aktive ettikten sonra ek olarak aynı pencereden "IP Addresses" isimli sekmeden bağlantı kabul etmek istediğiniz IP adreslerini hem "Active" olarak ayarlamanız hem de "Enabled" olarak değiştirmeniz gerekir (genellikle "Disabled" olur).
Bu konfigürasyonları yaptıktan sonra da Windows Güvenlik Duvarı üzerinden port bağlantılarını kontrol eden yeni bir "Kural" oluşturmalı, TCP Protokolü üzerinden gelen bağlantılar için uygulanması gerektiği seçilmeli, Port numarası "1433" olarak güncellenmeli ve sonrasında oluşturulan bu kurala bir isim verilerek tamamlanmalıdır.
NOT: Windows Güvenlik Duvarı'nda oluşturulacak olan Kural, ilgili Protokol ayarlamaları tamamlandıktan sonra sunucunun tamamen yeniden başlatılmasının ardından ya da ilgili sunucu SSCM'de yer alan "SQL Server Services" isimli parametreden yeniden başlatılmasının ardından uygulanmalıdır.
Bağlantının kabul edileceği IP adreslerinin yer aldığı konfigürasyon penceresini ekte paylaştım:
(Sunucu hatasından kaynaklı olarak biraz beklemek gerek)
Sorun değil. Şöyle ifade edeyim: Server Configuration Manager (SSCM-SCM) üzerinden bağlantı düzenlemeleri yapmak istediğiniz sunucunun protokol ayarlarına girdikten ve TCP/IP protokolünü aktive ettikten sonra ek olarak aynı pencereden "IP Addresses" isimli sekmeden bağlantı kabul etmek istediğiniz IP adreslerini hem "Active" olarak ayarlamanız hem de "Enabled" olarak değiştirmeniz gerekir (genellikle "Disabled" olur).
Bu konfigürasyonları yaptıktan sonra da Windows Güvenlik Duvarı üzerinden port bağlantılarını kontrol eden yeni bir "Kural" oluşturmalı, TCP Protokolü üzerinden gelen bağlantılar için uygulanması gerektiği seçilmeli, Port numarası "1433" olarak güncellenmeli ve sonrasında oluşturulan bu kurala bir isim verilerek tamamlanmalıdır.
NOT: Windows Güvenlik Duvarı'nda oluşturulacak olan Kural, ilgili Protokol ayarlamaları tamamlandıktan sonra sunucunun tamamen yeniden başlatılmasının ardından ya da ilgili sunucu SSCM'de yer alan "SQL Server Services" isimli parametreden yeniden başlatılmasının ardından uygulanmalıdır.
Bağlantının kabul edileceği IP adreslerinin yer aldığı konfigürasyon penceresini ekte paylaştım:
(Sunucu hatasından kaynaklı olarak biraz beklemek gerek)
Merhabalar, işlemlerin tamamı yalnızca bunlardan ibaret değil, hala yürütülmesi gereken adımlar var. Örnek olarak: LAN üzerinden bir bağlantı oluşturulacaksa yine birkaç adım uygulanmalıdır, WAN üzerinden bağlantı oluşturulacaksa sunucunun bağlı olduğu modem/router üzerindeki arayüzden detaylı ayarlamalar yapılmalıdır. Biz şuan yalnızca TCP/IP protokolünü aktif hale getirdik ve sunucunun bağlı olduğu yerel ağdaki port numarası ile adresinde konfigürasyonlar yaptık.
Kontrol amaçlı yapılan eylemleri gözden geçirin:
SQL Server Configuration Manager (SSCS) üzerinden sunucu olarak kullanılacak olan makinenin TCP/IP Protokolünün aktif olduğundan emin olun.
Sunucu olarak kullanılacak olan makinede "Komut İstemi"ni yönetici olarak çalıştırarak açılan pencereye "ipconfig" komutunu yazın. Elde ettiğiniz geri dönüşte Wireless LAN Adapter ya da Ethernet Adapter olarak "IPv4 Address" olarak belirtilen yerel ağ adresini SQL Server Configuration Manager (SSCS) üzerinden TCP/IP Protokolünü aktif edilen penceredeki "IP Addresses" isimli sekmeden bulun; "Enabled" isimli parametrede "Yes" yazdığından ve altında "TCP Port" isimli parametrede "1433" numaralı portun yazıldığından emin olun.
Eğer bahsettiğim önceki eylemlerde güncelleme yaptıysanız SQL Server Configuration Manager'ın arayüzüne geri dönün ve ekranın sol tarafında yer alan "SQL Server Services" isimli parametreye tıklayarak güncellenen pencerede yer alan "SQL Server (ÖGENİN ADI)"ı yeniden başlatın.
Sunucuda yer alan Windows Güvenlik Duvarı'nda TCP/IP protokolüne uygun davranış sergilenmesi için oluşturulan "Kural"da kuralın; TCP/UDP portlarıyla kurulan bağlantıları kontrol etmesi gerektiğinden, TCP protokolünde uygulanacağından, 1433 numaralı port tetiklendiğinde devreye gireceğinden, bağlantı sağlandığında bağlantıyı onaylamaya yönelik bir aksiyon uygulayacağından ve tüm senaryolarda/profillerde geçerli olduğundan emin olun.
Uygulanması Gereken Diğer Adımlar:
NOT: Halihazırda sunucuda ve veri tabanında yürütülecek olan çalışma için gerekli yetkilerle donatılmış olan bir kullanıcı mevcut ise 2. Adım'ı uygulamanıza gerek yoktur.
Microsoft SQL Server Management Studio (SSMS)'i açın. Arayüzün sol tarafında Database Engine'e bağlanın ve kullanacağınız sunucuya giriş yapın. Sonrasında da bağlanılan sunucuya sağ tuş ile tıklayın ve açılan sekmelerden "Properties" isimli butona tıklayın. Açılan pencerede sol tarafta "Select A Page" isimli parametrede yer alan "Connections" isimli butona tıklayın; güncellenen pencerenin alt kısımlarında "Remote Server Connections" isimli başlıkta bulunan "Allow remote connections to this server" isimli özelliği aktif edin. En nihayetinde pencereyi kapatın. Kullanacağınız sunucuya sağ tuş ile tıklayın ve açılan sekmelerden "Restart" butonuna basarak sunucuyu yeniden başlatın (yeniden başlatma esnasında genelde "SQL Server Agent" çökecektir, yeniden başlatma işlemi bittikten sonra manuel olarak çalıştırılması gerekir).
Arayüzün sol tarafında yüklenenler arasından "Security" isimli dosyaya sağ tuş ile tıklayın ve açılan sekmelerden "New" butonuna ardından da "Login" butonuna tıklayın. Açılan pencerede "Login Name" isimli parametreye kullanıcı için belirlediğiniz ismi girin, "SQL Server Authentication" isimli özelliği aktif edin, şifre belirleyin, şifre politikaları için uygulanacak prosedürler ile ilgili güncellemeleri kendi isteğiniz dahilinde ayarlayın. Sonrasında pencerenin sol tarafında yer alan "Server Rules" isimli parametreye tıklayın; güncellenen pencerede oluşturduğunuz kullanıcıya tanımlamak istediğiniz sunucu rollerini seçin (her rolün özgün yetkinlikleri vardır, en zayıf rol "Public" isimli roldür). Sonrasında pencerenin sol tarafında yer alan "User Mapping" isimli parametreye tıklayın; güncellenen pencerede kullanıcının hangi veri tabanında faaliyet yürütmesini istiyorsanız eğer onu seçin ve kullanıcının bu veri tabanındaki rollerini tanımlayın. Sonrasında pencerenin sol tarafında yer alan "Securables" isimli parametreye tıklayın; güncellenen pencerede kullanıcının sunucu içerisindeki izinlerini isteğiniz dahilinde düzenleyin. Sonrasında pencerenin sol tarafında yer alan "Status" isimli parametreye tıklayın; güncellenen pencerede "Permission to connect to database engine" isimli özelliği "Grant" olarak güncelleyin, "Login" isimli özelliği de "Enabled" olarak güncelleyin. Ardından pencereyi kapatın.
LAN (Yerel Ağ) Üzerinden Bağlantı Kurulacağı Takdirde Uygulanması Gereken Adımlar:
İkinci bilgisayarda Windows Güvenlik Duvarı'nı açın. Sunucu olarak kullanılacak olan makinede Windows Güvenlik Duvarı içerisinde oluşturulan "Kural" için uygulanan tüm adımları bu ikinci bilgisayarda da uygulayın.
İkinci bilgisayarda "Komut İstemi"ni açın; "ping XXX.XXX.X.X" komutunu yazın ve çalıştırın. Alacağınız geri dönüş yaklaşık "Reply From XXX.XXX.X.X " buna benzer olmalıdır, olmadığı takdirde "Request Failed/Denied" ya da ona benzer bir geri dönüş alırsınız. Olumsuz geri dönüş aldığınız takdirde IP adresinin kontrolü, port numarasının kontrolü ve Windows Güvenlik Duvarı eylemleri tekrardan gözden geçirilmelidir.
Olumlu olduğu takdirde C# üzerinde "ConnectionString" kurun:
C#:
using System.Data.SqlClient;SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Data Source = Sunucu Adı;" +
"Initial Catalog = Veri Tabanı Adı;" +
"User id = Kullanıcı Adı;" +
"Password = Şifre;";
conn.Open();
WAN (Genel Ağ) Üzerinden Bağlantı Kurulacağı Takdirde Uygulanması Gereken Adımlar:
Sunucu olarak kullanılacak olan makinenin sahip olduğu internet sağlayıcısının arayüzüne web tarayıcısından yerel IP adresini girerek giriş yapın; "Temel/Kurulum" isimli butona tıklayın, güncellenen pencereden "Ağ Yapılandırması" başlığı altında yazan WAN IP Adresi'ni bir yere not edin (MAC Adresi ya da IPv4 DNS Sunucu IP Adresi ile karıştırmayın).
Arayüze geri dönün; "Gelişmiş/Seçenekler" butonuna tıklayın; güncellenen pencerede "WAN Engelleme/WAN Ağ Geçişini Durdurma" isimli özelliği "Aktif" pozisyonda ise kapatın, "IPsec Geçişi" isimli parametreyi "Kapalı" pozisyonda ise "Aktif" olarak güncelleyin ve yapılan tüm işlemleri uygulamaya sokun.
Arayüze geri dönün; "Gelişmiş/Port Yönlendirme" butonuna tıklayın, yeni bir "Port Yönlendirme Protokolü" başlatın (bazılarında "IPv4 Oluştur" şeklinde yazabilir), "Lokal IP" isimli parametreye sunucu olarak kullanılan makinenin yerel IP adresini yazın, "Lokal Başlangıç Portu" isimli parametreye "1433" yazın, "Lokal Bitiş Portu" isimli parametreye "1433" yazın, "Harici IP" isimli parametreye WAN IP Adresi'ni yazın, "Harici Başlangıç Portu" isimli parametreye "1433" yazın, "Harici Bitiş Portu" isimli parametreye "1433" yazın, "Protokol" isimli parametreye "TCP" yazın (tüm protokolleri dahil eden bir seçenek varsa eğer onu seçin), "Çalışma Durumu" isimli parametreyi "Aktif" olarak güncelleyin, yapılan bu Port Yönlendirme Protokolü'ne bir isim verin ve işlemi uygulamaya sokun.
İkinci bilgisayarda Windows Güvenlik Duvarı'nı açın. Sunucu olarak kullanılacak olan makinede Windows Güvenlik Duvarı içerisinde oluşturulan "Kural" için uygulanan tüm adımları bu ikinci bilgisayarda da uygulayın.
İkinci bilgisayara geçin; "Komut İstemi"ni yönetici olarak çalıştırdıktan sonra açılan pencereye WAN Adresi IP'sini ve 1433 portu içinde barındıran "telnet XXX.XXX.X.X 1433" komutu yazın ve çalıştırın. Eğer Komut İstemi'nde yazan tüm metinler kaybolur ve siyah ekranda sadece beyaz renkli bar yanıp sönerse bu olumlu bir geri dönüştür, bağlantı başarıyla kurulmuştur.
C# üzerinde artık gerekli Connection String kurulabilir.
NOT: WAN IP Adresi'nin Statik IP ya da Dinamik IP bir değere sahip olup olmadığından emin olun ve ona göre hareket edin.
Umarım işinize yarar, eksik bir konuyu geride bıraktığımı düşünmüyorum ancak insanlık hali idare edin. Belki farklı fikirleri ya da tavsiyeleri olan arkadaşlar da olabilir, yorumlamalarda bulunurlarsa eğer onları da lütfen dikkate almayı unutmayın. Herhangi bir yanlış açıklama/terim kullandıysam eğer kusura bakmayın mümkün olduğunca sade anlatmaya özen gösterdim, iyi çalışmalar ve kolaylıklar diliyorum...