2011-11-17 25 views
2

我有一个VS2010数据库项目指向SQL2005数据库。当我部署它时,它正确地从SQL实例中提取DefaultDataPath并且一切正常。VS2010中的DefaultDataPath为空SQL2008数据库部署脚本

今天,我将项目类型从SQL205更改为SQL2008,并将部署属性更改为指向我的SQL2008服务器。但是,现在当我尝试部署,我得到这个错误:

Error SQL01268: .Net SqlClient Data Provider: Msg 5105, Level 16, State 2, Line 1 A file activation error occurred. The physical file name '\AutoDeployedTRS.mdf' may be incorrect. Diagnose and correct additional errors, and retry the operation. 

Error SQL01268: .Net SqlClient Data Provider: Msg 1802, Level 16, State 1, Line 1 CREATE DATABASE failed. Some file names listed could not be created. Check related errors. 

An error occurred while the batch was being executed. 

这样做的原因错误是由VS创建的SQL脚本包含以下三行:

:setvar DatabaseName "AutoDeployedTRS" 
:setvar DefaultDataPath "\" 
:setvar DefaultLogPath "\" 

如果我检查SQL实例属性(通过用户界面或通过阅读注册表),它们设置正确,所以它似乎像VS2010无法接受它们出于某种原因。

任何想法?

回答

2

尝试去位置架构对象\数据库级别对象\存储\文件。
可以找到两个文件:
打开文件[your_database_name] .sql并使参数 FILENAME = '$(DefaultDataPath)$(DatabaseName).mdf'
然后打开文件[your_database_name] _log.sql并设置参数 FILENAME = '$(DefaultDataPath)$(DatabaseName)_log.ldf'
之后尝试部署您的项目。现在,这些参数是根据当前目标数据库路径在部署期间定义的。希望它能帮助你。

+0

由于某种原因,此DB项目没有“数据库级别对象”文件夹。它在Schema Objects下,具有函数,安全性,存储过程,表和视图。 – Mark

+2

这是盛大的和所有的,但对于定期从模式比较中获得同步的数据库项目,这不是一个可接受的解决方案。 – Levitikon

相关问题