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

C# 将数据库文件保存在不同的分区中,c#,sql-server,C#,Sql Server,我在C#中创建了我的第一个项目,它使用sql server数据库(文件名:printing.mdf) 我在SQLServerExpress上创建了一个数据库,并开发了一个应用程序来操作该数据库。 部署(在客户端pc上安装sql server,然后手动连接数据库)后,一切正常 真正的问题是我想要 我的应用程序应该在安装过程中自动安装sql server 安装过程中还应附上数据库(printing.mfd)文件 最重要的是:我想将mdf文件保存在D:驱动器上,这样当系统驱动器(C:)由于任何原因被格

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

真正的问题是我想要

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

    Data Source=.\SQLEXPRESS;AttachDbFileName=d:\printingData\printing.mdf;Integrated Security=True;User Instance=True
    
    我还将
    printing.mdf
    复制到
    d:\printingData
    这在我的电脑上有效,但在客户端电脑上无效

    任何与第三个特别相关的建议

  • 无法自动安装SQL Server。即使这是可能的,也强烈建议不要这样做,因为在安装过程中会进行大量的系统测试/配置

  • 可以在安装时使用自定义安装包将数据库文件附加到现有SQL Server实例。是我在安装过程中遇到的最好的免费软件,它有很好的文档记录和支持(用户等)。数据库附件所需的功能是找到的插件之一

  • 当然,您电脑上的D:分区可能不存在于其他用户自己的计算机上。而且,没有办法在用户的机器上自动创建这样的分区。这样做,或试图这样做,将是非常侵入性的

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

    编辑:回答您的评论。如果要从命令提示符中进行安装,请参见-祝您好运,并小心尝试将其自动化,这不是一个好主意

    要使用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正在逐步淘汰这种做法


    希望这有帮助。

    谢谢。首先,两个问题可以通过适当的文档来解决,现在第三的人认为这种情况“系统正在运行和打印,MDF是D:驱动器,有一天我的客户决定重新安装Windows,然后SQLServer和我的应用程序。现在他必须附加打印。MDF”。我认为他可以使用ManagementStudio,但他不是技术人员,我不想包括Second女士,我认为我应该提供.bat格式的脚本,他可以在sql安装后运行。第三,你的答案是什么。你认为什么是最好的解决方案?