SQL Server CE - внутренняя ошибка: невозможно открыть область общей памяти - PullRequest
5 голосов
/ 03 апреля 2010

У меня есть база данных SQL Server CE, которая отлично работает в dev, но при установке на клиенте возникает проблема.

  • Зависимости SQL Server CE 3.5 копируются как часть развертывания.
  • Целевым компьютером является чистый 32-разрядный образ Windows 7 Ultimate.

Сообщение об исключении в журнале событий:

Message: Internal error: Cannot open the shared memory region. 
Stack Trace: at System.Data.SqlServerCe.SqlCeConnection.ProcessResults(Int32 hr) at
System.Data.SqlServerCe.SqlCeConnection.Open(Boolean silent) at
System.Data.SqlServerCe.SqlCeConnection.Open() at
System.Data.Linq.SqlClient.SqlConnectionManager.UseConnection(IConnectionUser user) at
System.Data.Linq.SqlClient.SqlProvider.Execute(
    Expression query, 
    QueryInfo queryInfo,
    IObjectReaderFactory factory, 
    Object[] parentArgs, 
    Object[] userArgs,
    ICompiledSubQuery[] subQueries, 
    Object lastResult) at
System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(
    Expression query, 
    QueryInfo[] queryInfos,
    IObjectReaderFactory factory, 
    Object[] userArguments, 
    ICompiledSubQuery[]
    subQueries) at
System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(
    Expression query) at
System.Data.Linq.DataQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() at 
System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) at
System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) at
Application specific stuff here

Похоже, что это SSCE_M_CANTOPENSHAREDMEMORY , и сайт сообщает, что для изменения этого значения в строке подключения отсутствует значение, и что эти проблемы обычно не решаются конечными разработчиками.

Кто-нибудь сталкивался с этим, и если да, то смогли ли вы решить эту проблему?

Ответы [ 2 ]

6 голосов
/ 29 июня 2010

Вы правы, что среда выполнения CE должна быть установлена. И если вы используете VS2010, вы должны убедиться, что вы установили SP2 среды выполнения CE.

Даже с этим, я столкнулся с этим. В моем случае у меня был экземпляр SQL Server CE, действующий в качестве локального кэша для базы данных с использованием служб синхронизации ADO.NET. Это ваш сценарий?

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

  • Если платформа была Vista или Windows 7; и
  • Если база данных SQL Server CE была установлен с приложением
    находиться в защищенном каталоге, например, как C: \ Program Files или C: \ Program
    Файлы (x86); и
  • Если программа была запущена с использованием стандартные учетные данные пользователя (т.е. не повышен до Администратора)

Обходные пути для условия включены:

  • Запуск приложения "как Администратор "; или
  • Настройка манифеста приложения для запроса учетных данных администратора; или
  • Рефакторинг приложения, чтобы файл .sdf находился в незащищенном каталоге, таком как C: \ ProgramData [имя некоторого подкаталога], и изменение строки подключения для указания на эту область; или
  • Перемещение всего каталога приложения в пространстве пользователя. Например, в «Документах» или в аналогичном пространстве с полными правами доступа к файлу в EXE-файле и .SDF-файле

    Очевидно, что каждый из этих вариантов имеет свои недостатки.

0 голосов
/ 16 ноября 2011

У меня была такая же проблема.

Windows 7.

Это произошло потому, что пользователь находился в Домене, а разрешения были предоставлены «Все» и произошли ошибки.

Он должен быть предоставлен% DOMAIN% / каждому

1009 * привет *

...