我已经做好一个系统,采用VS2005+SQL SERVER2005开发,数据库采用SQLEXPRESS 附加的方式进行。
我在自己电脑上运行无数次没有问题,可是用户机上运行出现这个现象:系统可以成功登陆系统2次,第三次出现错误:处理数据库日志出错,如果可能请重新还原数据库。百思不得其解,是不是系统做了什么限制,导致附加数据库次数不能超过三次?

解决方案 »

  1.   

    我的连接语句:
    app.config文件
     <connectionStrings>
    <add name="conn" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename='{0}';Integrated Security=True;User Instance=True"/>
    </connectionStrings>
    <appSettings>
        <add key="connPath" value="E:\数据库文件\" />
        <add key="filename" value="MP10" />
    </appSettings>类文件: public static  SqlConnection getConnection()
     {
    string path = ConfigurationManager.AppSettings["connPath"].ToString() + "\\航空修理质量管理.mdf";
    //数据库文件位置,数据文件与程序文件分开存放
      string conStr = string.Format(ConfigurationManager.ConnectionStrings["conn"].ConnectionString,path);
                 
     SqlConnection _sqlConnection = new SqlConnection(conStr);
               
     return _sqlConnection;
            }
      

  2.   

    会不会是_sqlConnection.Open() 使用后,没有_sqlConnection.Close() ?
      

  3.   

    估计是版本的问题吧,看看附加上的sql server是否与原server的版本相同(指sp升级,如一个是sp3,一个在原始版本的,
    可能sp3的数据库附加到原始版上会有问题),
      

  4.   

    估计是版本的问题吧,看看附加上的sql server是否与原server的版本相同(指sp升级,如一个是sp3,一个在原始版本的, 
    可能sp3的数据库附加到原始版上会有问题)
    ---------------------------------------------我用的都是精简版数据库,从微软网站下的SQLServer2005_SSMSEE,客户机上没有安装管理工具。
    我特别奇怪的是我自己分别在3台电脑上测试系统,都没有问题。
    但是客户机每次只能使用2次,第三次登陆系统时出现数据库文件与日志文件不符合的错误。
    我叫客户删除日志文件,然后运行我写好的如下代码:
     public void RestoreData()
            { 
              string  connectionString=@"Data Source=.\SQLEXPRESS;Initial Catalog=master;Integrated Security=True";
              SqlConnection _sqlConnection = new SqlConnection(connectionString);
               string path=  ConfigurationManager.AppSettings["connPath"].ToString();
               string sql =string.Format( "EXEC   sp_attach_db   @dbname   =   N'航空修理质量管理', @filename1 = N'{0}\\航空修理质量管理.mdf'",path);
              _sqlConnection.Open();
                
                SqlCommand cmd = new SqlCommand(sql, _sqlConnection);
                cmd.ExecuteNonQuery();
                sql = "sp_detach_db   @dbname= '航空修理质量管理' ";
                cmd = new SqlCommand(sql, _sqlConnection);
                cmd.ExecuteNonQuery();          _sqlConnection.Dispose();
                     }客户机报错误:数据库文件已经存在。我在自己电脑上测试的时候,如果删除了日志文件,我用上述方法可以自动生成日志文件,并且系统可以正常运行。------------------------------------------