select * from sys.servers where name='服务器'执行成功,就会在表中添加记录
declare @re int EXEC @re=sp_addlinkedserver 'ser2', '','SQLOLEDB', '192.168.1.40' if @re=0 print '成功' else print '失败' EXEC @re=sp_addlinkedsrvlogin 'ser2', 'false ',null, 'sa', '123456' if @re=0 print '成功' else print '失败'
sp_addlinkedserver 返回代码值 0(成功)或 1(失败) --服务器 select * from sys.serverswhere name='服务器' --用户 SELECT * FROM sys.linked_logins WHERE server_id IN ( SELECT server_id FROM sys.servers where name = '服务器名' ) --服务器连接状态 create function fgetsstatus( @servername varchar(50) --服务器名 ,@userid varchar(50)='sa' --用户名,如果为nt验证方式,则为空 ,@password varchar(50)='' --密码 ) returns varchar(20) as begin declare @re varchar(20),@ire int --返回状态 declare @srvid int --定义服务器、数据库集id declare @err int,@src varchar(255), @desc varchar(255) --错误处理变量 --创建sqldmo对象 exec @err=sp_oacreate 'sqldmo.sqlserver',@srvid output if @err <>0 goto lberr --连接服务器 if isnull(@userid,'')='' --如果是 Nt验证方式 begin exec @err=sp_oasetproperty @srvid,'loginsecure',1 if @err <>0 goto lberr exec @err=sp_oamethod @srvid,'connect',null,@servername end else exec @err=sp_oamethod @srvid,'connect',null,@servername,@userid,@password if @err <>0 goto lberr --获取服务器状态 exec @err=sp_oagetproperty @srvid,'Status',@ire output if @err <>0 goto lberr set @re=case @ire when 0 then '未知' when 1 then '运行...' when 2 then '暂停' when 3 then '停止...' when 4 then '正在启动...' when 5 then '正在启动停止...' when 6 then '连接...' when 7 then '正在暂停...' end return(@re) lberr: exec sp_oageterrorinfo NULL, @src out, @desc out declare @errb varbinary(4) set @errb=cast(@err as varbinary(4)) exec master..xp_varbintohexstr @errb,@re out set @re='错误号: '+@re +char(13)+'错误源: '+@src +char(13)+'错误描述: '+@desc return(@re) end go
declare @re int EXEC @re=sp_addlinkedserver 'ser2', '','SQLOLEDB', '192.168.1.40' if @re=0 print '成功' else print '失败' EXEC @re=sp_addlinkedsrvlogin 'ser2', 'false ',null, 'sa', '123456' if @re=0 print '成功' else print '失败'
declare @re int
EXEC @re=sp_addlinkedserver 'ser2', '','SQLOLEDB', '192.168.1.40'
if @re=0 print '成功' else print '失败'
EXEC @re=sp_addlinkedsrvlogin 'ser2', 'false ',null, 'sa', '123456'
if @re=0 print '成功' else print '失败'
sp_addlinkedserver
返回代码值
0(成功)或 1(失败)
--服务器
select * from sys.serverswhere name='服务器'
--用户
SELECT * FROM sys.linked_logins
WHERE server_id IN (
SELECT server_id
FROM sys.servers where name = '服务器名'
)
--服务器连接状态
create function fgetsstatus(
@servername varchar(50) --服务器名
,@userid varchar(50)='sa' --用户名,如果为nt验证方式,则为空
,@password varchar(50)='' --密码 ) returns varchar(20)
as
begin
declare @re varchar(20),@ire int --返回状态
declare @srvid int --定义服务器、数据库集id
declare @err int,@src varchar(255), @desc varchar(255) --错误处理变量 --创建sqldmo对象
exec @err=sp_oacreate 'sqldmo.sqlserver',@srvid output
if @err <>0 goto lberr --连接服务器
if isnull(@userid,'')='' --如果是 Nt验证方式
begin
exec @err=sp_oasetproperty @srvid,'loginsecure',1
if @err <>0 goto lberr exec @err=sp_oamethod @srvid,'connect',null,@servername
end
else
exec @err=sp_oamethod @srvid,'connect',null,@servername,@userid,@password if @err <>0 goto lberr --获取服务器状态
exec @err=sp_oagetproperty @srvid,'Status',@ire output
if @err <>0 goto lberr set @re=case @ire when 0 then '未知'
when 1 then '运行...'
when 2 then '暂停'
when 3 then '停止...'
when 4 then '正在启动...'
when 5 then '正在启动停止...'
when 6 then '连接...'
when 7 then '正在暂停...' end
return(@re)
lberr:
exec sp_oageterrorinfo NULL, @src out, @desc out
declare @errb varbinary(4)
set @errb=cast(@err as varbinary(4))
exec master..xp_varbintohexstr @errb,@re out
set @re='错误号: '+@re
+char(13)+'错误源: '+@src
+char(13)+'错误描述: '+@desc
return(@re)
end
go
EXEC @re=sp_addlinkedserver 'ser2', '','SQLOLEDB', '192.168.1.40'
if @re=0 print '成功' else print '失败'
EXEC @re=sp_addlinkedsrvlogin 'ser2', 'false ',null, 'sa', '123456'
if @re=0 print '成功' else print '失败'