如何在SQL Server 2008中将数据库分成两部分?

在我的项目中,我有一个数据库用于一切。 我希望它分成两个数据库。 具有查询值的静态表格将被存储在一个DB中,而另一个DB将具有包含dynamic数据的表格。 我的问题是,如何在这两个数据库之间使用外键约束。 有人可以帮助我,并build议一种方式进行,更好的,如果我提供了一个相同的例子。

我想到使用同义词的表,然后约束同义词。 但后来我才知道同义词不能用于约束。

我需要维护两个数据库表中的关系,因为问题是更新,新版本我只是想更新查找表,为同样我想拆分我的数据库。

罗宾:

如果你想物理分离易失性和静态数据,我build议你看一下文件组function。 (向下滚动到该网页的中间以获取相关信息。)

文件组允许你分组表。 这允许您更容易地控制其物理位置(经常使用的数据可以放在快速SSD上,其他数据可以放在较慢的硬盘上),控制读/写访问(文件组可以标记为只读)并改进备份/恢复scheme(可以备份或恢复文件组)。 由于所有的表都在同一个数据库中,不pipe文件组如何,声明性参照完整性(DRI,也称为“外键”)仍然有效。

如果你坚持使用不同的数据库,你将无法使用外键,将不得不使用不同的方法。 这意味着写你自己的触发器(或者可能是程序)。 编写自己的代码意味着额外的工作,代码中总会有错误,触发器通常比DRI执行得更差。 使用不同的数据库还有其他一些负面的方面,最明显的安全性(你将有两倍的pipe理)和时间点恢复(两个数据库之间的一致性比一个数据库更难)。 这些东西今天可能看起来并不重要, 但是

  1. 现在正确地做事情比稍后修理更容易。
  2. 养成良好的习惯是最好的。

让我build议你是无知的,不知道你想要什么。

看,sql服务器的大小是一个问题 – 无论是在达到10GB的硬限制时,或者当你打到“真实”的服务器时 – 不知道,也许是10000GB左右。

大多数情况下,你的假设是错误的 – 你可以什么都不做,只有广告的复杂性(外键不工作,MSUT取而代之的是触发器)。 如果这是两个分贝,那么你什么也不能做,如果这是两台服务器,你会增加延迟和其他一些问题。

我会先假设你在这里提出的要求是无效的。 为什么你认为有这个需要?

我有一个近1000GB的数据库在家里,没有问题的大小。