Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SQLServer 远程链接MySql数据库详解

SQLServer 远程链接MySql数据库详解

作者头像
授客
发布于 2019-09-11 12:33:10
发布于 2019-09-11 12:33:10
10.6K0
举报
文章被收录于专栏:授客的专栏授客的专栏

测试环境:

Microsoft Windows XP Professional 版本2000 Service Pack 3

SQL_2005_x86简体中文企业版

MySql数据库远程服务器

第一步:安装MySQL odbc driver

SQL SERVER所在主机上安装MYSQL ODBC Driver;

第二步:配置ODBC数据源

安装好后,在管理工具-ODBC数据源-系统DSN-添加-选择安装的MYSQL ODBC Driver,比如 MYSQL ODBC 3.51 DRIVER-完成

点击完后跳出如下界面,填写MYSQL连接参数

说明:

Data Source Name:数据源名称,自定义

Decription:描述,自定义

Server:MYSQL服务器的IP

User:连接账号(在MYSQL上授权的账号,同时给予相应权限)

Password:密码

Database:选择链接的数据库

Port:MYSQL的端口,默认的是3306.可以根据实际的MYSQL服务器端口,在如下界面中更改

填好之后,点下test.成功了则会如图跳出提示框.

填好后,点击OK,查看如下。

点击配置的系统DNS(test为例),点击配置

注意:必须根据实际要远程连接的MYSQL数据库服务器的ip,端口,授权用户名,密码,要访问的数据库来填写。

第三步:连接SQL Server数据库

开始-所有程序-Microfsoft SQL Server 2005-SQL Server Management Studio

登陆方式1-图1

登陆方式2-图2

注:登陆方式有两种

服务器名:计算机名\实例名,如下图,这里实例名是安装时,,选择“命名实例”输入的名称

如果选择“登录方式2-图2”中的登录方式,Server身份验证方式登录,如以sa用户登录,则需要输入对应的密码,该密码默认也是在如下图示安装的时候输入的密码。

据说,EXPRESS版第一次登陆默认只能为Windows身份验证登陆,我没注意这个问题,如果真遇到这个问题,参考文档“SQLServer 2005Windows验证如何改为混合模式验证”。

第四步:创建链接服务器

这里我们以sa用户,登陆本地SQL Server服务器,找到链接服务器,创建链接服务器

点击绿色的那个实例->服务器对象->链接服务器->右键->新建链接服务器->弹出界面

注意

1访问接口:Microsoft OLE DB Provider for ODBC Drivers”;

2数据源,就是我们之前配置的odbc数据源test ,必须存在;

其它可不填,点击“确定”

第五步:测试

语法:OPENQUERY(链接服务器名, '查询语句')

如:

SELECT * FROM OPENQUERY (test, 'select * from tobj_operate')

执行能成功则可以。

UPDATE OPENQUERY (test, 'SELECT id FROM tobj_operate WHERE id = 101')

SET name = 'hello';

INSERT OPENQUERY (test, 'SELECT id FROM tobj_operate')

VALUES ('hello');

DELETE OPENQUERY (test, 'SELECT id FROM tobj_operate WHERE name = ''hello''');

1,防止执行上述查询时出错,要进行如下设置

如图,点击"SQL Server外围应用配置器"->”功能的外围应用配置”->Database Engine->即席远程查询->勾取“启用OPENROWSET和OPENDATASOURCE 支持”

2,可能还会遇到Ad Hoc Distributed Queries组件被禁用的问题

参见 排错-Ad Hoc Distributed Queries组件被禁用的解决办法

SELECT * FROM 链接服务器名.远程数据库名.dbo.远程数据库中的表;

SELECT * FROM test.mydatabase.dbo.tobj_operate;

注:这里用的是可视化的方式来创建远程连接。如果用命令方式呢?

答案如下:

1.新建查询

2.语句代码:

--创建链接服务器

exec sp_addlinkedserver 'test', '', 'MSDASQL ','10.4.120.11';

