Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
SQL Server跨服务器操作数据库的图文方法(LinkedServer)_创想鸟

SQL Server跨服务器操作数据库的图文方法(LinkedServer)

本篇文章给大家带来了关于sql的相关知识,其中主要介绍了sql server跨服务器操作数据库的图文方法,sql server management studio (ssms) 是用于管理sql server 基础结构的集成环境,下面一起来看一下,希望对大家有帮助。

SQL Server跨服务器操作数据库的图文方法(LinkedServer)

推荐学习:《SQL教程》

基础知识介绍

以SQL Server的数据库管理工具SSMS(SQL Server Management Studio)为平台进行操作。

SQL Server Management Studio (SSMS) 是用于管理SQL Server 基础结构的集成环境。 使用 SSMS,可以访问、配置、管理和开发 SQL Server、Azure SQL 数据库和 SQL 数据仓库的所有组件。 SSMS 在一个综合实用工具中汇集了大量图形工具和丰富的脚本编辑器,为各种技能水平的开发者和数据库管理员提供对 SQL Server 的访问权限。

SQL Server跨服务器操作数据库的图文方法(LinkedServer)

什么是跨服务器操作?

跨服务器操作就是可以在本地连接到远程服务器上的数据库,可以在对方的数据库上进行相关的数据库操作,比如增删改查。

为什么要进行跨服务器操作

随着数据量的增多,业务量的扩张,需要在不同的服务器安装不同的数据库,有时候因为业务需要,将不同的服务器中的数据进行整合,这时候就需要进行跨服务器操作了。

跨服务器操作的工具是什么?

DBLINK(数据库链接),顾名思义就是数据库的链接,就像电话线一样,是一个通道,当我们要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中就必须要创建远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。

方法一:用SSMS创建SQL Server远程链接服务器(LinkedServer)–简单链接到远程SqlServer

1. 打开SSMS –>登录到本地数据库 –> 服务器对象 –> 链接服务器(右键) –> 新建链接服务器,如下图:

 SQL Server跨服务器操作数据库的图文方法(LinkedServer)

2. 在弹出的对话框中输入相关信息

● 在【链接服务器】输入对方服务器的IP地址;

● 在【服务器类型】中选择【SQL Server】;

 SQL Server跨服务器操作数据库的图文方法(LinkedServer)

3. 点击左侧的【安全性】,出现如下页面,在第3步中输入对方数据库的账号密码即可。

 SQL Server跨服务器操作数据库的图文方法(LinkedServer)

点击确定按钮后,链接服务器(LinkedServer)就创建成功了。这时可以看到创建好的链接服务器:

 SQL Server跨服务器操作数据库的图文方法(LinkedServer)

查看链接服务器的代码: 在创建好的链接服务器上点右键,编写链接服务器脚本为 –> Create到 –>新查询编辑器窗口,即可打开刚刚创建的链接服务器的脚本。

 SQL Server跨服务器操作数据库的图文方法(LinkedServer)

–链接服务器(LinkedServer)创建完成后会自动生成相关代码 —— 链接到远程SQLServer数据库:

EXEC master.dbo.sp_addlinkedserver @server = N'192.168.110.189,1433',@srvproduct=N'SQL Server';-- @rmtsrvnameEXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'192.168.110.189',@useself=N'False',@locallogin=NULL,@rmtuser=N'sa',@rmtpassword='########';

注意: 这里有一个弊端,那就是链接的是整个远程SqlServer中的所有数据库(一般只需要一个特定的数据库),而且链接服务器的名称是个IP且无法自定义! 所以,最好的方式还是通过代码直接创建链接数据库(见“三、代码详解”)。

链接服务器(LinkedServer)就创建成功后,我们就可以用创建好的DBLINK链接到远程的Linked服务器了。下面我们用创建好的试着查询对方服务器上的表来验证一下。

–查询链接服务器(LinkedServer)中数据的方法: [DBLINK名].[对方数据库名].[对方数据库下模式名].[对方数据库表名]

SELECT * FROM [192.168.110.189].[erp25new].[dbo].[fee_data]

上面FROM字段后面依此是[DBLINK名].[对方数据库名].[对方数据库下模式名].[对方数据库表名],表名前面的这些内容一个都不能少。

