У меня есть программа, которая подключается к SQL экземпляру базы данных сервера по умолчанию. Я подключаюсь к базе данных, используя Entity Framework, и программное обеспечение теперь используется как производственное программное обеспечение - оно очень хорошо поддерживает мой бизнес. Это платная версия SQL Сервер, работающий на Windows Server 2012.
Я проверил тот же код из git дома и надеюсь работать на том же программном обеспечении дома. Я установил SQL Сервер Express на своем P C (и фактически, для целей тестирования на втором P C в сети). Я использую строку подключения, непосредственно скопированную из SQL Обозреватель объектов сервера:
@"Data Source=TSORT\SQLEXPRESS;Initial Catalog=CN2;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";
В моем производственном программном обеспечении строка подключения создается из файла настроек, но я прибег к жесткому кодированию для цели тестирования.
Моя процедура установки успешно создает базу данных дома на моем SQL Server Express именованном экземпляре. Я вижу базу данных и таблицы, включая таблицу __MigrationHistory
, которая содержит правильную ревизию.
Однако при запуске этого кода:
CN2.Data.Model.CN2Context context = new Data.Model.CN2Context(builder.ConnectionString);
context.Database.Delete();
context.Database.Create();
var dbMigrator = new System.Data.Entity.Migrations.DbMigrator(new AJSoft.CN2.Model.Migrations.Configuration());
dbMigrator.Update();
context.SaveChanges();
И когда я впоследствии пытаюсь подключиться к базе данных, используя ту же строку подключения, я получаю известную ошибку generi c :
При установлении соединения с SQL Сервером произошла ошибка c, связанная с сетью или спецификацией экземпляра. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Сервер настроен для разрешения удаленных подключений. (поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть соединение с SQL сервером)
Я проверил, что именованные каналы и TCP-соединения включены локально и в сети. Когда я попытался сделать это с базой данных на моем удаленном компьютере, я даже на мгновение прибегнул к выключению брандмауэра с , но без улучшения. Очевидно, что существует какая-то связь, потому что мои пустые структуры баз данных правильно созданы.
Основное различие на работе (SQL Сервер) и дома (SQL Сервер Express) заключается в том, что на работе я использую экземпляр по умолчанию, а дома использую именованный экземпляр (COMPUTERNAME\SQLEXPRESS
). Все клиенты P C Windows 10 и постоянно обновляются.
Это явно невероятно расстраивает, так как это означает, что я не могу работать с программным обеспечением на моем домашнем компьютере P C. Любые советы приветствуются.
Редактировать: Для справки: строка подключения, которую я использую в моей отладочной сборке на работе (без проблем):
Для справки, строка подключения, которую я использую для моей отладочной сборки в моей доменной среде на работе:
"Data Source=ROHAN;Initial Catalog=\"CN2 Test\";Integrated Security=True;Connect Timeout=10;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
Где ROHAN - это, очевидно, имя моего сервера, и как вы видите, используется экземпляр по умолчанию.
РЕДАКТИРОВАТЬ: кажется, у меня есть более фундаментальная проблема где-то в моем коде. Я получаю точно ту же проблему, указав LocalDb - база данных создана, но как только она была создана, я не могу подключиться к ней снова. Я продолжу расследование. До этого я использую TeamViewer для разработки из дома.