对【SQL SERVER 分布式事务解决方案】的心得补充
常常要通过存储过程修改链接数据库中的数据,需要在源数据库服务器和目标数据库服务器上配置分布式事务,配置过程比较繁琐,分布式事务出现问题既有操作系统的原因也有SQL SERVER的原因。读了《sql server分布式事务解决方案》一文以后,我感觉基本上已经形成了一套标准化的配置步骤,但第6节中没有提到当SQL Server的名称和计算机名不一致时应该采取的措施。
对于全新安装的机器,按照中文文档的要点配置,应该不会有什么问题。如果按以上配置还有问题,参考英文文档,很可能是安装SQL SERVER以后修改过计算机名(网络名),导致SQL Server的名称和计算机名不一致。
--查询SQL SERVER名称
SELECT @@SERVERNAME
SELECT @@SERVERNAME
最好先在服务器上相互ping以下对方计算机名,看看返回的IP地址对不对,防止网络上计算机重名。如果计算机名解析IP地址无误,那么就按计算机名来修改SQL SERVER名称。
--SQL SERVER 2005 修改服务器名
sp_dropserver <old_name\instancename>
GO
sp_addserver <new_name\instancename>, local
GO
--SQL SERVER 2000 修改服务器名
use master
go
sp_configure 'allow up',1
RECONFIGURE WITH OVERRIDE
GO
update sysservers set srvname=<new_name> where srvid=0
update sysservers set datasource=<IP> where srvid=1
go
sp_configure 'allow up',0
RECONFIGURE WITH OVERRIDE
GO
sp_dropserver <old_name\instancename>
GO
sp_addserver <new_name\instancename>, local
GO
--SQL SERVER 2000 修改服务器名
use master
go
sp_configure 'allow up',1
RECONFIGURE WITH OVERRIDE
GO
update sysservers set srvname=<new_name> where srvid=0
update sysservers set datasource=<IP> where srvid=1
go
sp_configure 'allow up',0
RECONFIGURE WITH OVERRIDE
GO
中文参考文档:sql server分布式事务解决方案
英文参考文档:How to troubleshoot error 7391 that occurs when you use a linked server in SQL Server