由于硬件故障,我们正在将安装的软件从一台服务器迁移到新的服务器。 有两个软件(vmware vcenter和symantec备份执行程序)依赖于单独的SQLServer Express实例。
这个软件的初始设置(两者都是)由外部公司完成,似乎他们遵循下一步 – > … – >下一步 – >完成的方法来安装软件,结束每个结果是一块软件拥有自己的SQLServer Express实例。
我的问题是,这种方法是最好的select,还是将所有的数据库保持在同一个SQLServer Express实例?
针对同一台计算机上的多个SQL Server实例的通常参数是,每个实例都使用其他资源。 这意味着整个SQL Server二进制副本,系统数据库和其他杂项文件的额外磁盘空间。 与运行服务器二进制本身相关的CPU,线程和RAM开销。 最大的资源块可能是两个独立的数据caching。 有两个数据高速caching可能会阻止一个实例或另一个实例有效使用RAM,这取决于数据库的大小,如何查询系统以及如何configuration系统。 额外的实例也会有额外的pipe理时间。 例如,将创build和监视两个备份作业,创build和监视两个重新索引作业,要configuration的最小和最大RAM值等。您可能需要为每个附加实例打开其他防火墙端口。
对于多个实例来说,最stream行的(也是最好的,IMO)的论点是,两个不同的应用程序需要尽可能地彼此隔离,从安全angular度来看。 IIRC,该function最初旨在帮助PaaS供应商在虚拟化准备好黄金时代之前为客户端提供SQL Server,而SQL Server(和Windows Server)必须安装在“裸机”上。 显然,这些客户需要彼此完全隔离,而且这些安全问题今天与2000年相同。
有些应用程序需要tempdb的特定归类,这是由实例上运行的所有应用程序共享的。 这可以解决多个实例。 同样,如果您的应用程序需要特定的服务包或修补程序级别,则可以使每个实例保持不同的版本。
如果您有两个不同的应用程序(或同一应用程序的不同版本(开发,testing,生产))必须使用相同的数据库名称,则安装多个实例是一个可行的解决scheme。
(必须隔离的另一个解决scheme是运行两个虚拟化操作系统,每个虚拟操作系统都有自己的SQL Server安装,这样可以提供更好的隔离,但是这会增加授权和pipe理的成本,并增加资源开销计算机,也就是说,越来越多的DBA立刻开始虚拟化,可能是“多个实例”是一个时代已经到来的function,至less对于大型系统来说,我还没有看到任何迹象表明微软将放弃它。)