![使用 SQL Server 2008 数据库扩展 Web 应用程序](https://linux22.com/image/588081/%E4%BD%BF%E7%94%A8%20SQL%20Server%202008%20%E6%95%B0%E6%8D%AE%E5%BA%93%E6%89%A9%E5%B1%95%20Web%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F.png)
我有一个数据库,其中 90% 的表都是只读的。10% 的表有可写数据。我们需要扩展 ASP.NET 应用程序。我们需要添加更多不会写入数据库的用户。我们正在考虑添加另一台服务器,并将需要只读访问权限的用户路由到该服务器。有没有办法将一些表复制到另一台数据库服务器。由于 90% 的数据没有变化,我们不想设置任何完整的数据库复制。请提供建议。
答案1
我反对“我们不想设置任何完整的数据库复制”,因为 SQL Server 2012 中有一个非常漂亮的功能:AlwaysOn。
通过此设置,您可以设置只读(同步或异步)从属服务器,并使用新的连接代理自动将读取请求路由到一个或多个服务器。这涉及一些与连接请求相关的工作(具体来说,在连接字符串中添加 READ_ONLY,以便代理可以正确重定向)。
这是一种非常简单的方法,可以扩展到最多 4 个 SQL 服务器(一个主服务器,3 个只读服务器)。
答案2
你出于什么原因尝试扩展应用程序?你确定应用程序需要扩展吗?你完全确定索引设置正确,以便读取速度尽可能快吗?你只是内存受限吗?你 CPU 受限吗?你 IO 受限吗?通常,扩大一台服务器比第二台服务器所需的 SQL Server 许可证更便宜。
假设您的应用程序已完全调整...
如果您的用户需要对数据的读取权限,他们就需要对所有数据的读取权限。如果您 100% 确定他们不需要对所有数据的读取权限,则可以使用 SQL Server 复制并对文章使用过滤器,这样您只需要复制部分数据。
如果您正在考虑使用 SQL Server 2012,您可以查看 AlwaysOn,但这是企业版功能,因此许可证会非常昂贵。