我想从同一台计算机上运行(使用Cassini)我的Web应用程序的两个副本 - 这不是不合理的(或者我认为!)。一个使用端口80,另一个使用端口81.所以我做了以下内容:
当我浏览新网站时,首先出现的是:
无法打开物理文件 “C:\ site1的\ App_Data文件\ db_log.ldf”。 操作系统错误32:“32( 进程无法访问该文件,因为 它被另一个人使用 进程。)“。无法创建文件'C:\ site2 \ App_Data \ db_log.LDF'因为 它已经存在。更改文件 路径或文件名,然后重试 操作。无法打开数据库 登录请求“NewAlias”。该 登录失败。用户登录失败 'NT AUTHORITY \ SYSTEM'。文件激活 失败。物理文件名 “C:\ site1 \ App_Data \ db_log.ldf”可能是 不正确。
它尝试从 OLD 位置打开mdf(即使web.config指定了到新位置的确切mdb路径),但尝试在 NEW <中创建日志/ strong>位置。然后将其全部关闭,删除它无法从 OLD 位置访问ldf的提示,或者可能无法登录到它。
微软和你的团队再一次做了一些真正直观的错误!有人可以帮忙吗?
答案 0 :(得分:0)
我认为您不能通过文件复制实时数据库。如果先将其分离,然后复制它,则可以通过将文件作为新数据库挂载来重新附加(使用sp_detach_db)。
sp_detach_db OldDb
然后复制该文件夹,然后将db文件重新附加(使用sp_attach_db)作为新数据库。
sp_attach_db NewDb, "C:\copy of site\App_Data\db_data.mdf", "C:\site1\App_Data\db_log.ldf"
答案 1 :(得分:0)
在执行此类操作时有时会发生的另一个大问题(在上面的情况中,错误消息模糊地忽略了)是虽然正在使用复制的MDF文件,但它仍然链接到原始LDF (日志文件)。您可以运行此命令以获取正在用于连接实例的文件的列表:
sp_helpfile
这会给你这样的回复:
name fileid filename filegroup size maxsize growth usage
=========================================================
db 1 C:\site2\App_Data\db.mdf PRIMARY 24192 KB Unlimited 1024 KB data only
db_log 2 C:\site1\App_Data\db_log.ldf 78080 KB 2147483648 KB 10% log only
您可以从输出中看到日志文件与旧数据库共享,这显然会导致问题,因此您可以将其更改为指向复制的日志文件,如下所示:
ALTER DATABASE NewAlias MODIFY FILE (NAME = db_log, FILENAME='c:\site2\App_Data\db_log.ldf')