以下完整错误:
错误1 SQL01268:.Net SqlClient数据提供程序:消息1834,级别16,状态1,行1文件' C:\ Program Files \ Microsoft SQL Server \ MSSQL10.SQLEXPRESS \ MSSQL \ DATA \ testdatabase。 MDF'不能被覆盖。数据库' testdatabase'正在使用它。 SchemaCompare5 25 0
我在一些论坛上看到了这个,很多人都得到了这个,并且据说对于一些人来说,它必须将文件路径名参数化到数据库等,或者勾选"忽略文件名和文件路径和日志文件"在做比较之前 - 我试着无济于事。
其他有相同/类似问题的人:http://social.msdn.microsoft.com/Forums/en/vstsdb/thread/5a8b8c52-adb4-4a5a-95ed-09ad22bacf60
基本上对我而言,无论我使用哪个数据库作为目标和来源,我似乎都会遇到此错误。假设即使我创建一个包含一个表和另一个没有表和不同名称的数据库的新数据库,并尝试使用带有单个表的数据库更新数据库的模式而没有表,它仍然会给我错误。几乎像SQL Server express已经疯了。我记得以前使用架构比较工具没有任何问题。所有数据库连接都已创建,尝试了许多方法来执行此操作无效,即:指向另一个文件夹中* .mdf db的副本或从程序文件中的mysql目录中的DATA文件夹中删除内容。
还相信我读过有人解决了类似的问题,删除了一些文件的方案 比较工具创建,认为它们是* .sql类型但不确定哪些。但
答案 0 :(得分:1)
问题出现是因为数据库文件已经存在。
在Visual Studio数据库项目中尝试以下操作。
创建架构比较。
转到菜单:数据>架构比较>导出到>编辑
创建脚本后,删除添加物理文件的alter database命令。然后创建一个连接,切换到SQLCMD模式(确保你专注于脚本)并执行脚本。
要切换到SQLCMD模式访问:数据> Transact-SQL编辑器> SQLCMD模式
答案 1 :(得分:1)
如果目标数据库已存在,则只需在首次部署之前先通过Management Studio删除。
在我通过VS中的SQL Server 2008向导创建数据库项目时建立原始连接时,我已经通过SQL Server Management Studio手动创建了数据库。它不允许我继续,直到它能够检测到数据库存在。然后,当我第一次进入Deploy步骤时,它会抛出与上面相同的错误。我刚进入Management Studio并删除了数据库,然后尝试部署并且工作正常。有趣的是,它每次都在进行部署,而不必每次都进入并删除它。
答案 2 :(得分:0)
RESTORE DATABASE B FROM DISK = 'A.bak'
WITH MOVE 'DataFileLogicalName' TO 'C:\SQL Directory\DATA\B.mdf',
MOVE 'LogFileLogicalName' TO 'C:\SQL Directory\DATA\B.ldf',
REPLACE ---> Needed if database B already exists