【问题标题】:Programmatically load and use databases to MS SQL Server 2008以编程方式将数据库加载和使用到 MS SQL Server 2008
【发布时间】:2015-02-23 15:17:41
【问题描述】:

我有 MS SQL Server 2008 和一个使用实体框架用 C# 编写的程序。在不使用任何第三方工具的情况下,我可以:

  1. 是否每天将数据库中某些表的文件备份到文件中?
  2. 以编程方式告诉 SQL Server“这是包含一些表的文件,将其恢复到新的数据库 A”,然后连接到数据库 A 并使用数据,如果需要,删除数据库并加载下一个文件?李>

【问题讨论】:

  • 为什么不使用 SQL Server 本身来完成您的要求?
  • 我需要开发一个工具,让管理层可以在没有技术帮助的情况下加载过去任何一天的副本并在两个数据库之间执行分析。
  • 听起来你需要聘请合格的DBA 并停止试图偷工减料意思是Stop being Cheap
  • 你看过LocalDB吗? This SO post 可能对使用 LocalDB 进行备份和恢复很有价值。
  • 谢谢你,dotNET。您指向的帖子很有趣,可能是我正在寻找的。我认为如果 db 用户有足够的权限(创建、删除数据库),他们在帖子中显示的内容应该可以工作。

标签: c# sql-server entity-framework


【解决方案1】:

你可以。每日备份应由 SQL 完成,然后您的程序将用于定位备份并将其还原到新数据库。您可以在 SQL 之外进行备份,但不确定为什么需要/想要这样做。

步骤是 - 创建新的空数据库 - 将备份恢复到新的空数据库 - 修复 DB 上的用户权限(如果适用)

您可以重载 EF 模型的构造函数,以接收您将根据刚刚重新加载的数据库即时创建的连接字符串。

就备份和恢复某些表而言,您可能需要尝试以下操作。

  1. 为不需要经常备份和恢复或对此过程没有价值的“数据繁重”项目创建单独的数据库。
  2. 将这些项目从当前数据库移动到新数据库
  3. 在原始 DB 中添加与移出的表同名的视图,并在第二个 DB 上拉入新表的视图

只要视图的名称与您移动的表的名称 100% 相同,并且视图仅在单个表上,您的程序就不应该知道其中的区别,但您现在可以备份较小的数据库,而不是包括所有文件和图像数据。希望这是有道理的

如果您有更尖锐的问题,可以尝试提供更多信息

【讨论】:

  • 我知道完全备份数据库没有问题,这可以设置为服务器管理中的任务(实际上已经完成)。但是,当前的数据库是 500 GB,主要是因为它充满了图像数据。我的日常备份中不需要该图像数据。在 SQL Server 2008 中是否可以只备份某些表?
  • 我明白你在说什么,但是项目非常大,所以拆分数据库和创建视图似乎需要很多工作。事实上,我只需要备份不到 1% 的数据。我只是想找到答案:数据库有表 A、表 B 和表 C。我可以将数据库备份到只有表 A 的文件吗?如果这不可能,我会将实体对象序列化为 XML,并以我自己的格式保存备份。我只是想确保我没有重新发明轮子,因为我不是 SQL Server 专家。
  • @Evgeny,我不相信有一种方法可以像您所说的那样备份单个表。我理解你所说的大量工作是什么意思,但根据我与这样的数据库打交道的经验,你会一次又一次地感谢自己迟早做这项工作。由于许多其他原因。代码不错,希望能成功。
  • 我找到了微软的官方回答,在 2008 Management Studio 中你不能设置单个对象的备份。尽管我将采用不同的解决方案,但您的答案 workabyte 是最现实的。谢谢。
猜你喜欢
  • 2010-11-26
  • 2011-11-04
  • 2012-10-14
  • 1970-01-01
  • 2010-10-20
  • 2014-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多