0

我在这里阅读了很多文章,但还没有找到解决方案。我有一个由我的 VB.NET 应用程序使用的 SQL Server Express 数据库。我已经通过 MSI 文件打包并部署了应用程序,一切正常,除了我无法弄清楚如何将我的数据库文件包含在包中。我知道有三种通用方法可以做到这一点(手动复制文件、自定义操作和 SQL 脚本)。我在这里不需要任何花哨的东西,只是一种将数据库放在客户端机器上的快速方法,以便我的应用程序可以访问它。

我决定手动复制数据库是最快的选择。我尝试将它放在工作目录和\DATA客户端的 SQL Server Express 安装目录中,但我的应用程序无法连接。我还尝试将项目中的连接更改为,.\SQLEXPRESS而不是[my_computer_name]\SQLEXPRESS重新构建部署项目并在客户端计算机上重新安装,但对我来说没有任何好处。同样的问题。我尝试将项目中的“UserInstance”属性更改为“True”,但我的项目不允许我保存该操作。

我是否正确地认为手动复制是完成这项工作的最快和最简单的方法?

4

2 回答 2

2

你应该把attach你的文件放到 Sql Server 实例中。

CREATE DATABASE YourDatabaseName 
    ON (FILENAME = 'C:\your\data\directory\your_file.mdf'), 
    (FILENAME = 'C:\your\data\directory\your_file_Log.ldf') 
FOR ATTACH; 
于 2012-09-03T21:13:28.593 回答
0

您需要将数据库文件附加到客户端计算机上正在运行的 SQL Server。这可以使用存储在配置文件(app.config 或 web.config)中的连接字符串的这种变体轻松完成

Server=.\SQLExpress;AttachDbFilename=where_you_have_stored_the_mdf_file;
        Database=dbname; Trusted_Connection=Yes;

或者,您可以使用|DataDirectory|替换字符串。
此快捷方式消除了对完整路径进行硬编码的需要。
使用 DataDirectory,您可以拥有以下连接字符串:

Server=.\SQLExpress;AttachDbFilename=|DataDirectory|\yourfile.mdf”
         Database=dbname; Trusted_Connection=Yes;
于 2012-09-03T23:08:50.993 回答