SQL总结之跨数据库服务器之间的数据访问(MSSQL)

跨数据服务器访问数据,有什么用呢?它主要用于不同系统间的在数据库层面的数据同步。

例如ERP中财务系统作为整个ERP的核心,其它的进销存相关的系统要与财务系统对接,除了财务系统提供相应的服务接口外,剩下的恐怕只有直接向财务系统写数据了,而通常更直接的做法,不是系统直接读写财务数据库A,而是在系统自己的数据库B上提供接口(如存储过程),由数据库B直接向财务数据库A同步数据。

MSSQL可以创建对其它数据库的链接,像访问本地数据库一样访问远程数据库中对象(表、存储过程等),创建链接的方式有两种。另外,还有一种数据库直连的方式。这三种方式如下:

1、在SQL Server Managerment上操作创建链接服务器
创建链接服务器1
创建链接服务器2
2、直接使用SQL创建链接服务器

-- 创建链接服务器
EXEC master.dbo.sp_addlinkedserver @server = N'172.16.8.95', @srvproduct=N'SQL Server'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'172.16.8.95',@useself=N'False',@locallogin=NULL,@rmtuser=N'hrdev',@rmtpassword='hr@123'
GO
-- 使用示例1: 取数据
select * from [172.16.8.95].hrdb.dbo.A01
-- 使用示例2: 导入表结构及数据
-- select * into test from [172.16.8.95].hrdb.dbo.A01
--以后不再使用时删除链接服务器
IF  EXISTS (SELECT srv.name FROM sys.servers srv WHERE srv.server_id != 0 AND srv.name = N'172.16.8.95')
    EXEC master.dbo.sp_dropserver @server=N'172.16.8.95', @droplogins='droplogins'
GO

3、其它:openrowset/openquery/opendatasource

/*
select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
SELECT * FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta
*/
select * from openquery([172.16.8.95],'select * from ams_biz_Leave')
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页