Исключение: инициализатор типа для 'system.data.sqlclient.sqlconnection'? - PullRequest
10 голосов
/ 03 августа 2011

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

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

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

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

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

Aнажмите на кнопку «Отладка» и приведите меня к строке подключения из файла linq.

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

Спасибо

Ответы [ 10 ]

27 голосов
/ 07 сентября 2011

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

1 голос
/ 17 июля 2019

У меня такая же ошибка.И я нахожу решение для этого путем изменения "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>

Примечание: строка [supportRuntime version = "v2.0.50727"] является наиболее важной.

1 голос
/ 24 мая 2019

Если у вас есть проект, содержащий пакеты 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.

1 голос
/ 20 ноября 2016

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

1 голос
/ 28 марта 2015

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

1 голос
/ 12 августа 2013

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

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

Это решило проблему для меня.

1 голос
/ 05 июля 2012

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

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

0 голосов
/ 03 июня 2019

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

0 голосов
/ 20 сентября 2018

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

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

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

0 голосов
/ 25 апреля 2016

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

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

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

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

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

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

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

Еще одно обнаружение:

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

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

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

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

MikesDataContext dc = new MikesDataContext()

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

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