我已经做好一个系统,采用VS2005+SQL SERVER2005开发,数据库采用SQLEXPRESS 附加的方式进行。
我在自己电脑上运行无数次没有问题,可是用户机上运行出现这个现象:系统可以成功登陆系统2次,第三次出现错误:处理数据库日志出错,如果可能请重新还原数据库。百思不得其解,是不是系统做了什么限制,导致附加数据库次数不能超过三次?
我在自己电脑上运行无数次没有问题,可是用户机上运行出现这个现象:系统可以成功登陆系统2次,第三次出现错误:处理数据库日志出错,如果可能请重新还原数据库。百思不得其解,是不是系统做了什么限制,导致附加数据库次数不能超过三次?
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;
}
可能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();
}客户机报错误:数据库文件已经存在。我在自己电脑上测试的时候,如果删除了日志文件,我用上述方法可以自动生成日志文件,并且系统可以正常运行。------------------------------------------