2015-06-04 6 views
1

Я прикрепляю файл моей базы данных (.mdf) к моему приложению. Этот файл находится в папке bin \ debug \ database. Но когда я создаю установочный файл и устанавливаю свое приложение на другие компьютеры, у меня есть некоторая ошибка при подключении к базе данных, например: «для выполнения несанкционированной операции», «доступ запрещен» или «Database_log.mdf» ... Мой app.config:Не удалось подключиться к базе данных SQL

<?xml version="1.0"?> 
<configuration> 
    <configSections> 
    </configSections> 
    <connectionStrings> 
     <add name="XtopazConnectionString" 
     connectionString="Data Source=.;AttachDbFilename=|DataDirectory|\Database\XTOPAZ.mdf;Initial Catalog=XTOPAZ;Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 
     </connectionStrings> 
     <startup> 
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
     </startup> 
</configuration> 

Моя строка соединения и подключения функции:

public static void openConnect() 
    { 
     try 
     { 
      if (File.Exists(Application.StartupPath + @"\Database\XTOPAZ.mdf")) 
      { 
       if (File.Exists(Application.StartupPath + @"\Database\XTOPAZ_log.ldf")) //delete current ldf file if it existed 
       { 
        File.Delete(Application.StartupPath + @"\Database\XTOPAZ_log.ldf"); 
       } 
       string s = ConfigurationManager.ConnectionStrings["XtopazConnectionString"].ConnectionString; 

       //Set full permisstion access for database file 
       DirectoryInfo dInfo = new DirectoryInfo(Application.StartupPath + @"\Database\XTOPAZ.mdf"); 
       DirectorySecurity dSecurity = dInfo.GetAccessControl(); 
       dSecurity.AddAccessRule(new FileSystemAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), FileSystemRights.FullControl, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.NoPropagateInherit, AccessControlType.Allow)); 
       dInfo.SetAccessControl(dSecurity); 
       dInfo.SetAccessControl(dSecurity); 

       con.ConnectionString = s; 
       con.Open(); 
      } 
      else 
      { 
       Exception ex; 
       ex = new Exception("Database file not found"); 
       throw ex; 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Error occured when trying to connect to database\r\nDetail: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 

Так как я могу создать свой файл и установить приложение на другие компьютер без каких-либо ошибок?

+0

отправить изображение вашего решения и показать, где находится файл .mdf. –

+0

Не знаете, почему вы пытаетесь удалить файл LDF. Кажется, это не правильный ход. – Steve

+0

@Steve, я пытаюсь удалить файл ldf, потому что при открытии соединения с базой данных появляется ошибка «Database_log.mdf». Я не знаю, почему, но когда я удаляю его, эта ошибка исчезает. –

ответ

0

Вы пробовали запустить приложение в режиме администратора? Добавить файл манифеста в проект Project -> Добавить новый элемент -> Файл манифеста приложения. Затем измените requestExecutionLevel в соответствии с этой строкой:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
+0

Первая ошибка исчезает, но теперь есть и другая ошибка: «Database.mdf существует». Должен ли я прикреплять файл базы данных один раз или каждый раз при загрузке моей формы? –

Смежные вопросы