Bir veritabanının gerçek coğrafi konumunu nasıl bilebilirim?

SQL Server veritabanımızın coğrafi olarak C# kodu ile konumlandırılması için görevlendirildim çünkü fiziksel ve siber zararlardan korumak için veritabanımızın sık sık değiştirilmesi nedeniyle zaman zaman değişebilir. Bu mümkün mü yoksa patronumun başka bir hayali şimdiden teşekkürler.

9
Erken yanıt vermiş olabilirim ancak Azure'un dB'nizi barındırmak için kullanıp kullanmadığınızı açıklayabilir misiniz? ya da başka bir bulut sağlayıcısı mı?
katma yazar Jeremy Thompson, kaynak
Veritabanının neden bu kadar sık ​​taşındığını merak etmeliyim? ... yasadışı bir şey yapmıyorsanız ... sunucuyu güvenli bir sunucu odasına koymak çok daha güvenli olacak ... çünkü muhtemelen sunucuyu dns adresi ya da buna benzer genel olarak karşı karşıya gelen bir çağrıyla tanımlamak, bunu siber zarardan korumaz. Dahası, sunucu zamanınızı ve saatinizi yeniden yerleştirme eylemi, sunucunuzu güvenilir ve güvenli bir konuma sahip olmaktan çok daha zayıf bir nokta olabilir.
katma yazar Seph, kaynak
Sormalıyım - neden? Veritabanının fiziksel konumu neden önemlidir?
katma yazar jro, kaynak
onun yasadışı değil, iyi bir sebep için;)
katma yazar Allan Chua, kaynak
Belki de bu sizin aradığınız şeydir: stackoverflow.com/ sorular/716748/c-ters-ip-alan-kontrol
katma yazar John Donn, kaynak

8 cevap

7
katma
- Ama o zaman bir USB cihazını o zaman bulutuna takamazsa
katma yazar Jeremy Thompson, kaynak
+1 aygıtı cool, ama bir CLS Sproc xp_cmdshell önerisi gibi masmavi havada uçmayacak (ama OP onun azure açıklığa kavuşmadı)
katma yazar Jeremy Thompson, kaynak
+1, bir cep telefonu satın almanızı sağlar :)
katma yazar Moo-Juice, kaynak
Bu fikri sevdim dostum;)
katma yazar Allan Chua, kaynak
@JeremyThompson - evet, bulut olup olmadığı belli değil. Açıkçası bu gerçekten işe yaramaz.
katma yazar JNK, kaynak

Bir iPhone/Android telefon satın alın ve üzerinde veritabanı olan makinenin üst kısmına sellotaped var. GPS API'sine bakması ve telefonun HTTPS üzerinden bir tür JSON/SOAP API'sini kullanarak (güvenlik amacıyla) bağlı olduğu veritabanına pozisyonunu yüklemek için hızlı bir uygulama yazın.

Daha sonra C# 'yı kullandığınız yerden GPS bilgilerine erişebilirsiniz.

Düzenle

Working with the GPS on Mono/iPhone: http://drdobbs.com/mobility/222600599

Example code, GPS on Mono/Android: https://github.com/gshackles/Sample-Projects/blob/master/MonoDroid/MonoDroidSamples/MonoDroidSamples/DemoActivities/LocationDemo/LocationActivity.cs

6
katma
@DavidePiras Muhtemelen mümkün olsa da, ciddi bir cevap olmadığını belirtti. Ama, neden bu kadar çok donanım satın almalı? Sadece bir Android telefon ... Mono C# 'da uygulamayı kuramsal olarak yazabilirsin. Veritabanı sunucusu zaten var.
katma yazar Moo-Juice, kaynak
@gbn bu GPS’i nasıl kullanacağımı bana nasıl anlatabilirsin?
katma yazar Allan Chua, kaynak
@ Moo-Juice Bunun iyi bir fikir olduğunu görüyorum, ama sade metin ve kod kullanımıyla buradan kaçış var mı?
katma yazar Allan Chua, kaynak
Fakat bunu mevcut konumunun veritabanından yanıtlamak için kullanabilir miyim?
katma yazar Allan Chua, kaynak
Her ne kadar yanakta olsa da, bu dikkate değerdir. Yer mi istiyorsun? GPS kullan. IP güvenilir değil.
katma yazar gbn, kaynak
Peki bu daha doğru olabilirdi, fakat veri merkezi iyi bir şekilde izole edildiğinde ve telefonlarda sinyal yoksa ne olur? ayrıca satın almak için bolca donanım gerektirir ...
katma yazar Davide Piras, kaynak

En basit çözüm bir DNS araması yapmak, ardından Cody'nin önerdiği gibi bir IP konum hizmetini kullanmaktır. Bunu dene:

