更新SQL LocalDB而不覆盖数据

时间:2014-03-07 10:01:47

标签: sql-server sql-server-express localdb

我正在通过Visual Studio 2013开发一个带有LocalDB的c#.net站点。

我有许多存储过程,这些过程可能会在将来发生变化,但随着项目的发展,肯定会有一些新增功能。

实时站点/服务器将定期收集新日期,因此将与开发副本不同步。此外,我有许多存储过程正在使用中,这可能需要在将来进行调整。随着项目的发展,肯定会有新的存储过程。

所以,我的问题是......如何在不覆盖实时站点数据库中的数据的情况下进行这些更改/添加?

作为后续..使用“完整”版本的SQL Express而不是LocalDB会更好吗?

1 个答案:

答案 0 :(得分:2)

我建议您在数据库中使用列DBVersion创建一个名为VID的表。然后创建一个MS Access DB(因为它更方便)并在其中存储新添加的过程:

AccessDB中的表包含以下列:

DBVersionID    NewQuery

创建新过程时,将其添加到Access DB。例如:

DBVersionID    NewQuery
1              CREATE PROC BLABLABLA
2              ALTER PROC ASDF

每当应用程序启动时,

select NewQuery FROM AccessDB WHERE DBVersionID>(Select VID FROM DBVersion) 

执行其中每一个并使用最后执行的VID的{​​{1}}更新DBVersionID

从现在开始,无论何时添加新过程,都要将它们添加到AccessDB中,只需替换每个实时客户端中的AccessDB文件即可。