2012-11-16 45 views
1

后,我在我的app.config中AttachDBFileName不工作部署

<connectionStrings> 
    <add name="StoreConnectionString" 
    connectionString="Data Source=(local);MultipleActiveResultSets=True;AttachDBFileName=C:\Users\Firdavs\Desktop\Data\StoreServer.mdf;Integrated Security=True;User Instance=True;" 
    providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

我使用C#和我的应用程序的SQL Express定义的连接字符串。当我在我的机器上运行Visual Studio时,它工作正常。但是在创建安装并部署到其他机器之后。我正在编辑显示AttachDBFileName = Path的.exe.config文件。应用程序给我错误。 Sql Express安装在该机器中。我想附件不起作用。你有什么建议? 请给我看看方向!

回答

2

问题出在这里:“AttachDBFileName = C:\ Users \ Firdavs \ Desktop \ Data \ StoreServer.mdf;”

当你把它部署到另一台机器

,那绝对路径有低的变化是一样的...你需要给一个虚拟路径...

你需要的MDF复制在同一目录下。然后在visual studio中确保当你选择mdf文件时,你将“复制到输出目录”属性改为“复制如果是新的”(你可以通过双击已经列出的“不要复制”文本来改变它那里) ,然后更改AttachDbFilename是... AttachDbFilename = | DataDirectory目录| StoreServer.mdf; ....

+0

如何给虚拟路径?你能用实例给我更多的信息吗? –

+0

检查我给你的新信息 – Nathan

+0

它没有工作...同样的错误。 –

0

正如我上这个网站之前所说的 - 整个用户实例和AttachDbFileName =方法是有缺陷 - 最好! Visual Studio将复制.mdf文件和最有可能,您的INSERT工作得很好 - 但你只是在最后看错误.mdf文件

如果你想坚持这种方法,那么试着在myConnection.Close()调用上放一个断点 - 然后用SQL Server Mgmt Studio Express检查.mdf文件 - 我几乎可以确定你的数据在那里。

在我看来真正的解决方案

  1. 安装SQL Server Express(和你已经做到这一点无论如何)

  2. 安装SQL Server Management Studio中快速

  3. 中创建您的数据库SSMS Express,给它一个逻辑名称(例如StoreServer

  4. 使用其逻辑数据库名称连接到它(在服务器上创建时给出) - 并且不要乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将是这样的:

    Data Source=(local);Database=StoreServer;Integrated Security=True 
    

    和其他一切是正是像以前一样...

当你部署到客户的电脑 - 经过相同的步骤:安装SQL Server Express,创建服务器上的数据库,它连接使用server=(local)(或server=machinename方法)来 - 而且是用它做完!

+0

谢谢marc_s的回答。但我不想在我的客户机中安装sql server management studio。我只想让我的应用程序易于安装一个包。我只想让我的客户安装应用程序并开始工作。由于我的安装项目允许安装sql express,如果它没有安装。但是,当附加DBFileName我有这个问题。如果我安装SQL Server Management Studio,他们可以看到我的数据库结构。这不好。 –

+0

@FirdavsKurbonov:如果你愿意,你可以在没有** Mgmt Studio的情况下完成所有这些工作 - 只需在命令行中使用'sqlcmd' –

+0

还有其他方法可以自动执行吗? –