为了解决跨服的问题,要用linkserver
新建linkserver,先在sms里新建个linkserver,然后create到文本框
--先建linkserver
EXEC master.dbo.sp_addlinkedserver @server = N'TEST1', @srvproduct=N'192.168.9.61',@provider=N'SQLNCLI',@datasrc=N'192.168.9.61', @catalog=N'bdg'
--再建登陆
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'TEST1',@useself=N'False',@locallogin=N'ben.zhao',@rmtuser=N'ben.zhao',@rmtpassword=N'123.abc'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST1', @optname=N'collation compatible', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST1', @optname=N'data access', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST1', @optname=N'dist', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST1', @optname=N'pub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST1', @optname=N'rpc', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST1', @optname=N'rpc out', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST1', @optname=N'sub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST1', @optname=N'connect timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST1', @optname=N'collation name', @optvalue=null
GO
EXEC master.dbo.sp_serveroption @server=N'TEST1', @optname=N'lazy schema validation', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST1', @optname=N'query timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST1', @optname=N'use remote collation', @optvalue=N'true'
用户名很重要,很多无权限,比如我这个ben.zhao,只能用ben.zhao.[表]
然后,你就可以用
select * from TEST1.bdg.[ben.zhao].HotelExpiredInfo
SELECT * FROM OPENQUERY(TEST1,'select * from HotelExpiredInfo')
如果用同义词
CREATE SYNONYM [dbo].[HotelExpiredInfo] FOR [TEST1].bdg.[ben.zhao].HotelExpiredInfo