码迷,mamicode.com
首页 > 数据库 > 详细

SQL Server 跨服务器操作

时间:2018-06-15 19:07:14      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:indent   数据   使用   val   可视化   上下   orm   连接查询   远程   

?  简介

在工作中编写 SQL 时经常会遇到跨库或跨服务器操作,比如查询时,通过 A 服务器的某张表关联 B 服务器某张表,进行连接查询。或者从另一台服务器中的数据,对当前数据库中的数据进行 CRUD 操作;又或者对远程服务器的数据进行 CRUD 操作。本文主要讨论在 SQL Server 中如何结合远程服务器中的数据进行操作,以及常用的几种方法。

 

?  首先,模拟以下场景

1.   A服务器(本地)有一张 Score(成绩)表,数据如下:

技术分享图片

2.   B 服务器(远程)有一张 Subject(科目)表,结构如下:

CREATE TABLE dbo.Subject

(

    SubjectId tinyint NOT NULL,                             --科目Id

    GradeId int NOT NULL,                                   --年级Id

    SubjectName nvarchar(25) NOT NULL,                      --名称

    ClassHour smallint NOT NULL                             --课时

    CONSTRAINT PK_Subject_SubjectId PRIMARY KEY CLUSTERED

    (

        SubjectId ASC

    ) ON [PRIMARY]

) ON [PRIMARY];

 

1.   使用链接服务器

?  首先新建链接服务器

1.   代码新建

--创建链接服务器

EXEC sp_addlinkedserver ‘MyServer‘, ‘‘, ‘SQLOLEDB‘, 服务器地址;

--登录服务器

EXEC sp_addlinkedsrvlogin ‘MyServer‘, ‘false‘, null, ‘sa‘, ‘Password‘;

--查询可用服务器

EXEC sp_helpserver;

--删除链接服务器(使用完记得删除)

EXEC sp_dropserver ‘MyServer‘, ‘droplogins‘;

 

2.   可视化新建

1)   某数据库服务器 -> 服务器对象 -> 链接服务器 -> 新建链接服务器。

2)   常规:链接服务器(服务器名称随便起) -> 其他数据源 -> 数据源(服务器地址) -> 其他选项可以为空。

3)   安全性:使用此安全上下文建立链接 -> 远程登录(输入 sa -> 使用密码(输入密码)

 

3.   新建完成后就会出现在链接服务器列表中,如图:

技术分享图片

 

1)   插入数据

INSERT INTO [MyServer].[Youle0327].[dbo].Subject VALUES

(1, 1, 数学, 286),(2, 1, 语文, 278),(3, 1, 英语, 291),

(5, 2, 语文, 288),(6, 2, 英语, 271);

 

2)   查询数据

1.   SQL 代码

SELECT * FROM [MyServer].[Youle0327].[dbo].Subject;

2.   结果

技术分享图片

 

3)   修改数据

UPDATE [MyServer].[Youle0327].[dbo].Subject SET SubjectName=物理 WHERE SubjectId=6;

 

4)   删除数据

DELETE FROM [MyServer].[Youle0327].[dbo].Subject;

 

2.   使用 OPENROWSET() 函数

1)   插入数据

INSERT INTO OPENROWSET(‘SQLOLEDB‘, 服务器地址; ‘sa‘; ‘Password‘, Youle0327.dbo.Subject) VALUES

(1, 1, 数学, 286),(2, 1, 语文, 278),(3, 1, 英语, 291),

(5, 2, 语文, 288),(6, 2, 英语, 271);

 

2)   查询数据

SELECT * FROM OPENROWSET(‘SQLOLEDB‘, 服务器地址; ‘sa‘; ‘Password‘, Youle0327.dbo.Subject);

 

3)   修改数据

UPDATE OPENROWSET(‘SQLOLEDB‘, 服务器地址; ‘sa‘; ‘Password‘, Youle0327.dbo.Subject) SET SubjectName=物理 WHERE SubjectId=6;

 

4)   删除数据

DELETE FROM OPENROWSET(‘SQLOLEDB‘, 服务器地址; ‘sa‘; ‘Password‘, Youle0327.dbo.Subject);

SQL Server 跨服务器操作

标签:indent   数据   使用   val   可视化   上下   orm   连接查询   远程   

原文地址:https://www.cnblogs.com/abeam/p/9188549.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!