The underlying provider failed on open перевод

Хотите улучшить этот вопрос? Переформулируйте вопрос, чтобы он соответствовал тематике «Stack Overflow на русском».

Закрыт 2 года назад .

У меня есть приложение-словарь, которое я написал на своём PC. Я запустил его на ноутбуке и всё отлично работает, я добавлял слова в БД.

После этого я копирую файлы mdf и ldf на свой PC. Хочу запустить своё приложение и получаю ошибку: The underlying provider failed on Open Подскажите, пожалуйста, из-за чего она происходит ? И как её побороть ?

1 ответ 1

Не рекомендуется переносить базы данных SQL Server в виде файлов mdf и ldf. Еще хуже – копировать их с работающего SQL Server’а.

Предпочтительный вариант – сделать бэкап на одном компьютере и потом восстановить его на другом.

Если все же хотите переносить файлами, вам стоит придерживаться такой последовательности:

  1. Отключите базу данных на машине, с которой копируете файлы. Если просто копируете – достаточно перевести базу в OFFLINE, если переносите – делаете отключение базы (detach).
  2. Переносите файлы
  3. На машине, куда переносите, делаете подключение базы данных (attach).

При этом надо учитывать, что версия и выпуск SQL Server должна быть не ниже той, с которой файлы скопированы, если мажорная версия будет ниже, база не подключится точно, если выпуск будет ниже – не подключится, если в базе есть объекты, доступные только в более старшем выпуске.

Я использовал .mdf для подключения к database и entityClient . Теперь я хочу изменить строку подключения так, чтобы не было файла .mdf .

Правильно ли соответствует connectionString ?

Читайте также:  Программы для начертательной геометрии на компьютере

Потому что я всегда получаю ошибку:

Недопустимый базовый поставщик при открытии

У меня была эта ошибка и я нашел несколько решений:

Глядя на вашу строку подключения, она выглядит действительной. Я нашел этот пост в блоге, проблема в том, что они использовали Integrated Security. Если вы работаете в IIS, вашему пользователю IIS необходим доступ к базе данных.

Если вы используете Entity Framework с транзакциями, автоматически открывается Entity Framework и закрывает соединение с каждым вызовом базы данных. Поэтому при использовании транзакций вы пытаетесь распространить транзакцию на несколько соединений. Это поднимается до MSDTC.

Изменение моего кода на следующее исправлено:

context.Connection.Open() не помог решить мою проблему, поэтому я попытался включить "Разрешить удаленные клиенты" в конфигурации DTC, не более ошибок.

В Windows 7 вы можете открыть конфигурацию DTC, запустив dcomcnfg, Службы компонентов → Компьютеры → Мой компьютер → Координатор распределенных транзакций → Щелкните правой кнопкой мыши на Local DTC → Безопасность.

Я обнаружил, что проблема в том, что у меня был путь к серверу в строке подключения в одном из этих вариантов:

Когда я действительно должен был:

По какой-то причине я получил ошибку, когда ему было трудно найти экземпляр SQL.

Вы должны увидеть innerException, чтобы увидеть, какая внутренняя причина метания ошибка есть.

В моем случае исходная ошибка:

Невозможно открыть физический файл "D:Projects2xCUxCUApp_DataxCUData_log.ldf". Ошибка операционной системы 5: "5 (Доступ запрещен.)". Не удалось выполнить попытку присоединения базы данных с автоименованием для файла D:Projects2xCUxCUApp_DataxCUData.mdf. База данных с тем же именем существует или указанный файл не может быть открыт или находится на общем ресурсе UNC.

который разрешен путем предоставления полного разрешения текущему пользователю для доступа к связанным файлам mdf и ldf с использованием свойств файлов.

Читайте также:  Exiting nvidia boot agent

Это обычная проблема. Даже я столкнулся с этой проблемой. На машине разработки, настроенной с проверкой подлинности Windows, она отлично работает:

После размещения в IIS с той же конфигурацией я получил эту ошибку:

Недопустимый базовый поставщик при открытии

Было решено изменить connectionString в файле конфигурации:

Другие распространенные ошибки могут быть:

  • Служба базы данных может быть остановлена ​​
  • Атрибуты источника данных, указывающие на локальную базу данных с проверкой подлинности Windows и размещенные в IIS
  • Имя пользователя и пароль могут быть неправильными.

Когда вы получаете это исключение, обязательно разворачивайте детали и просматривайте внутренние детали исключений, так как они будут содержать подробную информацию о том, почему логин завершился неудачно. В моем случае строка подключения содержала пользователя, который не имел доступа к моей базе данных.

Независимо от того, используете ли вы интегрированную безопасность (контекст зарегистрированного пользователя Windows) или отдельную учетную запись SQL, убедитесь, что у пользователя есть соответствующий доступ в разделе "Безопасность" для базы данных, к которой вы пытаетесь получить доступ, чтобы предотвратить эту проблему.

Introduction

Error Description

<"A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible.
Verify that the instance name is correct and that SQL Server is configured to allow remote connections.
(provider: Named Pipes Provider, error: 40 – Could not open a connection to SQL Server)">

dcomcnfg" then click OK button.

Step 4 : Now you will see Local DTC Properties window and click on Security tab, under Transaction Manager Communication section tick option Allow Inbound and Allow Outbound and then finally click on OK button.

Читайте также:  Mikrotik user manager настройка

if above Four steps does not work for you then I am throwing shade of my previous article on error Could not open a connection to SQL Server which explains step by step with great description, I am listing main steps here also.

  1. Check for SQL Server (MSSQLSERVER) service whether it’s running or
  2. Check for SQL Server Browser service to running fine.
  3. Check for Aliases.
  4. Check for SQL Server Default Port 1433 is existing or not.
  5. Check for Allow remote connections to this server.
  6. Ping for your IP Host Address whether it is responding or not.
  7. You can check for Windows log detail tying in quick window EVENTVWR to investigate into issue very closely.

Observations

No 1: Server Machine While in Sleep Mode

No 2: Low Internet Accessibility

Summary

I have provided above two approaches to resolve the error The underlying provider failed on open, if you still doesn’t resolve this issue, you can write your error with detail so can help you accordingly.

Оцените статью
ПК Знаток
Добавить комментарий

Adblock
detector