exec sp_addlinkedsrvlogin 'test', 'false', null, 'rock', '123456';

或者

exec sp_addlinkedserver

代码语言:txt
AI代码解释
复制
@server = 'test',--被访问的服务器别名
代码语言:txt
AI代码解释
复制
@srvproduct='',
代码语言:txt
AI代码解释
复制
@provider='SQLOLEDB ',
代码语言:txt
AI代码解释
复制
@datasrc=''10.4.120.11'  --要访问的MySQL服务器(名称或IP)

EXEC sp_addlinkedsrvlogin

代码语言:txt
AI代码解释
复制
  'test', --被访问的服务器别名
代码语言:txt
AI代码解释
复制
  'false', --使用后面的授权用户rock,密码进行登录
代码语言:txt
AI代码解释
复制
   NULL, --指定此条目将应用于所有连接到mylink的本地登录
代码语言:txt
AI代码解释
复制
  'rock',  --帐号

'123456' --密码

注意:这里的rock为授权用户。

授权方法:

先要在远程MYSQL服务器中进行授权,让主机能访问MYSQL数据库,如下:

在mysql数据库执行语句如下:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.4.120.11' IDENTIFIED BY '123456' WITH GRANT OPTION;

注:执行上述字符界面的查询,遇到如下问题:

链接服务器"test"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "登录超时已过期"。

链接服务器"mylink"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "建立到服务器的连接时发生错误。连接到 SQL Server 2005 时,默认设置 SQL Server 不允许远程连接这个事实可能会导致失败。"。

消息 53,级别 16,状态 1,第 0 行

命名管道提供程序: 无法打开与 SQL Server 的连接 53.

解决方案:

1.cmd命令行,键入 netstat –an –p tcp 没找到0.0.0.0:1433的信息,

2.键入telnet localhost 1433 测试,连接失败

参数说明:

-an 显示所有连接的端口并用数字表示

-p proto 显示 proto 指定的协议的连接;proto可以是: TCP、UDP、TCPv6或UDPv6之一

SqlServer查询分析器中键入:print@@version

显示如下:

Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86)

代码语言:txt
AI代码解释
复制
Oct 14 2005 00:33:37
代码语言:txt
AI代码解释
复制
Copyright (c) 1988-2005 Microsoft Corporation

Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)

3.下载sp4补丁并安装,

再次执行语句:print @@version

Microsoft SQL Server 2005 - 9.00.5000.00 (Intel X86)

代码语言:txt
AI代码解释
复制
Dec 10 2010 10:56:29
代码语言:txt
AI代码解释
复制
Copyright (c) 1988-2005 Microsoft Corporation
代码语言:txt
AI代码解释
复制
Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)

4.把服务端和客户端的tcp/ip协议端口都设置成1433,然后cmd执行netstat –an –p tcp

C:\Documents and Settings\Administrator>netstat -an -p tcp

能找到端口了,可是执行还是不行,采用'MSDASQL'时,执行下述的查询出现

MySQLAccess denied for user: 'root@...(Using password: YES)……错误提醒

EXECSP_DROPSERVER 'mylink','droplogins'

EXECSP_ADDLINKEDSERVER

@server = 'mylink',

@srvproduct = 'testmysql',

@provider = 'MSDASQL',--SQLOLEDB

@datasrc = 'test' --这里的test是DNS系统中的ODBC数据源

EXECSP_ADDLINKEDSRVLOGIN

@rmtsrvname = 'mylink',

@useself = 'false',

@locallogin = NULL,

@rmtuser = NULL,

@rmtpassword = NULL

SELECT* FROM OPENQUERY(mylink, 'select * from tobj_operate')

成功了。

删除登陆

exec sp_droplinkedsrvlogin 'test', 'rock'

删除链接,同时删除登陆

execsp_dropserver 'test','droplogins'

说明:

