Исключение: введите инициализатор типа 'system.data.sqlclient.sqlconnection'?

Я не мог понять, в чем проблема для этого исключения.

Инициализатор типа для 'System.Data.SqlClient.SqlConnection' выбрал исключение

Первая попытка: я использовал службу WCF для создания небольшого приложения. Он работает нормально, и я могу правильно использовать LINQ. Через 2 или 3 дня. Возможно, после того, как я закрою Visual Studio и снова загрузите проект. Появится исключение.

Вторая попытка тоже такая же. Я создаю еще один проект, и он работает нормально, пока я не сделаю что-то еще (я не изменяю никакого кода)

SQL Server работает нормально, и я могу без проблем подключиться через SQL Management Studio.

Щелчок по ошибке Debug приведет меня к строке подключения из файла linq.

В чем может быть проблема? Я попытался выполнить поиск, но не смог найти ответ, чтобы решить эту проблему.

Спасибо

Ответ 1

Это скорее всего означает, что в файле app.config есть ошибка, например. плохо сформированные XML или неожиданные элементы. Ошибка возникает из-за того, что статические поля внутри SqlConnection читаются из app.config, чтобы определить уровень детализации следа, как описано здесь: http://msdn.microsoft.com/en-us/library/ms254503.aspx

Ответ 2

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

<? xml version = "1.0" encoding = "utf-8"? >

< Конфигурация >

<AppSettings>

< add key = "value =" site "/" >

</AppSettings>

<configSections>

</configSections>

</Конфигурация >

Ответ 3

Проверьте, установлено ли у вас следующее исправление для Windows: KB2840628 - для .NET FW 4.0 (используйте панель управления Windows → Программы + функции и нажмите "просмотреть установленные обновления" ), и если вы попытаетесь удалить ее...

https://connect.microsoft.com/VisualStudio/feedback/details/793500/sqlclr-typeinitializationexception-in-sqlconnection-since-kb2840628

Он разрешил проблему для меня.

Ответ 4

В моем случае проблема заключалась в изменении имени тега в файле app.config по ошибке просто сравните файл app.config с другим старым.. Вы узнаете о проблеме ...

Ответ 5

Удалите app.config, а затем запустите программу

Ответ 6

Если у вас есть проект, содержащий пакеты NuGet для Oracle и SQL Server, это решение может помочь вам исправить эту ошибку.

Удалите оба этих пакета NuGet:

  • Oracle.ManagedDataAccess.Core
  • System.Data.SqlClient

Откройте ваш app.config и проверьте, есть ли в списке все еще зависимые записи сборки. Если вы это сделаете, удалите эти записи сейчас. Они могут выглядеть примерно так:

<dependentAssembly>
    <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.19.1" newVersion="2.0.19.1" />
</dependentAssembly>
<dependentAssembly>
    <assemblyIdentity name="System.Data.SqlClient" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.5.0.1" newVersion="4.5.0.1" />
</dependentAssembly>

Оставаясь в вашем файле app.config, удалите весь раздел Oracle Managed Data Access, если он существует (это может быть единственное, что вам нужно сделать, чтобы решить эту проблему, однако мы выполнили все шаги, перечисленные в этом решении). Если он у вас есть, он может выглядеть примерно так:

<oracle.manageddataaccess.client>
    <version number="*">
      <settings>
          <!-- your TNS_ADMIN value would be located here -->
      </settings>
      <dataSources>
        <dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " />
      </dataSources>
    </version>
</oracle.manageddataaccess.client>

Откройте файл packages.config и дважды проверьте, чтобы убедиться, что записи для пакетов Oracle и SQL Server по-прежнему не указаны в списке - их следует удалить, но это не помешает быть на 100% уверенным.

Сохраните ваш проект, а затем повторно добавьте пакеты NuGet.

Ответ 7

Я много читал об этой проблеме, но никто не упомянул о следующей причине этой ошибки.

Некоторые из наших пользователей, у которых была более старая версия VMWare View Client, которая была тогда обновлена ​​, теперь видят эту проблему.

Инициализатор типа для 'System.Data.SqlClient.SqlConnection' выбрал исключение

  • У пользователей, у которых была установлена ​​только старая версия клиента VMWare View Client, нет проблем.
  • У пользователей, у которых была только новая версия клиента VMWare View Client, нет проблем.
  • Но пользователи, у которых была старая версия VMWare View Client, но теперь обновлены, действительно имеют проблемы, и она продолжается, даже если мы удалим VMWare View Client, а затем установите новую версию.

Мы попытались переустановить .NET Framework и Visual Studio Tools для Office, но это ничего не исправить.

Мы еще не нашли исправления, но я надеюсь, что это поможет другим пользователям.

Btw, мы проверили наши app.config и web.config, и все они прекрасны (и отлично работают с остальными нашими пользователями).

Еще одно открытие:

  • Если у пользователя есть права локального администратора, эта проблема не возникает после обновления VMWare View Client.
  • Если у них нет прав локального администратора, проблема будет возникать.

Итак... мы застряли.

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

И я добавил загрузку try..catch в свой код и обнаружил, что исключение встречается в этой одной строке кода:

MikesDataContext dc = new MikesDataContext()

Итак, это действительно делает соединение, которое выдает исключение. Он не доходит до следующих строк кода, которые используют это соединение.

Ответ 8

извините за поздний ответ по этому вопросу, но после изучения этой проблемы в течение почти 3 дней подряд я решил поделиться своими результатами. У меня была та же ошибка, всплывающая в службах отчетов SQL Server, в частности на веб-портале после получения ошибок HTTP 503 Service Unavailable в моих браузерах.

Оказывается, что проблема была связана с обоими, с учетной записью службы, которая запускает экземпляр SSRS, плюс с учетной записью, которая подключается к базе данных, которая в моем случае была расположена на другом сервере, чем экземпляр отчетности. Я еще не смог точно определить, где именно проблема заключается в конфигурации и/или правах пользователя, т.е. Где именно учетные записи нуждаются в повышенных правах. В целом кажется, что основная проблема заключалась в том, что у учетной записи, под которой я запускал код веб-портала, не было достаточно прав для вызова типа System.Data.SQLClient.

TL; DR: проверьте ваши права пользователей! Надеюсь, это кому-нибудь поможет, у меня были долгие 3 дня, чтобы понять это.

Ответ 9

Решение, аналогичное упомянутому выше, но в моем случае это был тег applicationSettings в app.config, который нужно было удалить.

Ответ 10

У меня такая же ошибка. И я нахожу решение для этого путем изменения "app.config":

<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="O4E.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
    </sectionGroup>
  </configSections>
  <startup>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
  <applicationSettings>
    <O4E.Settings>
      <setting name="abc" serializeAs="String">
        <value>xyz</value>
      </setting>
    </O4E.Settings>
  </applicationSettings>
  <appSettings>
    <add key="" value=""/>
    <add key="" value=""/>
  </appSettings>
</configuration>