创建连接服务器:
/****** Object: LinkedServer [LinkedServer_Name] Script Date: 2021/3/19 16:46:49 ******/
EXEC master.dbo.sp_addlinkedserver @server = N'LinkedServer_Name', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'10.**.1*2.75'
/* For security reasons the linked server remote logins password is changed with ######## */
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'LinkedServer_Name',@useself=N'False',@locallogin=NULL,@rmtuser=N'sa',@rmtpassword='########'
代码中的几个重要参数:
- @server = N’LinkedServer_Name’
LinkedServer_Name连接服务器名称 - @rmtsrvname=N’LinkedServer_Name’
LinkedServer_Name连接服务器名称 - @provider=N’SQLNCLI’
SQLNCLI驱动 - @datasrc=N’10..1*2.75’
10..1*2.75是要链接的服务器的IP - @rmtuser=N’sa’
sa是目标服务器中数据库的登录名 - @rmtpassword=’########’
==########==是目标服务器中数据库的登录密码
数据查询
连接服务器写法:
SELECT TOP 100000 INVOICEACCOUNT FROM [10.**.1*2.77].Dynamics.dbo.CUSTOMER
OpenQuery写法:
SELECT * FROM OPENQUERY([10.**.1*2.77],'
SELECT TOP 100000 INVOICEACCOUNT FROM Dynamics.dbo.CUSTOMER
')
越是复杂的查询逻辑,OpenQuery的优势越明显,我在项目中同步数据时逻辑比较复杂,使用连接服务器时每次需要运行40分钟左右,同等数据量改为OpenQuery时速度提升了30分钟,只用了不到十分钟,觉得还是比较好用的,先记录下。