查询结果如下图:

 SQL Server跨服务器操作数据库的图文方法(LinkedServer)

方法二:SSMS创建SQLServer链接服务器(LinkedServer)–自定义链接到SqlServer的其它数据库

1. 【常规】选择页:

 SQL Server跨服务器操作数据库的图文方法(LinkedServer)

2.【安全性】选择页:

 SQL Server跨服务器操作数据库的图文方法(LinkedServer)

自定义链接数据库到SQLServer【新建链接服务器】对话框中需输入的相关信息说明:

1.【常规】页

法语写作助手 法语写作助手

法语助手旗下的AI智能写作平台,支持语法、拼写自动纠错,一键改写、润色你的法语作文。

法语写作助手 31 查看详情 法语写作助手

● 在【链接服务器】中,输入 自定义的链接服务器别名,如:DBLINK_TO_TESTDB

● 在【服务器类型】中选择【其他数据源】;

▶[提供程序]中选择 第一个Microsoft OLE DB Provider for SQL Server

▶[产品名称]中,可以空白不填,也可以填写SQL Server { 注意提供程序是OLE DB Provider for SQL Server时产品名称这里必须为空白!}

▶[数据源]中 远程数据库的地址,端口\实例名 ,如 10.10.0.73,1433\MSSQLSERVER

