Как определить локальное соединение (localhost или 127.0.0.1) или это удаленное соединение (другое устройство в локальной области), если у меня есть объект SqlConnection?SqlConnection - удаленное или локальное соединение?
ответ
Самый простой способ, с помощью которого я знаю, - проверить строку соединения непосредственно, чтобы увидеть, содержит ли она слова localhost, 127.0.0.1, (localhost), "." или имя локальной машины. Проверьте, с чего начать, поскольку их может быть локальным именованным экземпляром Sql.
Вы можете использовать библиотеку System.Environment для получения текущего имени машины. Вы также можете использовать библиотеку ConnectionBuilder в .Net для извлечения данных без использования полного синтаксического анализа строк. Подробности об этом можно найти here
Я думаю, что это хорошее решение для меня. Спасибо, Диаго. – avishnyakov
Вы можете получить строку соединения из objjct SqlConnection.
string s = connection.ConnectionString;
и проверьте источник данных или элемент сервера этой строки.
Редактировать: Образец образца.
Я думаю, что эта функция должна работать (не проверено в любом случае).
private bool CheckConnectionStringLocalOrRemote(string connectionString) {
//Local machine
IPHostEntry entry = Dns.GetHostByAddress("127.0.0.1");
IPAddress[] addresses = entry.AddressList;
String[] aliases = entry.Aliases;
string hostName = entry.HostName;
if(connectionString.Contains(hostName))
return true;
foreach (IPAddress address in addresses) {
if (connectionString.Contains(address.ToString())) {
return true;
}
}
foreach (string alias in aliases) {
if (connectionString.Contains(alias))
return true;
}
return false;
}
Ps: обязательно добавьте инструкцию using в пространство имен System.Net.
Ну, это может быть "127.0.0.1", "localhost" , «HOME» или «WORK» и т. Д., И все они являются псевдонимами на локальной машине :( – avishnyakov
Вы можете проверить SqlConnection.ConnectionString
свойства, чтобы увидеть, если у него есть что-то вроде (local)
или .
в его server
части, но это не очень надежно из %systemroot%\system32\drivers\etc\hosts' and various other SQL Aliases, whereby
Foo-srv` вполне может быть локальным окном.
Задать SQL, используя соединение с утверждением
SELECT @@SERVERNAME
затем verifiy, если это совпадает с именем клиентской машины с Environment.MachineName, по модулю имя экземпляра SQL
А как насчет псевдонима сервера mssql? - http: // msdn .microsoft.com/en-us/library/ms188635.aspx Работает ли ваш путь, если я использую псевдоним? – avishnyakov
Должен работать: @@ servername устанавливается во время установки и является именем машины/кластера. Будьте в курсе что он представляет кластер, вы можете получить доступ только к кластерным дискам (например, c $ недоступен) –
Я проверяю его, и он работает хорошо. Действительно хорошее решение! – avishnyakov
- 1. Локальное обслуживание или удаленное обслуживание?
- 2. Git stash command - локальное репо или удаленное?
- 3. Удаленное соединение JMX
- 4. Удаленное соединение mysql
- 5. Удаленное соединение с mongodb
- 6. Mysql удаленное соединение
- 7. Удаленное соединение Oracle
- 8. Удаленное соединение WMI
- 9. Удаленное соединение Redis медленное
- 10. Как создать удаленное соединение?
- 11. Удаленное соединение mysql
- 12. Локальное или удаленное выполнение сценария powershell с общими параметрами
- 13. Непредсказуемое локальное соединение
- 14. Удаленное соединение MySQL и Qt
- 15. Bluetooth удаленное соединение с Android
- 16. Удаленное соединение Mongo через Pymongo
- 17. JConsole удаленное соединение james server
- 18. Удаленное соединение Sql server 2000
- 19. Удаленное соединение neo4j Разрешение отклонено
- 20. узел и удаленное соединение mongohq
- 21. Удаленное соединение SQL в php
- 22. Удаленное соединение с C# .NET
- 23. Amazon EC2: Удаленное соединение PostgreSQL
- 24. Удаленное соединение с сервером MySQL?
- 25. удаленное соединение базы данных оракула
- 26. MySql DB удаленное соединение медленное
- 27. Удаленное соединение ssh изнутри Emacs
- 28. Не удалось создать удаленное соединение
- 29. Удаленное соединение MySQL с PHP
- 30. Медленное удаленное соединение с MySQL
почему ты хочешь сделать это? – Matej
Потому что я хочу создать копию копии db моего приложения .net. Если у меня есть локальное соединение mssql, я могу выбрать локальный путь к файлу («c:/tmp /», «d:/someolder» и т. Д.) И путь к локальной сети («\\ 192.168.0.13 \ backup»). Но если у меня есть дистанционное соединение, я должен выбрать только путь к локальной области. Возможно, у меня был путь? – avishnyakov
См. Также: http://stackoverflow.com/questions/14197103/check-if-a-sql-server-instance-is-on-local-computer – stakx