我最近继承了一个环境,其中大约 4000 多个数据库分布在 3 个巨大的物理服务器上的 21 个实例之间。数据库根据名称分布在不同的实例之间,因此有些实例比其他实例大几倍。所有数据库的架构都是相同的,但数据不是。一些数据库只有几 MB,而另一些则是 400+GB。
管理层正在考虑我们是否应该尝试在每个实例上保留尽可能多的数据库并减少大型实例。另一个想法是在现有环境中不断添加小实例,甚至减少每个现有实例中的数据库数量并增加实例数量。
在管理方面,与许多小实例相比,拥有更少的大实例可能更容易。另一方面,如果大实例发生问题,那么它上的所有数据库都会受到影响,因此拥有许多小实例可能更安全。
从性能的角度来看,什么会更好?我还应该考虑哪些其他因素?我应该在每个实例上保留多少个数据库?我知道这取决于,但你有一些粗略的估计吗?例如,一个实例上的 500 个数据库是否太多?如果您需要更多信息,请告诉我。
我忘了提到所有这些数据库都是不同客户的生产数据库,因此它们都同样重要。开发、测试等在不同的服务器上。
我需要将 db_owner 分配给实例中的所有用户。实例中有几百个登录名和相同数量的数据库。我希望每个用户都能在该用户所在的数据库中获取 db_owner。我知道如何为单个用户执行此操作,但我不知道如何同时为所有用户执行此操作。
我很清楚将 db_owner 提供给每个人并不是一个好主意,但是……我们正在安装一个非常具体的应用程序。每个想要使用此应用程序的用户都需要 db_owner。我们已经尝试过绕行,但是 aplicaton 本质上是相当原始的,所以在更改应用程序代码之前,我们将不得不容忍 db_owners 的疯狂数量。无论如何,这个特定实例没有敏感数据,所以我们得到了管理层的批准。
假设我们使用 SQL Server Management Studio 执行一个很长的删除查询。为了这个例子,我们假设它的执行时间是 10 小时。虽然它在进程中执行了几个小时,但 SSMS 崩溃了。查询会发生什么?尽管 SSMS 不再运行,它会回滚还是继续执行?
当 SSMS 崩溃时,数据库还原会终止,但我很想知道更改和删除会发生什么。