关于truncate table remote学习笔记

来源:互联网 发布:画网络拓扑图的软件 编辑:程序博客网 时间:2024/04/30 03:31

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

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

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

故以本机执行以下T-SQL

--gamedbdeclare @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    = @Databaseexec sp_addlinkedsrvlogin @rmtsrvname = @ServerName,   @useself = 'true',        @rmtuser = '访问账号',        @rmtpassword = @Passwordexec 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成功解救问题



原创粉丝点击