仅备份新的或编辑的记录
我已经构建了一个 SQL Server Express 数据库,该数据库将存储在外部硬盘上。我需要能够在我的系统以及其他系统上的数据库上添加/更新数据,然后仅备份或传输已添加或编辑到外部硬盘驱动器的数据。实现这一目标的最佳方法是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我已经构建了一个 SQL Server Express 数据库,该数据库将存储在外部硬盘上。我需要能够在我的系统以及其他系统上的数据库上添加/更新数据,然后仅备份或传输已添加或编辑到外部硬盘驱动器的数据。实现这一目标的最佳方法是什么?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
您可能会为此使用复制,但由于您使用的是 SQL Server Express,因此这不是一个选项。
您需要某种机制来确定备份之间发生了什么变化。因此,每个表都需要一个时间戳或上次更新日期时间列,每次插入或更新记录时都会更新该列。从触发器而不是从您的应用程序更新此列可能更容易。
一旦您知道插入或更新了哪些记录,那么只需从上次执行操作时搜索这些记录即可。
另一种方法是添加一个已更新的位列,但这似乎不太灵活。
You would probably use replication for this but as you're using SQL Server express this isn't an option.
You'll need some sort of mechanism to determine what has changed between backups. So each table will need a timestamp or last updated date time column that's updated every time a record is inserted or updated. It's probably easier to update this column from a trigger rather than from your application.
Once you know which records are inserted or updated then it's just a matter of searching for these from the last time the action was performed.
An alternative is to add a bit column which is updated but this seems less flexible.
Sherry,请解释一下应用程序以及您设计的基本原理。数据库没有任何机制可以做到这一点。您必须自己跟踪更改,然后执行您需要执行的操作。 SQL Server 2008 内置了更改跟踪功能,但我认为这对您使用 Express 没有帮助。
另外,请查看同步框架。将其添加到您的平台中是一个主要的有效负载,但如果保持数据同步是您应用程序的主要目标之一,那么它可能会给您带来回报。
Sherry, please explain the application and what the rationale is for your design. The database does not have any mechanism to do this. You'll have to track changes yourself, and then do whatever you need to do. SQL Server 2008 has a change tracking feature built in, but I don't think that will help you with Express.
Also, take a look at the Sync Framework. Adding this into your platform is a major payload, but if keeping data in sync is one of the main objectives of your app, it may pay off for you.
在应用程序中
如果您在应用程序中执行此操作,则每次更新或插入行时 - 修改名为 dirty 的位/布尔列并将其设置为 true。当您选择要导出的行时,请仅选择 dirty 设置为 true 的列。导出后,将所有脏列设置为 false。
在应用程序外部
DTS 向导
如果您在应用程序外部执行此操作,则在命令行中运行此操作:
文章解释如何获取 DTS 向导(默认情况下不包含)。
bcp 实用程序
In an application
If you are doing this from an application, every time a row is updated or inserted - modify a bit/bool column called dirty and set to true. When you select the rows to be exported, then select only columns that have dirty set to true. After exporting, set all dirty columns to false.
Outside an application
DTS Wizard
If you are doing this outside of an application, then run this at the Command-Line:
This article explains how to get the DTS Wizard (it is not included as default).
bcp Utility