SQL表更改分发

时间:2009-01-21 20:07:59

标签: c# winforms visual-studio-2008 software-distribution sql-server-2008-express

我有一个使用VS 2008(C#)构建的WinForm应用程序和当前部署在测试用户PC上的SQL Server Express 2008.

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

从我到目前为止学到的知识,我需要在脚本文件中编写更改。但是,如果不在SQL Server Management Studio中手动运行脚本文件,那么分发脚本文件的最佳方法是什么?你建议有自动分配方法吗?我是否必须编写自己的更新应用程序?

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

TIA

3 个答案:

答案 0 :(得分:3)

有很多方法可以做到这一点 - 或者以某种方式构建自己的本土版本(例如,我们当前将数据库更改脚本打包为DLL作为嵌入式资源,并且有一个引擎可以在客户端机器上运行它们在安装和/或更新时),或者您可以查看随时可用的.NET产品,如Red-Gate SQL Packager,这可以为您节省大量的时间和精力。

答案 1 :(得分:1)

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

您可以将新脚本文件部署为内容,应用程序将在下次启动时执行它,升级数据库

答案 2 :(得分:1)

您可以调用随MSSQL一起提供的osql或sqlcmd。

或者您可以使用SMO来运行数据库更改脚本。请参阅this blog它是如何完成的。