2011-01-20 42 views
0

我想从同一台计算机上运行(使用卡西尼)两个我的Web应用程序副本 - 不是不合理的(或者我认为!)。一个使用端口80,其他使用端口81。所以,我做了以下内容:在同一台机器上制作一个ASP.NET MVC网站的副本 - catastrophy?

  1. 停止卡西尼和SQL Express的
  2. 复制和站点根文件夹中粘贴(并更名)
  3. 打开资源管理器卡西尼并在端口81上设置一个新站点并将其指向复制的位置
  4. 更改了复制站点的web.config,以便连接字符串使用“Database = NewAlias”,因为SQL Express无法附加具有相同别名的两个数据库。
  5. 开始卡西尼和SQL Express的再次

当我浏览到NEW站点时,出现的第一件事是:

无法打开物理文件 “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位置(即使在web.config中指定的确切路径MDB到新的位置),中密度纤维板,但试图建立一个日志中的位置。然后,最好的办法是放弃它不能访问位置的ldf,或者可能无法登录到它的提示。

做得很好Microsoft和您的团队再次为一些真正直观的错误!谁能帮忙?

+0

LOL - 一些真正的辉煌,我必须补充。当您尝试删除上述错误中SQL Express'couldnt find'的mdf和ldf时,您无法因为它们被SQL Express锁定:P – Jimbo 2011-01-20 07:48:40

+1

上述工作正常,如果您省略了“Database = xxx”别名连接字符串。可悲的是,这意味着你不能对该连接运行备份命令(我希望stackoverflow有一个“慢拍”图释) – Jimbo 2011-01-20 08:33:25

回答

0

我不认为你可以通过文件复制一个实时数据库。如果先将其分开,然后复制它,则可以通过将文件作为新数据库重新挂接(使用sp_detach_db)。

sp_detach_db OldDb 

然后将数据库文件复制的文件夹,然后重新安装(与sp_attach_db)作为一个新的数据库。

sp_attach_db NewDb, "C:\copy of site\App_Data\db_data.mdf", "C:\site1\App_Data\db_log.ldf" 
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') 
相关问题