我的代码是:
FileInfo mdf = new FileInfo(dbfile);
databasename = mdf.Name.ToLower().Replace(@".mdf", @"");
StringCollection databasefiles = new StringCollection();
databasefiles.Add(mdf.FullName);
databasefiles.Add(mdf.FullName.ToLower().Replace(@".ldf", @""));
//this is where I have issue. Obviously I can't assume that the log file name would be the same as mdf file name with ldf extension. Thats when I thought there would be a way to read the header information from mdf file, and that will have ldf information.
Server sqlServer = new Server(textServer.Text);
sqlServer.AttachDatabase(databasename, databasefiles);
如何选择正确的.ldf文件。例如,在c:\ temp中,我有db1.mdf,db2.mdf和db1.ldf,db_1.ldf,db1_log.ldf。我怎么知道哪个是db1.mdf的正确.ldf文件
答案 0 :(得分:1)
不,据我所知,文件本身的MDF和LDF文件之间没有真正的“链接”。 SQL Server中的数据库元数据中有一个链接。
我的方法可能是:
mydatabase.ldf
是否存在 - >如果是,请使用mydatabase_log.ldf
是否存在 - >如果是,请使用mydatabase_1.ldf
是否存在 - >如果是,请使用如果您仍未找到LDF文件,则可以在MDF所在的目录中搜索mydatabase*.ldf
。这将在我们的测试服务器上失败 - 我们的系统管理员始终将.MDF/.NDF
数据文件安装到SQL2008-DATA
,将.LDF
日志文件安装到SQL2008-LOG
}目录 - 完全分开。
在这种情况下,您需要在例如.MDF -> .LDF
中配置映射。配置文件或其他东西,或者只是向用户弹出“查找.LDF文件”对话框....