Не удается подключиться к SQL Azure из приложения, но можно из SSMS - PullRequest
9 голосов
/ 03 июня 2011

У меня настроен экземпляр SQL Azure, и я могу без проблем подключиться к нему из SQL Server Management Studio.Однако, когда мое приложение пытается подключиться, возникает эта ошибка:

Произошла ошибка, связанная с сетью или экземпляром, при установлении соединения с SQL Server.Сервер не найден или не был доступен.Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений.(поставщик: сетевые интерфейсы SQL, ошибка: 26 - ошибка при поиске указанного сервера / экземпляра)

Я использую Entity Framework Code First 4.1 и ASP.NET MVC 3. Изначально мое приложение было успешно разработано с использованиемSQL Express.Сейчас я использую этот учебник, чтобы переместить базу данных в SQL Azure (приложение тоже будет перемещаться туда, но разработка все еще продолжается).

Поскольку SSMS работает нормально, я думаю,это сводится к web.config?Я пробовал каждую комбинацию имени строки подключения:

<connectionStrings>
    <add name="ApplicationServices" connectionString="Server=tcp:suppressed.database.windows.net,1433;Database=EventsTest;User ID=suppressed;Password=suppressed;Trusted_Connection=False;Encrypt=True;PersistSecurityInfo=True;" providerName="System.Data.SqlClient" />
    <add name="DomainContext" connectionString="Server=tcp:suppressed.database.windows.net,1433;Database=EventsTest;User ID=suppressed;Password=suppressed;Trusted_Connection=False;Encrypt=True;PersistSecurityInfo=True;" providerName="System.Data.SqlClient" />
    <add name="Events.DataAccess.EntityFramework.DomainContext" connectionString="Server=tcp:suppressed.database.windows.net,1433;Database=EventsTest;User ID=suppressed;Password=suppressed;Trusted_Connection=False;Encrypt=True;PersistSecurityInfo=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

Я также пробовал Wireshark, о котором я очень мало знаю, но, кажется, предлагает некоторую активность (192.168.1.101 - моя машина, 207.46.63.13 -сервер SQL Azure):

1   0.000000    192.168.1.101   207.46.63.13    TCP [TCP segment of a reassembled PDU]
2   0.116269    207.46.63.13    192.168.1.101   TCP ms-sql-s > bmc-net-adm [ACK] Seq=1 Ack=2 Win=8444 Len=0
3   2.091928    192.168.1.101   207.46.63.13    TCP [TCP segment of a reassembled PDU]
4   2.209371    207.46.63.13    192.168.1.101   TCP ms-sql-s > kmscontrol [ACK] Seq=1 Ack=2 Win=5969 Len=0
5   2.352974    192.168.1.101   207.46.63.13    TCP [TCP segment of a reassembled PDU]
6   2.469444    207.46.63.13    192.168.1.101   TCP ms-sql-s > vaultbase [ACK] Seq=1 Ack=2 Win=8625 Len=0

Есть идеи, что может произойти?

Ответы [ 3 ]

2 голосов
/ 05 июня 2011

Я ускорил отладку в классе DomainContext : DbContext и обнаружил, что строка подключения всегда указывала на SQL Express, хотя в web.config были все эти записи, указывающие в другом месте.Затем я понял, что проблема заключается в параметре, передаваемом базовому классу в конструкторе.

Где-то вдоль линии я думал, что этот параметр является именем базы данных, которая будет использоваться.Теперь я понимаю, что это имя записи строки подключения (или самой строки подключения).

1 голос
/ 04 июня 2011

Я явно устанавливаю строку подключения при создании экземпляра моего DBContext:

public class DB: DbContext ..

var databaseConnectionString = 
  "Server=tcp:private.database.windows.net;Database=privateDB;UID=private@private;Password=private;Trusted_Connection=False;Encrypt=True"

var db = new DB(databaseConnectionString);
0 голосов
/ 03 июня 2011

найдите IP вашего компьютера и создайте правило в брандмауэре SQL Azure, чтобы пропустить его. Вероятно, он заблокирован.

Подробнее:

  1. Перейдите на панель инструментов Azure.

  2. Нажмите База данных

  3. Нажмите на свою учетную запись хранения, затем сервер БД

  4. Нажмите Правила межсетевого экрана, затем Добавить

  5. Просто введите свой IP в качестве диапазона IP-адресов Начало и Окончание диапазона IP-адресов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...