sqlserver 2008 局域网跨服务器T-SQL操作(一)

时间:2021-03-28 03:33:25
--查看当前链接情况:
select * from sys.servers; --增加链接,参数:服务器别名,为链接服务器的OLE DB数据源的产品名称,与此数据源对应的OLE DB访问接口的唯一编程标识符(PROGID),由OLE DB访问接口解释的数据源的名称
--这种设置链接服务器的方式强制链接服务器的名称与 SQL Server 远程实例的网络名称相同,也就是计算机名称
参考:https://msdn.microsoft.com/zh-cn/library/ms190479.aspx
EXEC sp_addlinkedserver
@server=N'WIN-6SK2NQX',
@srvproduct=N'',
@provider=N'SQLOLEDB',
@datasrc=N'192.168.35.6' --增加用户登录链接,参数:被访问的服务器别名,是否通过模拟本地登录名或显式提交登录名和密码来连接,是否本地登录,登录用户名,登录密码 参考:https://msdn.microsoft.com/zh-cn/library/ms189811.aspx
 EXEC sp_addlinkedsrvlogin 'WIN-6SK2NQX','false',NULL,'sa','server' 

--使用 sp_helpserver 来显示可用的链接服务器 
Exec sp_helpserver --删除已经存在的某个链接,参数:服务器别名,本地服务器上的SQL Server登录。如果要删链接,则先要删除登录映射 参考:https://msdn.microsoft.com/zh-cn/library/ms186218(v=sql.120).aspx
Exec sp_droplinkedsrvlogin 'WIN-6SK2NQX',NULL 
Exec sp_dropserver 'WIN-6SK2NQX' --应用:链接别名.数据库名.表名
SELECT * from CEM1.[Test2.1].dbo.userinfo

如果在操作过程中遇到“其他会话正在使用事务的上下文”错误,我是在触发器中使用这个方式操作链接数据库的,发生了这个错误。

一种解释:查看一下该存储过程中是否有链接服务器指向本地,SQLSERVER2005不支持在分布式事务处理中存在指向本地的链接服务器(环回链接服务器)
又一种解释:其原因是由于计算机名和sql server 2005的servername不一致所致。
可以通过 select @@servername 
查看数据库中的计算机网络名,重新按照这个名字添加一下链接服务器使用