关于truncate table remote学习笔记

本文介绍了一种通过T-SQL语句配置远程数据库访问的方法,并记录了解决因密码更改导致的访问失败问题的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        昨天有个十多年的项目突然无法正常查询,通过排查发现其使用truncate table remote远程数据库上的表,第一眼有点懵逼。从没有使用过这种方法,通过百度得出

要想在本地访问服务器上的数据库数据得先执行两个存储过程:

exec sp_addlinkedserver '[目标服务器]','','SQLOLEDB','[服务器]'
exec sp_addlinkedsrvlogin
'[目标服务器]',
'false',
NULL,
'[数据库账号]',
'[数据库密码]'
执行完后便可以访问了
select * into [表名] from [目标服务器].[数据库].dbo.[表名]

故以本机执行以下T-SQL

--gamedb
declare @ServerName varchar(128)
declare @IP         varchar(15)
declare @Database   varchar(128)
declare @Password   varchar(128)
set @ServerName ='服务器名'
set @IP         ='服务器IP'
set @Database   ='访问数据库库名'
set @Password   ='密码'

exec sp_addlinkedserver 
@server     = @ServerName,  
@srvproduct = '',          
@provider   = 'SQLOLEDB',  
@datasrc    = @IP,    
@catalog    = @Database

exec sp_addlinkedsrvlogin 
@rmtsrvname = @ServerName,   
@useself = 'true',        
@rmtuser = '访问账号',        
@rmtpassword = @Password

exec sp_serveroption 
@server   = @ServerName,
@optname  = 'RPC',
@optvalue = 'true'

exec sp_serveroption 
@server   = @ServerName,
@optname  = 'RPC out',
@optvalue = 'true'

EXEC sp_addlinkedsrvlogin @ServerName, 'TRUE'

报错提示用户没有操作权限,我登录的账号是管理员的账号,于是乎

 查看当前USER为guest,执行下面赋权语句

SELECT CURRENT_USER;

GRANT EXECUTE ON SYS.XP_PROP_OLEDB_PROVIDER TO guest;


此过程并没有解决相关问题,通过查询,可能和计算机名有关,只好远程到数据库服务器。通过服务器本机执行



首先查询select * from sysservers

看到系统存储有该访问linkedserver,判断可能是访问数据库密码更换原因

决定先删除重新执行

进行删除操作

sp_configure 'allow updates', 1

RECONFIGURE WITH OVERRIDE

delete from sysservers where srvname='连接对方数据库IP'


sp_configure 'allow updates', 0

RECONFIGURE WITH
OVERRIDE

 

注:(此过程需逐步执行)


最后执行上面的T-SQL成功解救问题



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值