3

完整错误如下:

错误 1 ​​SQL01268:.Net SqlClient 数据提供程序:消息 1834,级别 16,状态 1,第 1 行文件“C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\testdatabase.mdf”不能被覆盖。数据库“testdatabase”正在使用它。架构比较5 25 0

我在一些论坛上读到了这个,很多人都得到了这个,据推测它与将文件路径名参数化到数据库等有关,或者在之前勾选“忽略文件名和文件和日志文件的路径”进行比较-我尝试过无济于事。

其他有相同/类似问题的人: http: //social.msdn.microsoft.com/Forums/en/vstsdb/thread/5a8b8c52-adb4-4a5a-95ed-09ad22bacf60

基本上对我来说,无论我将哪些数据库用于目标和源,我似乎都会收到此错误。假设即使我创建一个包含一个表的新数据库和另一个没有表且名称不同的数据库,并尝试使用带有单个表的 db 更新没有表的数据库的架构,它仍然会给我错误。几乎就像 SQL server express 疯了一样。我记得之前使用模式比较工具没有任何问题。创建了所有数据库连接,尝试了很多方法都无济于事,即:指向另一个文件夹中* .mdf db的副本或从程序文件中mysql目录中的DATA文件夹中删除内容等。

还相信我读到有人解决了类似的问题,即删除方案比较工具创建的一些文件,认为它们是 *.sql 类型,但不确定哪些文件。

4

3 回答 3

1

出现问题是因为数据库文件已经存在。

在 Visual Studio 数据库项目中尝试以下操作。

创建架构比较。

转到菜单:数据 > 架构比较 > 导出到 > 编辑器

创建脚本后,删除添加物理文件的 alter database 命令。然后创建一个连接,切换到 SQLCMD 模式(确保你专注于脚本)并执行脚本。

要切换到 SQLCMD 模式访问:数据 > Transact-SQL 编辑器 > SQLCMD 模式

于 2012-01-16T14:13:05.740 回答
1

如果目标数据库已经存在,只需在首次部署前先通过 Management Studio 删除即可。

当我通过 VS 中的 SQL Server 2008 向导创建数据库项目时建立原始连接时,我已经通过 SQL Server Management Studio 手动创建了数据库。在它检测到数据库存在之前,它不允许我继续。然后,一旦我第一次进入部署步骤,它就会抛出与上面相同的错误。我刚进入 Management Studio 并删除了数据库,然后尝试部署,它工作正常。有趣的是,它现在每次都在部署,而我每次都不必进去删除它。

于 2012-09-09T16:15:04.427 回答
1
      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
于 2014-01-17T11:44:01.827 回答