@rmtuser,@rmtpassword的值不为NULL,则表示“使用此安全上下文建立连接”,如把这两个设置为NULL,则不使用安全上下文建立链接,如下图>>

右键“链接服务器名称”->属性

sp_addlinkedserver 语法参考:

http://www.yesky.com/imagesnew/software/tsql/ts_sp_adda_8gqa.htm

sp_ addlinkedsrvlogin语法参考

http://www.yesky.com/imagesnew/software/tsql/ts_sp_adda_6e26.htm

sp_ droplinkedsrvlogin 语法参考:

http://www.yesky.com/imagesnew/software/tsql/ts_sp_drop_59v2.htm

sp_ dropserver 语法参考:

http://www.yesky.com/imagesnew/software/tsql/ts_sp_drop_9c1e.htm

上述过程中可能会遇到的其它问题

问题1,使用SQLOLEDB provider

链接服务器"xxx"(这里是test)的OLE DB 访问接口"SQLNCLI" 返回了消息"登录超时已过期"。

链接服务器"xxx"的OLE DB 访问接口"SQLNCLI" 返回了消息"建立到服务器的连接时发生错误。连接到SQL Server 2005 时,默认设置SQL Server 不允许远程连接这个事实可能会导致失败。"。

消息53,级别16,状态1,第0 行

命名管道提供程序: 无法打开与SQL Server 的连接53.

1,连接到SQL Server 2005 时,默认设置SQL Server 不允许远程连接这个事实可能会导致失败。

常规检查:

1.1 Microsoft SQL Server 2005 -> 配置工具 -> SQL Server外围应用配置器 -> 服务和连接的外围应用配置器 -> 远程连接->把"允许TCP/IP和命名管道"勾上,当然"仅TCP/IP"也可以

1.2 如图,Microsoft SQL Server 2005 -> 配置工具 ->SQL Server Configuration Manager,启动协议,并设置网络端口。

点击“SQL2005的协议”,把Shared Memory,NamedPipes,TCP/IP的状态改为“已启用“(特别是TCP/IP),客户端协议貌似默认开启。

说明:

Shared Memory:

避免了运行在同一台计算机上的客户端和服务器之间的进程间封送(跨越进程边界传送信息之前包装信息的方式).客户端直接访问服务器存储数据的内存映射文件.Shared Memory去除了大量的管理开销,速度非常快.只有在本地连接服务器时,Shared Memory才是有用的(例如,web服务器与数据库安装在同一台服务器上),但是它能极大地提高性能.

Named Pipes:

在TCP/IP不可用时,或者没有提供域名服务(DNS)的服务器从而无法把服务器名解析成TCP/IP下的地址时,Named Pipes可能会非常有用.Named Pipes的使用正在减少.既然无论如何都要启用TCP/IP协议,为什么还要加入一条协议呢?(多打开一个协议,就多一份风险)

TCP/IP

TCP/IP已经成为事实上的网络标准协议,从SQLserver2000开始,就在Sqlserver中的默认提供,如果你想通过Internet直接连接到Sqlserver上,则它是惟一的选择。

VIA:

VIA是虚拟接口适配器(Virtual Interface Adapter,VIA)的意思,具体的实现随提供商的不同而不同。一般来说,他是一种网络接口,是两个系统之间性能极高的,专业的连接。这种高性能部分是由于特殊的专用硬件知道系统之间有专用的连接,因此无需处理普通的网络寻址问题。一般禁用它。

右击TCP/IP-> IP 地址,设置服务器监听监听IP和端口

关于IP地址设置:

IP 地址从IP1到IP2,IP3……IPn,还有个IPALL

IP1中IP地址,设置为localhost,即回环地址127.0.0.1

IP1~IPn中的IP地址,为本机上其它IP地址

关于端口设置:

如下图,如果TCP/IP -> 协议,对话框中设置“全部侦听“为是,那么监听端口为IPALL下指定的“TCP 端口”,否则监听端口为IPn中指定的监听“TCP 端口”