▶[访问接口字符串]中,可以空着不填; 也可以填下方的:(注意######是密码,请换成自己的密码)

Provider=sqloledb;Data Source=10.10.0.73,1433\MSSQLSERVER;Initial Catalog=TESTDB;User Id=apps;Password=#####;

▶[目录]就是数据库名称,这里填上我们需要远程连上的数据库 TESTDB (可以换成自己实际的)。

2.【安全性】页

● 选择【使用此安全上下文建立连接(M)】

▶[远程登录]: 远程数据库的连接账号

▶[使用密码]: 远程数据库连接账号的密码

--链接服务器(LinkedServer)创建完成后会自动生成相关代码 —— 链接到远程的SQLServer数据库(自定义):EXEC master.dbo.sp_addlinkedserver @server = N'DBLINK_TO_TESTDB',@srvproduct=N'',@provider=N'SQLNCLI', @datasrc=N'10.10.0.73';EXEC master.dbo.sp_addlinkedsrvlogin@rmtsrvname=N'DBLINK_TO_TESTDB',@useself=N'False',@locallogin=NULL,@rmtuser=N'apps',@rmtpassword='########';/****** 实际例子 系统生成的Object: LinkedServer [DBLINK_TO_TESTDB] ******/USE [master]GOEXEC master.dbo.sp_addlinkedserver @server = N'DBLINK_TO_TESTDB', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'10.10.0.73,1433\MSSQLSERVER', @catalog=N'TESTDB'/*For security reasons the linked server remote logins password is changed with ########*/EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'TEST',@useself=N'False',@locallogin=NULL,@rmtuser=N'apps',@rmtpassword='########'

其他方式: 提供程序换成其它的, 如本机SQL Server Native Client 11.0 (SQL Server Native Client 11.0 不支持连接到SQL Server 2000或更早的版本) 等

 SQL Server跨服务器操作数据库的图文方法(LinkedServer)

方法三:用SSMS创建SQLServer链接服务器(LinkedServer)–链接到非SqlServer的其它数据库

 SQL Server跨服务器操作数据库的图文方法(LinkedServer)

四、代码详解:方法一和方法二是通过SSMS直接操作的,下方直接使用sql脚本来创建链接服务器(LinkedServer)

A. SSMS链接到远程SQLServer数据库

(本地SQLServer数据库链接服务器(LinkedServer)到远程SQLServer数据库。)

–LinkedServer链接到远程SQLServer数据库:

–1. 声明将要链接的‘链接名称(自定义)’,远程数据库产品名(或别名),(提供商,数据库服务器地址及实例名)

EXEC master.dbo.sp_addlinkedserver @server = N’DBLINK_TO_TESTDB’,@srvproduct=N’SQL Server’;

–2. 声明‘链接名称(自定义)’,@useself=N’False’,@locallogin=NULL,将要链接的数据库服务器的账号和密码

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N’192.168.110.189′,@useself=N’False’,@locallogin=NULL,@rmtuser=N’sa’,@rmtpassword=’########’;

B. SSMS链接到远程非SQLServer数据库

(本地SQLServer数据库链接服务器(LinkedServer)到远程非SQLServer的数据库。如远程的MySQL、Oracle等数据库。)

–链接到远程的非SQLServerd数据库(如链接到远程MySQL、Oracle等数据库):

–1. 声明‘自定义的链接名称’,远程数据库产品名(或别名),提供商,数据库服务器地址及实例名

EXEC master.dbo.sp_addlinkedserver @server = N’TEST_SQL_SERVER’,@srvproduct=N’TEST’,@provider=N’SQLNCLI11′, @datasrc=N’192.168.110.189′;-

-2. 声明登录信息 ‘自定义的链接名称’,@useself=N’False’,@locallogin=NULL,远程数据库的账号和密码

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N’TEST_SQL_SERVER’,@useself=N’False’,@locallogin=NULL,@rmtuser=N’sa’,@rmtpassword=’########’;

实际例子-SQL Server通过Linkserver连接MySql

--通过SSMS链接到远程MySql数据库(SQL Server连接MySql)--使用的访问接口为:MySql Provider for OLE DB--EXEC master.dbo.sp_addlinkedserver @server = N'DBLINK_TO_MysqlTESTDB', @srvproduct = N'MySql', @provider = N'MSDASQL', @provstr = N'Driver={MySQL ODBC 5.1 Driver};Server=10.167.69.6,3306/sytv;Database=TESTDB;User=root;Password=root;Option=3';--EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'DBLINK_TO_MysqlTESTDB', @useself = N'False', @locallogin = N'10.167.69.6,3306/sytv', @rmtuser = N'root', @rmtpassword = N'root';

实际例子-SQL Server通过Linkserver连接Oracle

--通过SSMS链接到远程Oracle数据库(SQL Server连接Oracle)--使用的访问接口为:Oracle Provider for OLE DBUSE [master]GO--Declare Oracle OLEDB 'OraOLEDB.Oracle':EXEC master.dbo.sp_MSset_oledb_prop N'OraOLEDB.Oracle', N'AllowInProcess', 1;--Create the Linked Server to the ECT database in Oracle:EXEC sp_addlinkedserver 'DBLINK_TO_OraTESTDB', 'Oracle', 'OraOLEDB.Oracle', '10.167.69.6/prt';--EXEC master.dbo.sp_addlinkedserver @server = N'DBLINK_TO_OraTESTDB', @srvproduct=N'oracle', @provider=N'OraOLEDB.Oracle', @datasrc=N'10.167.69.6/orcl'--Create the Remote Login for the Oracle Linked Server:EXEC sp_addlinkedsrvlogin @rmtsrvname=N'DBLINK_TO_OraTESTDB',@useself=N'False',@locallogin=N'apps',@rmtuser=N'SYSTEM',@rmtpassword='######'; --最后可以测试一下是否连接成功 --select * from openquery(DBLINK_TO_OraTESTDB,'select * from SYSTEM.HELP');

推荐学习:《SQL教程》

以上就是SQL Server跨服务器操作数据库的图文方法(LinkedServer)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/627739.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
荣耀v30pro设置来电头像的操作步骤
上一篇 2025年11月11日 09:49:47
百度地图如何查看历史轨迹_百度地图APP历史轨迹查询方法
下一篇 2025年11月11日 09:49:53

相关推荐

  • if sql语句_SQL IF语句介绍和概述

    if sql语句_SQL IF语句介绍和概述if sql语句_SQL IF语句介绍和概述if sql语句_SQL IF语句介绍和概述if sql语句_SQL IF语句介绍和概述

    大家好,又见面了,我是你们的朋友全栈君。 本文将深入探讨SQL Server中实用的SQL IF语句功能。 介绍 (Introduction) 在现实生活中,我们根据条件做出决定。例如,以下情况: 如果我今年获得绩效奖金,我将选择国际度假,否则我将选择国内度假。如果天气变好,我会计划骑自行车旅行,否…

    2026年9月22日 用户投稿
    100
  • sql语言中,删除一个表的命令是什么?

    sql语言中,删除一个表的命令是“DROP”,具体语法格式“DROP TABLE [IF EXISTS] 表名”。“DROP TABLE”命令可以同时删除多个表,只要将表名依次写在后面,相互之间用逗号隔开即可。 (推荐教程:mysql视频教程) SQL语言中,删除一个表的命令是( )。 A.DELE…

    2026年9月7日
    100
  • 在sql的select语句中用于实现选择运算的是什么

    在sql的select语句中,用于实现选择运算的是“WHERE”。在SQL的查询语句中,WHERE子句用于指定查询条件,只有满足条件的元组才会出现在结果集中。 本教程操作环境:windows7系统、mysql5.8版、Dell G3电脑。 在sql的select语句中,用于实现选择运算的是“WHER…

    2026年9月6日
    200
  • sql存储过程的写法是什么

    写法为“CREATE PROCEDURE 过程名 ([过程参数]) 过程体 [过程参数 ] 格式 [IN|OUT|INOUT] 参数名 类型”。过程名应当尽量避免选取与内置函数相同的名称,否则会发生错误;过程体以BEGIN开始,END结束。 本教程操作环境:windows7系统、mysql5.8版、…

    2026年9月6日
    100
  • SQL的核心语句是什么

    SQL语言的核心语句是:SELECT语句,用于从表中选取数据。SQL全称Structured Query Language(结构化查询语言),其核心是数据查询,其查询语言只有一条,即SELECT语句。 本教程操作环境:windows7系统、mysql5.8版、Dell G3电脑。 SQL语言的核心语…

    2026年9月6日
    100
  • 表示修改一个数据库对象的SQL关键字是什么

    表示修改一个数据库对象的SQL关键字是:ALTER。在数据库中,可以使用“ALTER TABLE”语句来改变原有表的结构,可以在已有的表中添加、删除或修改列。 本教程操作环境:windows7系统、mysql8版、Dell G3电脑。 表示修改一个数据库对象的SQL关键字是:alte。 SQL AL…

    2026年9月6日
    000
  • 玩转MYSQL的增删改查

    玩转MYSQL的增删改查玩转MYSQL的增删改查玩转MYSQL的增删改查玩转MYSQL的增删改查

    dml语句是sql数据操作语句之一,可以对表进行增删改查,本篇文章对初学者来说又或是需要进行sql复习的人来说都有很大的帮助,跟着小编一起学习吧。 在叙述如何对数据表进行增删改查之前,我们先创建一个数据表,叫做students,便于后续所有操作,如下图所示: 插入记录 insert into 表名(…

    2026年9月5日 用户投稿
    000
  • sql语句如何截取某字段的一部分

    在sql中,可以使用SUBSTRING语句截取某字段的一部分,语法格式为“SUBSTRING(字符串,开始位置,截取长度)”。SQL中的substring函数是用来抓出一个栏位资料中的其中一部分 本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。 SUBSTRING ( e…

    2026年9月5日
    000
  • sql如何在原有表基础上增加一列

    在mysql中,可以使用“ALTER TABLE”语句在原有表基础上增加一列,语法格式为“ALTER TABLE 数据表名称 ADD 字段名称 字段类型”;该语句用于在已有的表中添加、修改或删除列。 本教程操作环境:windows7系统、mysql8版、Dell G3电脑。 ALTER TABLE …

    2026年9月5日
    000
  • 基于Impala的高性能数仓实践之执行引擎模块

    基于Impala的高性能数仓实践之执行引擎模块基于Impala的高性能数仓实践之执行引擎模块基于Impala的高性能数仓实践之执行引擎模块基于Impala的高性能数仓实践之执行引擎模块

    导读: 本系列文章将结合实际开发和使用经验,聊聊可以从哪些方面对数仓查询引擎进行优化。 Impala是Cloudera开发和开源的数仓查询引擎,以性能优秀著称。除了Apache Impala开源项目,业界知名的Apache Doris和StarRocks、SelectDB项目也跟Impala有千丝万…

    2026年8月28日 用户投稿
    100
  • Linux下怎么使用mysql命令导入、导出sql文件

    日常开发的时候,避免不了进行数据库的导入导出操作。 直接使用命令: mysqldump -u root -p abc >abc.sql 然后回车输入密码就可以了; mysqldump -u 数据库链接用户名 -p  目标数据库 > 存储的文件名 文件会导出到当前目录下 导入数据库(sql…

    2026年8月26日
    200
  • MYSQL SQL怎么查询近7天一个月的数据

    MYSQL SQL查询近7天,一个月的数据 //今天select * from 表名 where to_days(时间字段名) = to_days(now());//昨天SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) – TO_DAYS( 时间字段名) <= …

    用户投稿 2026年8月25日
    100
  • 如何在Flask中从HTML按钮获取变量值

    本教程详细讲解了如何在flask应用中,通过html表单的post请求,安全有效地从按钮(或其他表单元素)获取动态变量值。我们将重点介绍html ` POST 请求: 立即学习“前端免费学习笔记(深入)”; 特点: 数据放在HTTP请求体中,不会显示在URL中,因此更适合发送敏感信息(如密码)或大量…

    2025年12月23日
    000
  • 在ASP.NET MVC中实现基于Chosen插件的3字符自动补全搜索

    本文旨在提供一个详细的教程,指导开发者如何在ASP.NET MVC应用程序中,结合Chosen.js插件,为大型下拉列表实现高效的3字符自动补全搜索功能。我们将涵盖从前端JavaScript事件监听、AJAX异步通信,到后端C#控制器数据处理的全栈实现细节,并提供最佳实践建议,以优化用户体验和系统性…

    用户投稿 2025年12月21日
    000
  • 高效地将PostgreSQL jsonb数据传递到JavaScript

    本文旨在探讨如何高效地将PostgreSQL jsonb字段中已存在的JSON数据通过PHP传递到JavaScript,避免不必要的重复编码和解析。核心方法是在PHP中直接拼接从数据库获取的JSON字符串,构建成一个完整的JSON数组字符串,然后将其传递给JavaScript进行一次性解析,从而优化…

    2025年12月20日
    100
  • C++如何进行数据库操作_使用SQLiteCpp库在C++中轻松管理SQLite数据库

    SQLiteCpp简化C++中SQLite操作,需先安装libsqlite3-dev并编译SQLiteCpp库,通过包含头文件使用;用SQLite::Database创建或打开数据库,结合RAII与异常处理确保安全;利用exec()执行建表等DDL语句,通过SQLite::Statement预编译实…

    2025年12月19日
    000
  • c++怎么连接和使用SQLite数据库_c++ SQLite数据库连接与操作示例

    首先通过包含sqlite3.h和sqlite3.c在C++中连接SQLite,接着用sqlite3_open创建数据库,再使用sqlite3_exec执行建表、插入等操作,然后通过回调函数处理查询结果,推荐使用sqlite3_prepare_v2和绑定参数进行安全的预编译语句操作,最后正确释放资源完…

    2025年12月19日
    300
  • XSLT扩展函数如何编写?

    XSLT扩展函数通过外部代码(如Java、C#)增强XSLT处理能力,解决其在数据库操作、复杂计算、文件交互等方面的局限。以Java为例,需编写包含静态方法的类,将其置于classpath,并在XSLT中通过xmlns:prefix=”java:package.Class”声…

    2025年12月17日
    000
  • XQuery与SQL有何异同?

    XQuery专精于处理XML半结构化数据,适用于层次复杂、结构多变的场景,如Web服务、配置文件和数据转换;SQL则擅长管理高度结构化的二维表数据,适用于需强一致性与事务支持的业务系统。两者数据模型根本不同:SQL基于关系代数,强调表、行、列的刚性结构;XQuery基于XDM节点树模型,通过XPat…

    2025年12月17日
    200
  • Python怎么执行SQL语句_数据库游标对象SQL执行方法

    先连接数据库,再创建游标执行SQL。应根据数据库类型选择Python库,如MySQL用mysql-connector-python或pymysql,PostgreSQL用psycopg2,SQLite用sqlite3。操作流程包括连接、创建游标、执行SQL、处理结果和关闭连接。为避免编码问题,需统一…

    2025年12月14日
    100

发表回复

登录后才能评论
关注微信