Попытка чтения или записи защищенной памяти при подключении к SQL Server

это ошибка, которую я получаю:

не удалось подключиться к серверу MYSERVER. (Microsoft.От SQLServer.ConnectionInfo)

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

попытка чтения или записи в защищенную память. Это часто указывает на то, что другая память повреждена. (Система.Данные)

Я получал эту ошибку при использовании entity framework для запуска любого запроса, например, любой строки:

var AllRows = context.MyTableRows.ToList();

Я думал, что это было проблема EF, но затем я попытался использовать редактор Transact Sql в VS2012 для подключения к базе данных, чтобы я мог запросить его, и я получаю ту же ошибку при попытке подключения.

но у меня есть другие, не Microsoft querying tools, которые могут подключаться к базе данных и запрашивать ее, не вызывая ошибки. Поэтому я думаю, что проблема где-то в драйверах Microsoft, или системы.Данные.SqlClient, но я не могу понять, в чем проблема.

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

обновление: трассировка стека довольно длинная и выглядит так:

at SNIAddProvider(SNI_Conn* , ProviderNum , Void* )
at SNINativeMethodWrapper.SNIAddProvider(SafeHandle pConn, ProviderEnum providerEnum, UInt32& info)
at System.Data.SqlClient.TdsParser.ConsumePreLoginHandshake(Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean& marsCapable)
at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover)
at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover)
at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout)
at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.Open()
at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure)
at System.Data.EntityClient.EntityConnection.Open()
at System.Data.Objects.ObjectContext.EnsureConnection()
at System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
at System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source)
at System.Data.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__2[TResult](IEnumerable`1 sequence)
at System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable`1 query, Expression queryRoot)
at System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[S](Expression expression)
at System.Data.Entity.Internal.Linq.DbQueryProvider.Execute[TResult](Expression expression)

...строки в моем приложении, которые пытаются выполнить запрос EF...

4 ответов


У меня была та же проблема после обновления с .NET 4.5 до .NET 4.5.1. Как только я попытался получить доступ к чему-либо с помощью Entity Framework, я получил эту ошибку. Что исправило это для меня, это запуск этой команды (в командной строке администратора):

netsh winsock reset

и затем перезапустите.


ну, через неделю, вырывая мои волосы и пробуя всевозможные отчаянные меры, я, наконец, смог исправить это, удалив программу, которая отслеживала сетевой трафик (Cucusoft Net Guard). Эта программа, кажется, вмешивается в что-то в пакетном трафике, и это вызывает мою ошибку. Удаление этого приложения исправила проблему, но, как ни странно, выключение его не сделал. Он должен был установить фильтр низкого уровня, который был на месте и вызвал проблему, даже когда приложение не было бегущий.


Per этой, " в любом случае, решение состояло в том, чтобы включить оптимизацию JIT. Другими словами, в Visual Studio 2008 выберите "инструменты", а затем"Параметры". Выберите "отладка" и "общие"и найдите строку с надписью" подавить оптимизацию JIT при загрузке модуля". Этот вид гарантирует, что отладчик и скомпилированный JIT-код не выходят из синхронизации, потому что JIT-компилятор является таким супер-пупер-оптимизатором вашего кода. Это сработало."

проверю. Это не работает, попробуйте подключиться к базе данных с помощью SQL Server Management Studio. Если вы можете, ошибка, вероятно, связана с Visual Studio.


У меня такая же проблема с моей SQL Server 2014 Express Edition при подключении к удаленному sql server.

попытка чтения или записи в защищенную память. Это часто указывает на то, что другая память повреждена. (Система.Данные)

Я обновился до .net frame work form 4.5 до 4.5.1 после обновления мне не удалось подключиться к удаленному sql server. Теперь я удалил работу фрейма 4.5.1, и теперь он работает нормально.