var foo = Dns.GetHostEntry("database.windows.net");

IP adresinizi aldıktan sonra, http: //www.iplocationfinder gibi bir şey yüklemeniz gerekir. IP konum veritabanı için ödeme yapmak istemediğiniz sürece, bir HttpWebRequest kullanarak com/65.55.23.107 . HttpWebRequest'e bir yanıt verdikten sonra, bunun yerine konum adını veya enlem ve boylamı ayrıştırmak için normal bir ifade kullanabilirsiniz.

6
katma

Şirketinizde bir gecede taşınan çok sayıda sunucunuz var mı yoksa bu bir bulut db kurulumu için mi? IP adresi, muhtemelen hiçbir başlangıç ​​noktasından yanlış temel bir yanlıştır.

4
katma
Bunu sana iyi bir tavsiye + 1 olarak kabul edeceğim
katma yazar Allan Chua, kaynak

Davide Piras'ın belirttiği gibi, örneğin bu siteyi kullanabilirsiniz: http://ip-lookup.net/ DB Sunucunuzun IP Adresi'dir ve Çıktıyı belki de Düzenli Expresion veya http: //htmlagilitypack.codeplex kullanarak alabilirsiniz. com/.

Bu sadece bir sorun olmamalı diye düşündüğünüz DB Server IP adresi, Bağlantı Dizesi için IP'ye ihtiyacınız olduğunda çalışır.

Bir WebBrowser denetimi kullanmak için webbrowser1.navigate ("http://ip-lookup.net/") yapın; daha:

HtmlElementCollection elc = this.webBrowser1.Document.GetElementsByTagName("input");
            foreach (HtmlElement el in elc)
            {
                if (el.GetAttribute("type").Equals("text") && el.GetAttribute("name").Equals("ip"))
                {
                    el.InnerText = "Server IP";
                }
            }

Sonraki :

HtmlElement form = webBrowser1.Document.GetElementById("form_single_IP");
            if (form != null)
                form.InvokeMember("submit");
             //Submit the form

and try to filter the output because im not very good using Regex .You can capture the Output by using webbrowser1.DocumentText;

2
katma
@AllanChua ı Soruyu güncelle
katma yazar Burimi, kaynak
@AllanChua Hayır Veritabanı Sunucusu IP Adresi almak ve bu tür bir Web Sitesi (Hizmetler) kullanarak DataBase sunucusunun Coğrafi Konumunu (çok kesin değil ama çalışır) bulabilirsiniz.
katma yazar Burimi, kaynak
Bu, masmavi müşterilerin örnek bir bağlantı dizesidir jd39urj4j4.database.windows.net
katma yazar Allan Chua, kaynak
Biriniz bir takma adı olan veritabanına bağlantı dizesi olduğunda bunu nasıl yapacağımı bana nasıl anlatabilirsin?
katma yazar Allan Chua, kaynak
Ama bu benim için mi? Veritabanının bulunduğu sunucu için değil mi?
katma yazar Allan Chua, kaynak

Neden konumu size anlatmak için veritabanını kullanmıyorsunuz? Ne demek istediğimi açıklığa kavuşturmak için:

Using SQL CLR Stored Procedure To Track IP Address - but make the CLR sproc return the ipaddress of the server its hosted on.

I saw the azure connection string you mentioned to Cody and thought these would be a handy links: http://blogs.msdn.com/b/windowsazure/archive/2011/07/06/windows-azure-deployments-and-the-virtual-ip-address.aspx

Dağıtılmış uygulamadan Azure genel IP adresini al

1
katma

Saat dilimini belirlemek muhtemelen SQL Server'dan yapabileceğiniz en iyisidir, ancak açıklamanıza bağlı olarak bu sizin için yeterli olabilir. Sunucunun bulunduğu saat diliminin GMT ofsetini almak için bu sorguyu kullanabilirsiniz:

SELECT DATEDIFF(hh, GETUTCDATE(), GETDATE()) AS ServerTimeZone

Bu sonuca göre, zaman dilimi kısaltmasını, yani EST , CST vb. Döndürmek için bazı mantığı kolayca ekleyebilirsiniz. Bunun çok fazla olmadığını biliyorum, ama umarım yardımcı olur .

1
katma
Evet .. bu da gadget'lar tarafından döndürülen gps pozisyonunun doğru olup olmadığını kontrol etmede yardımcı olur :)
katma yazar Allan Chua, kaynak

Birisi zaten fiziksel olarak sunucuyu taşıyorsa, neden DB'ye karşılık gelen konumu yazan bir komut dosyası yazmıyorsunuz? Makine başladığında, o aracı otomatik olarak başlat ve "hareket ettir" seçeneğinin bir konum seçmesini sağlayın.

0
katma