SQL Server 跨服务器操作

Posted Abeam

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server 跨服务器操作相关的知识,希望对你有一定的参考价值。

Ø  简介

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

 

Ø  首先,模拟以下场景

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

clip_image001[12]

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.   新建完成后就会出现在链接服务器列表中,如图:

clip_image002[12]

 

1)   插入数据

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

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

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

 

2)   查询数据

1.   SQL 代码

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

2.   结果

clip_image003[12]

 

3)   修改数据

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

 

4)   删除数据

DELETE FROM [MyServer].[DbName].[dbo].Subject WHERE SubjectId=6;

 

2.   使用 OPENQUERY() 函数

使用 OPENQUERY() 函数前,同样需要新建一个链接服务器,并向 OPENQUERY() 函数指定将使用的链接服务器。

1)&

以上是关于SQL Server 跨服务器操作的主要内容,如果未能解决你的问题,请参考以下文章

(c)2006-2024 SYSTEM All Rights Reserved IT常识