将数据库文件保存在不同的分区

时间:2012-03-19 08:52:52

标签: c# sql-server

我在C#中创建了我的第一个项目,该项目使用sql server database(文件名:printing.mdf) 我在Sql Server Express上创建了一个数据库,并开发了一个应用程序来操作该数据库。 部署(在客户端的PC上安装sql server,然后手动附加数据库)一切正常。

真正的问题是我想要

  1. 我的应用程序应该在安装过程中自动安装sql server。
  2. 还应在安装过程中附加数据库(printing.mfd)文件。
  3. 最重要的是:我想在D:驱动器上保存mdf文件,这样当系统驱动器(C :)因任何原因被格式化时,我的数据库不会丢失。
  4. 对于上一个问题,我尝试过这个连接字符串

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

    我还将printing.mdf复制到d:\printingData 这适用于我的电脑但不适用于客户端电脑

    任何与第三方有关的建议。

1 个答案:

答案 0 :(得分:1)

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

  2. 您可以使用自定义安装包在安装时将数据库文件附加到现有SQL Server实例。 NSIS是我遇到的最好的安装软件,它有很好的文档和支持(由用户等)。您想要的数据库附件功能是找到的here on the NSIS Wiki pages

  3. 插件之一
  4. 当然,您在PC上的D:分区可能不存在于另一台用户自己的计算机上。此外,无法在用户的计算机上自动创建此类分区。要做或者试图这样做会非常具有侵入性。

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

    编辑:回答你的评论。有关从命令提示符进行安装的信息,请参阅the following MSDN article - 祝您好运,并小心尝试自动执行此操作,这不是一个好主意......

    要使用TSQL附加数据库,请使用以下查询:

    -- 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正逐步淘汰。

    希望这有帮助。