部署后AttachDBFileName不起作用

时间:2012-11-16 07:24:17

标签: c# sql-server-express

我在app.config中定义了连接字符串

  <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 个答案:

答案 0 :(得分:2)

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

当你将它部署到另一台机器时,那个绝对路径的变化很小,相同......你需要给出一个虚拟路径......

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

答案 1 :(得分:0)

正如我之前在此网站上所说的那样 - 整个用户实例和AttachDbFileName = 方法存在缺陷 - 充其量! Visual Studio将围绕.mdf文件和最有可能进行复制,您的INSERT工作正常 - 但您只是查看错误的.mdf文件< / strong>到底!

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

我认为真正的解决方案将是

  1. 安装SQL Server Express(你已经完成了)

  2. 安装SQL Server Management Studio Express

  3. SSMS Express 中创建数据库,为其指定一个逻辑名称(例如StoreServer

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

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

    其他所有内容都完全与以前相同......

  5. 当您部署到客户的PC时 - 执行相同的步骤:安装SQL Server Express,在服务器上创建数据库 ,使用server=(local)(或{{}连接到它{1}}方法) - 并完成它!