SELECT * FROM [链接服务器名称].[数据库名].sys.objects然后根据type字段的值,分别对应不同数据库对象,具体自己看下MSDN好了。
仅供参考: 链接服务器的所有数据库:SELECT * FROM [链接服务器名称].[数据库名称].sys.databases链接服务器的所有用户:SELECT * FROM [链接服务器名称].[数据库名称].sys.syslogins SELECT * FROM [链接服务器名称].[数据库名称].sys.sysremotelogins SELECT * FROM [链接服务器名称].[数据库名称].sys.sysoledbusers SELECT * FROM [链接服务器名称].[数据库名称].sys.sysusers链接服务器的所有表:SELECT * FROM [链接服务器名称].[数据库名称].sys.sysobjects WHERE xtype='U'
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 ' --查询示例
select * from ITSV.数据库名.dbo.表名 --导入示例
select * into 表 from ITSV.数据库名.dbo.表名 --以后不再使用时删除链接服务器
exec sp_dropserver 'ITSV ', 'droplogins ' --连接远程/局域网数据(openrowset/openquery/opendatasource)
--1、openrowset --查询示例
select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --生成本地表
select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --把本地表导入远程表
insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
select *from 本地表 --更新本地表
update b
set b.列A=a.列A
from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b
>exec sp_addlinkedserver @server=’别名’,@provider=’sqloledb’,@srvproduct=’’,@datasrc=’远程服务器IP’ 远程注册成功:(亲测) --exec sp_addlinkedserver '注册名','','SQLOLEDB','远程数据库名'
--exec sp_addlinkedsrvlogin '注册名','false',null,'用户名','密码'
--go
但可能您理解错了,我的意思是希望使用sql语句查询链接服务器所有的拥有的数据库、用户和表,不是查询链接服务器上的数据,我仅仅是想获得链接服务器上现在有多少个数据库,每个数据库的名字是什么。
SELECT * FROM [链接服务器名称].[数据库名].sys.objects然后根据type字段的值,分别对应不同数据库对象,具体自己看下MSDN好了。
链接服务器的所有数据库:SELECT * FROM [链接服务器名称].[数据库名称].sys.databases链接服务器的所有用户:SELECT * FROM [链接服务器名称].[数据库名称].sys.syslogins
SELECT * FROM [链接服务器名称].[数据库名称].sys.sysremotelogins
SELECT * FROM [链接服务器名称].[数据库名称].sys.sysoledbusers
SELECT * FROM [链接服务器名称].[数据库名称].sys.sysusers链接服务器的所有表:SELECT * FROM [链接服务器名称].[数据库名称].sys.sysobjects WHERE xtype='U'