2012-03-19 67 views
2

我创建了我在C#中的第一个项目,它使用SQL Server数据库(文件名:printing.mdf) 我创建有关SQL Server Express数据库,并开发了一个应用程序来操纵该数据库。 部署(在客户端的PC安装SQL Server,然后手动安装数据库)之后,一切工作正常。保持数据库文件

真正的问题是,我想

  1. 我的应用程序应该安装过程中自动安装SQL Server。
  2. 数据库(printing.mfd)文件也应在安装过程中附接。
  3. 最重要的是:我想在D盘上保存mdf文件,这样当系统盘(C :)因任何原因被格式化时,我的数据库不应该丢失。

对于最后一个问题我已经试过此连接字符串

Data Source=.\SQLEXPRESS;AttachDbFileName=d:\printingData\printing.mdf;Integrated Security=True;User Instance=True 

我也复制printing.mdfd:\printingData 这个工作在我的电脑,但不是在客户端PC

任何建议,特别是涉及到第三一个。

回答

1
  1. 您无法自动安装SQL Server。即使这是可能的,由于大量的系统测试/配置都是在安装过程中完成的,因此它将非常值得联合国推荐。

  2. 您可以数据库文件在安装时使用自定义安装包安装到现有的SQL Server实例。 NSIS是最好的免费软件我所遇到的安装,它是非常有据可查和支持(由用户等)。数据库附件所需的功能是发现的其中一个插件here on the NSIS Wiki pages

  3. 当然,您PC上的D:分区可能不存在于其他用户自己的计算机上。而且,在用户的机器上没有自动创建这种分区的方法。要做,或试图做到这一点非常干扰。

在我看来,我会创建一些文档,指定您的软件的建议配置。您还可以提供有关如何分区硬盘的安装说明。但是你会发现用户(特别是临时用户)不会想要做这样的事情!

编辑:回复您的评论。对于在看到the following MSDN article从命令提示符处安装 - 祝你好运,并要小心尝试自动化这个,这不是一个好主意......

要使用T-SQL使用下列查询附加数据库:

-- For an .mdf with no log file - rebuild it. 
CREATE DATABASE [{0}] ON (FILENAME = N'{1}') ATTACH_REBUILD_LOG;);  
-- For a standard attach. 
CREATE DATABASE [{0}] ON (FILENAME = N'{1}') FOR ATTACH; 

请注意,您可以使用系统存储的过程来附加数据库,但Microsoft正在逐步淘汰这些数据库。

希望这会有所帮助。

+0

谢谢。以及前两个问题可以通过适当的文档解决,现在第三个考虑这种情况“系统启动并运行,printing.mdf是在D:驱动器,有一天我的客户决定重新安装Windows,然后SQL服务器和我的应用程序。现在他必须附上printing.mdf“你有什么建议来执行这个最后的任务。我认为他可以使用管理工作室,但他不是技术人员,我不想包括MS。其次,我认为我应该提供.bat格式的脚本,以便在sql安装后运行。第三,你的答案是NSIS。你认为最好的解决方案是什么? – 2012-03-19 18:46:14

+0

如果确实是答案,请记得接受答案。 :] – MoonKnight 2012-03-20 09:20:39

+0

谢谢。这真的有帮助。 – 2012-03-21 06:17:39