Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何使用ClickOnce部署SQL和附加DB:?_.net_Winforms_Sql Server 2005_Deployment_Clickonce - Fatal编程技术网

.net 如何使用ClickOnce部署SQL和附加DB:?

.net 如何使用ClickOnce部署SQL和附加DB:?,.net,winforms,sql-server-2005,deployment,clickonce,.net,Winforms,Sql Server 2005,Deployment,Clickonce,我需要部署一个使用多个db的winform应用程序。当它们在本地交互时,我需要用我的应用程序部署它们 我可以使用ClickOnce,还是应该考虑另一种方法?我找到了ClickOnce的几个例子,但它们都假设DB包含在解决方案中,但这里的情况并非如此 这个应用程序曾经是一个网络应用程序,DB和DAL反映了这一点。我还使用合并复制,将这些本地数据库合并到中心数据库 我的最佳方法是编写数据库创建脚本,并在安装期间以某种方式运行这些数据库,然后启动合并复制以填充表吗?DB还包含超过100个存储过程,这些

我需要部署一个使用多个db的winform应用程序。当它们在本地交互时,我需要用我的应用程序部署它们

我可以使用ClickOnce,还是应该考虑另一种方法?我找到了ClickOnce的几个例子,但它们都假设DB包含在解决方案中,但这里的情况并非如此

这个应用程序曾经是一个网络应用程序,DB和DAL反映了这一点。我还使用合并复制,将这些本地数据库合并到中心数据库

我的最佳方法是编写数据库创建脚本,并在安装期间以某种方式运行这些数据库,然后启动合并复制以填充表吗?DB还包含超过100个存储过程,这些存储过程并不总是能很好地处理Merge Repl,因此我需要能够在初始安装中也包含这些存储过程

否则,我想我可能会想出如何在安装过程中连接数据库,其中包括存储过程,但我也不知道怎么做

我愿意听取关于如何使用4个独立的SQL DB部署此应用程序的所有建议


谢谢

如果您在本地使用SQL Express,则可以将数据库作为连接字符串的一部分进行附加,但我不知道这对复制是否有好处。您可以考虑将数据库附加到本地,并将包含数据库的版本号的修订表放入其中。然后可以编写应用程序来检查数据库的版本,并运行SQL脚本将数据库升级到最新版本。这就是DotNetNuke执行滚动升级的方式。您只需为每个版本维护一个特定于版本的.SQL文件,并将其包含在click once部署文件中。通过这种方式,您可以向前滚动任何遗漏的修订,以获得数据库的最终修订


在psuedo代码中,它类似于:

 Check the database version in Revision Table
     If less than current version
        Load SQL file list from path
            Foreach file with revision > current Revision
               Execute TSQL Scripts

每个TSQL脚本将在应用时更新数据库中的修订号。诚然,这需要花费大量的时间来实施,但在实施过程中,它能很好地解决您的问题。

我不确定我是否完全理解。我的印象是merge rep将发布任何db更改。你指的是其他东西吗?如果你这样设置,你当然可以这样做,但你提到你想安装,然后启动复制来填充表,而不是完全复制所有对象,通过使用数据库和sql文件的增量版本控制来部署不同版本的更改,可以解决存储过程中的问题。这不一定是你的正确解决方案,而是你如何“能够”解决问题的想法。