Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
410 / 261 / 25
Регистрация: 03.10.2011
Сообщений: 1,074
1

Варианты значения атрибута "Data Source" в строке подключения

12.02.2019, 22:45. Показов 1853. Ответов 11

Доброго времени суток.

Возникли небольшие трения с коллегами на тему: "какое значение лучше указывать в атрибуте "Data Source" строки подключения".
Меня пытаются убедить, что значение 127.0.0.1 (localhost), лучше для приложения, которое находится физически на той же машине, на которой крутится sql-server. Почему это так? Потому, что можно исключить обращение к серверу с локальной машины через сетевую карту.
Я же в своей практике старюсь использовать IP-адрес непосредственно самой машины. Подключение по localhost я в принципе видел только в учебных примерх. Кроме того, я считаю, что при использовании непосредственного IP-адреса можно расчитывать, что IP-адрес будет сопоставлен с localhost.
Подскажите насколько обосновано использование: ".. Data Source=127.0.0.1 .."?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2019, 22:45
Ответы с готовыми решениями:

Ошибка "Could not find source location to add method <...> "END." or INITIALIZATION not found in unit source"
Помогите пожалуйста какого значение ошибки Could not find source location to add method...

Ошибка "Data source name not found and no default driver specified"
ASP и ADO ошибка Data source name not found and no default driver specified /AllProds.asp, line 4...

Недопустимое значение ключа "data source"
Сделал оконное приложение. Хотел запустить без вижал студио. Выдает ошибку с длинным списком. Что...

Обновление источника данных и ошибка "Не удалось привести тип объекта "System.Data.DataView" к типу "System.Data.IDataReader"
Доброй ночи. При попытке обновления источника данных, выбрасывает следущую ошибку: &quot;Не удалось...

11
Администратор
Эксперт .NET
13411 / 10914 / 4487
Регистрация: 17.03.2014
Сообщений: 21,994
Записей в блоге: 1
13.02.2019, 01:45 2
_katon_, лучше использовать 127.0.0.1 потому что изменение IP адреса не поломает работоспобность программы. Кроме того видя данный адрес любой сразу поймет что речь идет о локальной машине. Далее насколько я понимаю работу TCP/IP обращение к машине через localhost/127.0.0.1 в самом деле идет быстрее потому что не требуется тратить время на определение что указанный адрес это в самом деле локальный адрес. Задержка небольшая, но она есть. Соотвественно зачем вносить лишние задержки?
1
1517 / 1081 / 152
Регистрация: 23.07.2010
Сообщений: 6,004
13.02.2019, 09:58 3
есть мнение, что если localhost - то будут заюзаны named pipes
2
410 / 261 / 25
Регистрация: 03.10.2011
Сообщений: 1,074
13.02.2019, 10:41  [ТС] 4
Тут бы какие-то пруфы увидеть. Я ничего такого не нашел с ходу.

Добавлено через 57 секунд
точнее даже не пруфы, а какую-то статейку, где это детально рассматривается. Можно и на английском и на русском.
0
3174 / 1920 / 680
Регистрация: 02.06.2013
Сообщений: 4,707
13.02.2019, 10:57 5
Лучший ответ Сообщение было отмечено pincet как решение

Решение

Есть три протокола, по которым можно установить соединение - TCP/IP, Named Pipes и Shared Memory.
Первые два универсальны, последний только для локальных соединений. Он оптимизирован именно для локального использования и не требует использования сетевых стеков, т.е. гораздо эффективнее универсальных.
Так вот, указывая явно IP-адрес вместо имени, вы не получите соединение по Shared Memory, даже если укажете префикс протокола.
1
1517 / 1081 / 152
Регистрация: 23.07.2010
Сообщений: 6,004
13.02.2019, 11:25 6
однако InMemory для старый версий (а овермного сидят на 2012, а то и на 2008 R2) - недоступен. Или заблуждаюсь?
0
3174 / 1920 / 680
Регистрация: 02.06.2013
Сообщений: 4,707
13.02.2019, 11:36 7
pincet, In-Memory и SharedMemory - абсолютно разные вещи никак между собой несвязанные.
1
410 / 261 / 25
Регистрация: 03.10.2011
Сообщений: 1,074
13.02.2019, 16:56  [ТС] 8
Цитата Сообщение от invm Посмотреть сообщение
Так вот, указывая явно IP-адрес вместо имени, вы не получите соединение по Shared Memory, даже если укажете префикс протокола.
Вопрос может и дурацкий но лучше уточнить: Речь идет о имени чего? Экземпляра сервера?
0
3174 / 1920 / 680
Регистрация: 02.06.2013
Сообщений: 4,707
13.02.2019, 17:06 9
Цитата Сообщение от _katon_ Посмотреть сообщение
Речь идет о имени чего? Экземпляра сервера?
Экземпляра или, возможно, алиаса.
Если нужнен локальный сервер, то можно указать просто . или .\Экземпляр
0
1517 / 1081 / 152
Регистрация: 23.07.2010
Сообщений: 6,004
14.02.2019, 09:45 10
тут вопрос был IMHO в другом. на одном ip могут жить более одного экземпляра сервера. ТС спрашивал именно что указывать для клиента, живущего на одном сервере с сервером данных - 127.0.0.1 или localhost
0
410 / 261 / 25
Регистрация: 03.10.2011
Сообщений: 1,074
14.02.2019, 10:24  [ТС] 11
Цитата Сообщение от pincet Посмотреть сообщение
ТС спрашивал именно что указывать для клиента, живущего на одном сервере с сервером данных - 127.0.0.1 или localhost
Отнюдь. 127.0.0.1(locolhost) или IP-addres. (если sql-server и клиент на одной машине, естественно)
я вижу сейчас это так:
1. "." (the best из-за SharedMemory);
2. 127.0.0.1 (localhost);
3. IP-Address;
0
1517 / 1081 / 152
Регистрация: 23.07.2010
Сообщений: 6,004
14.02.2019, 12:06 12
отвлекли и отправил неполное сообщение
имел ввиду 127.0.0.1 и ip из ipconfig -all
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.02.2019, 12:06

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Даны три слова - "мама", "мыла", "раму". Задача - напечатать всевозможные варианты построения слов
Я записал код, однако эту часть надо автоматизировать, поможете? КОД: } #include &lt;iostream&gt;...

Дан массив строк: "red", "green", "black", "white", "blue". Запишите в файл элементы массива построчно (в новой строке)
пишу так но не помогает: static void Main(string args) { string...

Как добраться до значения атрибута name [Display(Name = "Id")]
Использую модель как в книге Фримена Передаю на на View @model IQueryable&lt;Product&gt; каким...

Заполнение атрибута "marks" всех кортежей таблицы "example" случайными числами используя ADO Table
Написать программу заполнения атрибута &lt;&lt; marks &gt;&gt; всех кортежей таблицы &lt;&lt; example &gt;&gt; случайными...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.