SQL Server 2008 局域网跨服务器T-SQL操作(一)
--查看当前链接情况: select * from sys.servers;
--增加链接,参数:服务器别名,为链接服务器的OLE DB数据源的产品名称,与此数据源对应的OLE DB访问接口的唯一编程标识符(PROGID),由OLE DB访问接口解释的数据源的名称
--这种设置链接服务器的方式强制链接服务器的名称与 SQL Server 远程实例的网络名称相同,也就是计算机名称
--@server:链接别名(自定义)
--@provider:访问接口类型
--@datasrc:对方的数据库实例
官方参考: sp_addlinkedserver
EXEC sp_addlinkedserver @server=N'ZJ01', @srvproduct=N'', @provider=N'SQLOLEDB', @datasrc=N'172.16.1.15\SQL2008R2'
--增加用户登录链接,参数:被访问的服务器别名,是否通过模拟本地登录名或显式提交登录名和密码来连接,是否本地登录,登录用户名,登录密码
官方参考: sp_addlinkedsrvlogin
EXEC sp_addlinkedsrvlogin 'WIN-6SK2NQX','false',NULL,'sa','server'
--使用 sp_helpserver 来显示可用的链接服务器
Exec sp_helpserver
--应用:链接别名.数据库名.dbo.表名
SELECT * from ZJ01.[Mvc_web_zj01].dbo.sys_user
--删除已经存在的某个链接,参数:服务器别名,本地服务器上的SQL Server登录。如果要删链接,则先要删除登录映射
Exec sp_droplinkedsrvlogin 'WIN-6SK2NQX',NULL
Exec sp_dropserver 'WIN-6SK2NQX'
如果在操作过程中遇到“其他会话正在使用事务的上下文”错误,我是在触发器中使用这个方式操作链接数据库的,发生了这个错误。
一种解释:
查看一下该存储过程中是否有链接服务器指向本地,SQLSERVER2005不支持在分布式事务处理中存在指向本地的链接服务器(环回链接服务器)
又一种解释:其原因是由于计算机名和sql server 2005的servername不一致所致。可以通过
select
@@servername
查看数据库中的计算机网络名,重新按照这个名字添加一下链接服务器使用
分类:
SQL Server
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律