C# SQL表更改分布

C# SQL表更改分布,c#,winforms,visual-studio-2008,software-distribution,sql-server-2008-express,C#,Winforms,Visual Studio 2008,Software Distribution,Sql Server 2008 Express,我有一个WinForm应用程序,它是用VS2008(C#)和SQLServerExpress 2008构建的,目前部署在测试用户PC上 我要修改数据库结构(添加字段、表等),我想知道在用户PC上分发更改的最佳方法是什么(不丢失用户数据) 根据我到目前为止学到的知识,我需要在脚本文件中编写更改。但是,在不在SQLServerManagementStudio中手动运行脚本文件的情况下分发脚本文件的最佳方法是什么?你有什么建议的自动分发方法吗?我是否必须编写自己的更新应用程序 我目前使用ClickOn

我有一个WinForm应用程序,它是用VS2008(C#)和SQLServerExpress 2008构建的,目前部署在测试用户PC上

我要修改数据库结构(添加字段、表等),我想知道在用户PC上分发更改的最佳方法是什么(不丢失用户数据)

根据我到目前为止学到的知识,我需要在脚本文件中编写更改。但是,在不在SQLServerManagementStudio中手动运行脚本文件的情况下分发脚本文件的最佳方法是什么?你有什么建议的自动分发方法吗?我是否必须编写自己的更新应用程序

我目前使用ClickOnce分发EXE文件中的更改。当您必须使用新版本对数据库进行更改时,ClickOnce仍然是一个可行的解决方案吗


TIA

您可以在启动时编写应用程序,从应用程序文件夹中读取脚本文件并执行它。您可以让脚本在完成后更新数据库中的一个值,以防止它再次运行


您可以将新脚本文件作为内容部署,应用程序将在下一次启动时执行它,升级您的数据库有很多方法可以做到这一点-或者以某种方式构建您自己的自制版本(例如,我们目前正在将数据库更改脚本打包为一个DLL作为嵌入式资源,并且有一个引擎将在安装和/或更新时在客户机上运行这些脚本),或者您可以查看现成的.NET产品,如Red Gate,它可以为您节省大量的时间和精力。

您可以调用MSSQL附带的osql或sqlcmd

或者,您可以使用SMO运行数据库更改脚本。查看如何完成