C # - обновление файла базы данных в папке C: / или C: / приводит к фатальной ошибке файла только для чтения - PullRequest
0 голосов
/ 29 октября 2010

У меня есть файл базы данных в моем каталоге C: / (который я также пытался поместить в каталог C: / CustomerApp_C).Я могу запустить приложение, и оно прекрасно загружает данные.Однако, когда я изменяю некоторые данные и нажимаю «Сохранить», появляется «Необработанное исключение в вашем приложении. Bla bla bla» ... «Не удалось обновить« путь »базы данных, поскольку база данных доступна только для чтения».

Затем он дает мне это в деталях:

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.Data.SqlClient.SqlException (0x80131904): Failed to update database "C:\CUSTOMERAPP_C\DATA.MDF" because the database is read-only.
   at System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
   at System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
   at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
   at System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMapping tableMapping)
   at System.Data.Common.DbDataAdapter.Update(DataTable dataTable)
   at CustomerApp.CustomerAppDS2TableAdapters.CustomerTableAdapter.Update(CustomerDataTable dataTable) in C:\Users\Clarkey\Documents\Visual Studio 2010\Projects\CustomerApp2\CustomerApp\CustomerAppDS2.Designer.cs:line 2311
   at CustomerApp.CustomerAppForm.button1_Click(Object sender, EventArgs e) in C:\Users\Clarkey\Documents\Visual Studio 2010\Projects\CustomerApp2\CustomerApp\CustomerAppForm.cs:line 123
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
CustomerApp
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Users/Clarkey/Documents/Visual%20Studio%202010/Projects/CustomerApp2/CustomerApp/bin/Debug/CustomerApp.exe
----------------------------------------
System.Windows.Forms
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 built by: RTMRel
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 built by: RTMRel
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 built by: RTMRel
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Configuration
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 built by: RTMRel
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Data
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
System.Core
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 built by: RTMRel
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Data.DataSetExtensions
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 built by: RTMRel
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Data.DataSetExtensions/v4.0_4.0.0.0__b77a5c561934e089/System.Data.DataSetExtensions.dll
----------------------------------------
System.Numerics
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 built by: RTMRel
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
----------------------------------------
System.Transactions
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Transactions/v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll
----------------------------------------
System.EnterpriseServices
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.EnterpriseServices/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

Я проверил свойства файла, и у всех 3 (папка, файл базы данных и файл журнала базы данных) флажок только для чтения снят.Логически это заставляет меня думать, что это должно быть доступно для записи ... но, о нет, это не так! ..

Я попробовал следующее, как это было предложено в поиске Google:

File.SetAttributes(@"C:\CustomerApp_C\Data.mdf", FileAttributes.Normal);
File.SetAttributes(@"C:\CustomerApp_C\Data_log.ldf", FileAttributes.Normal);

Используя этидве строки препятствуют тому, чтобы приложение даже показывалось на экране - даже если я поместил это после остальной части кода.

Кто-нибудь имеет какие-либо идеи относительно того, что здесь происходит?Любая помощь будет принята с благодарностью.

Кстати, мое имя пользователя (и имя пользователя клиента, когда это будет сделано) имеет права администратора.

С уважением,

Ричард

Ответы [ 6 ]

2 голосов
/ 29 октября 2010

Если вы работаете в Windows 7, вы должны помнить, что запись в корневой каталог в этой ОС требует прав администратора (для процесса записи).

1 голос
/ 29 октября 2010

Возможно, у вас нет разрешения на запись C: \ Попробуйте запустить приложение от имени администратора

0 голосов
/ 20 октября 2014

Попробуйте,

Установите безопасность ваших файлов Data.mdf и Data_log.ldf для всех, полное разрешение.

Надеюсь, это решит

0 голосов
/ 29 октября 2010

Предполагается, что SQL Server основан на трассировке стека.

Попробуйте:

  • перейти в SQL Server Management Studio
  • щелкните правой кнопкой мыши базу данных и выберите
  • Свойства выберите страницу "Параметры"
  • прокрутите вниз и проверьте, доступно ли состояние базы данных только для чтения.
0 голосов
/ 29 октября 2010

Должна ли база данных находиться на диске C или в каталоге, созданном в C: \? Кроме того, на какой версии Windows вы разрабатываете? Более свежие версии затрудняют создание файлов за пределами пользовательского каталога Documents в качестве меры безопасности.

0 голосов
/ 29 октября 2010

Попробуйте щелкнуть правой кнопкой мыши файл, выберите свойства, а затем выберите панель безопасности. Убедитесь, что пользователь, запускающий ваше приложение (возможно, вы сами), имеет доступ на запись в файл.

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