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 跨服务器操作的主要内容,如果未能解决你的问题,请参考以下文章

sql server 2005 跨数据库操作

SQL SERVER 跨服务器查询

sql server service broker中调用存储过程执行跨库操作,不管怎么设置都一直提示 服务器主体 "sa" 无法在当前安全上下文下访问数据库 "dbnam

sqlserver2008如何实现 跨数据库 复制,查询? 跨数据库查询用 jpa 怎么实现? 求高手赐教?

SQL 使用openquery进行跨库操作

Sql Server 跨服务器连接

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