我需要为我的系统实现分布式数据库。这样我的应用程序就可以将数据库看作一个数据库了。但实际的数据库分布在两台或三台服务器上。
如何配置?
答案 0 :(得分:8)
SQL Server不是分布式数据库系统,因此您无法做到这一点。但是,SQL Server中有一种方法可以使您的应用程序将来自不同服务器的数据库视为单个服务器上的单个数据库。您必须add linked servers并为另一台服务器上的对象创建同义词,以便以相同的方式访问它们,如果它们位于同一数据库中,则访问它们。
如MSDN中所述:
可以为以下类型的对象创建同义词:程序集 (CLR)存储过程,汇编(CLR)表值函数,汇编 (CLR)标量函数,汇编聚合(CLR)聚合函数, 复制过滤器过程,扩展存储过程,SQL标量 函数,SQL表值函数,SQL内联表值函数, SQL存储过程,视图,表(用户定义)
此列表可能涵盖您的所有需求。您可以在同一篇文章中找到为远程对象创建同义词的示例。
与往常一样,测试应用程序的性能,因为对分布式对象的查询可能是网络密集型的。例如,如果您从不同的服务器连接两个表,则会有网络流量将数据从一个服务器传送到另一个服务器。也许您想要考虑复制/日志传送/触发器等,以便在主数据库上保留远程对象的精确副本。
请注意,SQL Server 2005中添加了同义词,此处提供的链接适用于SQL Server 2008 R2。