注:TCP 动态端口,如果设置0,表示监听动态端口,一般保留为空

接着,设置客户端协议的TCP端口,设置为服务端的TCP修改后的端口3533,操作同上

按照以上设置完成客户端端口更改,在程序中的数据库连接字符串也应该做相应的更改,否则还是无法连接打数据库。

Provider=SQLNCLI.1;Persist Security Info=True;User ID=****;Password=**;Initial Catalog=tablename;Data Source=202.000.000.000,3533.

这里所有的设置完成之后,重新启动截图中的”SQL Server2005服务”

注意:对于客户端端口的修改,若直接修改“客户端协议”的话,会造成连接其他默认端口的数据库出错,可以利用新建别名的方式来解决此问题,如下图所示

客户端连接:

1.3在相应的防火墙新增个例外,比如默认的1433或者刚才修改的服务端的TCP端口(如有修改过默认端口),这样就可以远程连接了

问题2 ODBC驱动不匹配。

这次遇到的“消息53……”问题就是驱动问题,换个版本的MySQL ODBC驱动解决。

问题3 登录问题。

常规性检查,

3.1. Microsoft SQL Server 2005 -> 配置工具 -> SQL Server外围应用配置器,启动服务,点击Database Engine->服务,把服务类型改为自动,并启动服务,

对SQL Server Browser服务,也做同样的操作。

