C# 将应用程序与数据库一起发布,而不需要在客户端c上使用ms sql#

C# 将应用程序与数据库一起发布,而不需要在客户端c上使用ms sql#,c#,sql-server,deployment,C#,Sql Server,Deployment,我是这个论坛的新成员,所以介意我问一个已经在某处回答过的问题 我已经在windows窗体中制作了一个应用程序,现在我想在另一台客户端PC上实现它。我发布了它,我可以在其他地方安装它,但问题是,当涉及数据库时,我无法让它工作。我已经尝试了我所知道的一切,我使用安装向导创建程序将DB与安装程序连接起来,但我无法让它工作 我的主要问题是:如果可能的话,我如何在不在客户端PC上安装MS SQL的情况下成功发布一个应用程序,以及它的数据库和所有处于工作状态的东西 通常,在使用SQL Server时,您运行

我是这个论坛的新成员,所以介意我问一个已经在某处回答过的问题

我已经在windows窗体中制作了一个应用程序,现在我想在另一台客户端PC上实现它。我发布了它,我可以在其他地方安装它,但问题是,当涉及数据库时,我无法让它工作。我已经尝试了我所知道的一切,我使用安装向导创建程序将DB与安装程序连接起来,但我无法让它工作


我的主要问题是:如果可能的话,我如何在不在客户端PC上安装MS SQL的情况下成功发布一个应用程序,以及它的数据库和所有处于工作状态的东西

通常,在使用SQL Server时,您运行的是客户机-服务器场景,SQL Server是服务器部分。app.config中存储的连接字符串将指向SQL Server,用户永远不需要了解有关数据库的更多信息

如果您的应用程序设计为在网络之外运行(即第三方),您有两个选项。首先,如果您想使用SQL Server的完整版本,可以创建客户端安装程序和服务器安装程序。服务器安装程序将用于设置服务器端(包括SQL server的安装),在客户端安装期间,他们需要输入数据库服务器的名称

如果客户端安装了SQL Server Express,则可以提供数据库文件,并直接连接到它,而不是在SQL中安装它。但是,如果客户端尚未安装Express,则此操作将不起作用


最后,SQL Server Compact Edition是为在客户端上运行而设计的。您可以执行“bin部署”——也就是说,将SQL CE.dll文件与应用程序一起复制,而不是安装软件,客户端可以使用提供的数据库。如果您还没有为CE编写应用程序,这将需要一些返工。

您也可以使用sqlLite,它只需要像Dave Simione所说的那样进行一些修改,如果您指定了数据库的连接字符串,该字符串将指向另一台机器上的某个SQL server。我认为你不应该有任何问题。我不确定,我明白这个问题。你能分享你得到的异常吗?一切正常,我只需要找到一种方法在一个.msi安装文件中实现一切。因此,客户端只需安装应用程序。不用担心其他事情。如何在工作状态下创建一个包含数据库的.msi文件。是否有任何方法可以帮助我以某种方式获得一个setup.msi或.exe文件,客户端只需在其pc上安装,而无需我方的任何其他贡献或努力,就像我们安装游戏一样。它只是要求我的目录,它安装和工作良好。到目前为止,我所知道的部署的唯一方法是,获取应用程序和db文件,在客户端pc上安装sql server,导入db并运行应用程序,以这种方式交付产品时会有点混乱。需要帮助,谢谢。完整的SQL Server不是为可再发行而设计的。是的,您可以将msi链接到SQL安装程序,并且您可能可以将SQL安装程序脚本设置为静默。但这是安装一个非常大的应用程序,用户将隐藏它。一个完整的SQL安装需要管理工作——这不仅仅是简单的“即发即弃”。如果您真的想要一个具有重新分发选项的本地数据库,请使用SQLCE。这就是它的设计目的。好的,当然,你提到它需要一些返工。请澄清这一点。我访问了Microsoft网站,发现SQL CE设置只有2.5 MB,请您指导我需要做哪些返工才能实现这一点。许多SQL CE使用不同的客户端库,因此所有客户端连接、命令、数据适配器等都需要移动到System.data.SqlServerCe命名空间下的类中。(SqlConnection=>SqlCeConnection、SqlCommand=>SqlCeCommand等)。此外,有些SQL Server与SQL CE不兼容,即存储过程。如果您有SP,则需要将该逻辑迁移到应用程序中。