说明:SQL Server 浏览器程序以服务的形式在服务器上运行。SQL Server 浏览器侦听对 Microsoft SQL Server 资源的传入请求,为数据库引擎 和 SSAS 的每个实例提供实例名称和版本号

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014-11-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
mysql数据库转移至sqlserver数据库中详解
本文所涉及的机器环境如下:Windows XP SP3,MS SQL Server 2005,MySQL Server 5.1。
用户5005176
2021/08/07
3.6K0
MySQL数据库数据迁移到SQLserver
最近因工作需要,需要将mysql数据库迁移到sqlserver,仅仅是数据迁移,因此相对比较简单。对于mysql迁移到sqlserver,我们需要使用到mysql odbc驱动,然后透过sqlserver链接服务器的方式来访问mysql。具体见下文描述。 一、 迁移环境 源:RHEL 6.5 + MySQL 5.6.26 目标: Windows 7 64 + SQLserver 2014 二、准备迁移环境 1、下载及安装ODBC驱动 http://dev.mysql.com/down
Leshami
2018/08/13
4.9K0
MySQL数据库数据迁移到SQLserver
sql server 与mysql跨平台跨数据库操作
1、在sql server中建立触发器,当某些条件满足时,取用户的AD信息,通过sql server的链接服务器,给相关用户发送邮件。
用户4988085
2021/07/26
3.1K0
关于分布式事务配置及使用@win2003 and sqlserver2k
在多台SQL Server服务器之间进行事务处理时,我们用到分布式事务技术。分布式事务由 Microsoft 分布式事务处理协调器 (MS DTC))这类事务管理器或其它支持 X/Open XA 分布式事务处理规范的事务管理器进行协调。Microsoft提供了MSDTC(Distributed Transaction Coordinator)服务支持分布式事务。
jack.yang
2025/04/05
1880
如何跨服务器复制表中数据
不同服务器数据库之间的数据操作 不同数据库之间复制表的数据的方法: 当表目标表存在时: insert into 目的数据库..表 select * from 源数据库..表 当目标表不存在时: select * into 目的数据库..表 from 源数据库..表 --如果在不同的SQL之间: insert into openrowset('sqloledb','目的服务器名';'sa';'',目的数据库.dbo.表) select * from 源数据库..表 --创建链接服务器 exe
李海彬
2018/03/22
1.7K0
【DB宝98】SQL Server配置链接服务器
SQL Server的链接服务器,相当于Oracle的dblink,主要用于对远程的DB进行操作。
AiDBA宝典
2022/04/11
2K0
【DB宝98】SQL Server配置链接服务器
CentOS 7上配置SQL Server链接其他SQL Server服务器
本文介绍在CentOS 7系统上运行的SQL Server如何链接访问其他SQL Server服务器的详细步骤,包括驱动安装、配置和连接测试。
晓松
2025/04/05
4770
MSSQL跨库查询表数据 (分布式查询)
因为我的业务数据库和文档数据库非常庞大,所以我分成了两个服务器,但有时需要进行跨库查询,我们就可以利用链接服务器的方法来搞定它。
加菲猫的VFP
2021/08/16
1.7K0
sqlserver 连接远程sqlserver数据库
@useself = 'false', /*指定 rmtuser 和 rmtpassword 参数用来连接到特定 locallogin 的 rmtsrvname*/
静谧的小码农
2020/06/12
6K0
【转载】数据库链接字符串大集合
SQL Server 2005 SQL Native Client ODBC Driver 标准安全连接 Driver={SQL Native Client};Server=myServerAddress; Database=myDataBase;Uid=myUsername;Pwd=myPassword; 受信的连接 Driver={SQL Native Client}; Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes; "Integrated Security=SSPI" 与 "Trusted_Connection=yes" 是相同的。 连接到一个SQL Server实例 指定服务器实例的表达式和其他SQL Server的连接字符串相同。 Driver={SQL Native Client};Server=myServerName/theInstanceName;Database=myDataBase; Trusted_Connection=yes; 指定用户名和密码 oConn.Properties("Prompt") = adPromptAlways Driver={SQL Native Client}; Server=myServerAddress;Database=myDataBase; 使用MARS (multiple active result sets) Driver={SQL Native Client};Server=myServerAddress;Database=myDataBase; Trusted_Connection=yes;MARS_Connection=yes; "MultipleActiveResultSets=true"与MARS_Connection=yes"是相同的。 使用ADO.NET 2.0作为MARS的模块。 MARS不支持ADO.NET 1.0和ADO.NET 1.1。 验证网络数据 Driver={SQL Native Client}; Server=myServerAddress;Database=myDataBase; Trusted_Connection=yes;Encrypt=yes; 使用附加本地数据库文件的方式连接到本地SQL Server Express实例 Driver={SQL Native Client};Server=./SQLExpress; AttachDbFilename=c:/asd/qwe/mydbfile.mdf; Database=dbname;Trusted_Connection=Yes; 为何要使用Database参数?如果同名的数据库已经被附加,那么SQL Server将不会重新附加。 使用附加本地数据文件夹中的数据库文件的方式连接到本地SQL Server Express实例 Driver={SQL Native Client};Server=./SQLExpress; AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname; Trusted_Connection=Yes; 为何要使用Database参数?如果同名的数据库已经被附加,那么SQL Server将不会重新附加。 数据库镜像 Data Source=myServerAddress; Failover Partner=myMirrorServer;Initial Catalog=myDataBase;Integrated Security=True; SQL Native Client OLE DB Provider 标准连接 Provider=SQLNCLI;Server=myServerAddress; Database=myDataBase;Uid=myUsername;Pwd=myPassword; 受信的连接 Provider=SQLNCLI;Server=myServerAddress; Database=myDataBase;Trusted_Connection=yes; 连接到SQL Server实例 指定服务器实例的表达式和其他SQL Server的连接字符串相同。 Provider=SQLNCLI;Server=myServerName/theInstanceName; Database=myDataBase;Trusted_Connection=yes; 使用帐号和密码 oConn.Properties("Prompt") = adPromptAlways oConn.Open "Provider=SQLNCLI;Server=myServerAd
阳光岛主
2019/02/19
1.9K0
本地sql数据库怎么与远程sql数据库同步使用_sqlserver复制数据库
1.利用MySQL自身的数据库同步功能 2.利用MySQL数据库的特性(数据库存在固顶目录,并且以文件形式存储),进行数据库目录同步以达到数据同步目的 3.利用专用的MySQL数据库同步软件
全栈程序员站长
2022/11/04
4.2K0
SqlServer下数据库链接的使用方法
 有时候我们希望在一个sqlserver下访问另一个sqlserver数据库上的数据,或者访问其他oracle数据库上的数据,要想完成这些操作,我们首要的是创建数据库链接。
深蓝studyzy
2022/06/15
8240
经典SQL语句大全之数据开发
1.按姓氏笔画排序: Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as //从少到多
陈珙
2018/09/12
1K0
C++通过ADO访问数据库的连接字符串
新建一个***.txt重名为***.udl,双击运行udl文件弹出数据源配置对话框,配置好并测试连接成功以后点确定,会在udl文件里产生一个连接字符串。
用户7886150
2021/02/06
2.7K0
使用SQLServer2005的链接服务器链接Sybase数据库
在以前的一篇文章中我讲到了Sybase ASE数据库的安装,接下来本篇就讲一下Sybase数据库与SQLServer2005数据库的同步,准确的说是使用SQLServer2005读取和写入Sybase数据库表。 为什么要这样做拉?因为在项目中有时需要做其他系统的数据接口,而接口中的数据是存放在Sybase数据库中,这个时候就可以使用SQLServer2005中的链接服务器来连接Sybase数据库,在前面我也写过一篇文章讲SQLServer2005与Oracle数据库的同步,大同小异,大家可以参考。闲话休说,言归正传,下面讲一下配置步骤:
深蓝studyzy
2022/06/16
3.1K0
使用SQLServer2005的链接服务器链接Sybase数据库
定时同步服务器上的数据的例子:
--测试环境,SQL Server2000,远程服务器名:xz,用户名为:sa,无密码,测试数据库:test --1. 链接服务器上的表 create table [user](id int primary key,number varchar(4),name varchar(10)) go --2. 本地服务器上的表 --本机的表,state说明:null 表示新增记录,1 表示修改过的记录,0 表示无变化的记录 if exists (select * from dbo.sysobjects where id = object_id(N'[user]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [user] GO create table [user](id int identity(1,1),number varchar(4),name varchar(10),state bit) go
jack.yang
2025/04/05
2190
构建SQL Server链接服务器:实现跨服务器数据访问及整合
在SQL Server数据库管理中,链接服务器是一项强大的功能,允许在一个SQL Server实例中访问另一个SQL Server实例的数据。这种功能为数据库管理员提供了灵活性,使其能够跨不同服务器进行数据交互,开辟了更多的应用场景。本文将介绍链接服务器的作用、何时使用以及通过一个案例详细说明如何在SQL Server中创建和使用链接服务器。
俊才
2023/11/27
1.2K0
构建SQL Server链接服务器:实现跨服务器数据访问及整合
SQL SERVER几种数据迁移/导出导入的实践
SQLServer提供了多种数据导出导入的工具和方法,在此,分享我实践的经验(只涉及数据库与Excel、数据库与文本文件、数据库与数据库之间的导出导入)。 (一)数据库与Excel 方法1: 使用数据库客户端(SSMS)的界面工具。右键选择要导出数据的数据库,选择“任务”——“导出数据”,下图1,按照向导一步一步操作即可。而导入则相反,导入时,SQLServer会默认创建一张新表,字段名也默认跟导入的Excel标题一样,并且会默认字段数据类型等。当然在可以在向导进行修改。需要注意的是如果标题不是英文而是中文
逸鹏
2018/04/10
9.3K0
SQL SERVER几种数据迁移/导出导入的实践
SQL之经典SQL语句大全
经典SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name  2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack  4
互联网金融打杂
2018/04/03
1.5K0
mysql sql语句大全
根据已有的表创建新表: A:create table tabnew like tabold (使用旧表创建新表) B:create table tabnew as select col1,col2… from tabold definition only 5、说明:删除新表
Ai学习的老章
2019/04/10
12.6K1
相关推荐
mysql数据库转移至sqlserver数据库中详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档