步骤:
1.安装mysql数据库的odbc驱动,mysql-connector-odbc-3.51.23-win32.msi(其中*是版本号),下载并安装。
2.在mysql中创建数据库实例。
3.打开控制面板
--
管理工具
--
数据源odbc,在用户dsn中添加一个mysql
odbc
3.51数据源。
4.在登录login选项卡中输入数据源名称data
source
name,此处输入mysqldns(也可以自己随便命名,只要在后面导入数据的时候选择正确的数据源名字就行);然后输入服务器server,用户user,密码password,输入正确后选择要导入的数据库,database选择你需要导入的数据库。在连接选项connect
options中根据需要设置mysql使用的端口port和字符集character
set。
注:字符集一定要和mysql服务器相对应,如果mysql使用了gbk字符集,则一定要设置字符集为gbk,否则导入到sql
server可能会出现问号乱码。
5.打开sql
server企业管理器,选择该数据库,单击右键选择所有任务
--
导出数据。
6.‘选择数据源’为默认,‘选择目的’为刚刚安装的mysql数据源,用户/系统dsn为mysqldns。
方法2:
有多种方法啊。介绍其中一种,使用mysql数据库的odbc驱动。步骤:
1.安装mysql数据库的odbc驱动,mysql-connector-odbc-3.51.23-win32.msi(其中*是版本号),下载并安装。
2.在mysql中创建数据库实例。
3.打开控制面板
--
管理工具
--
数据源odbc,在用户dsn中添加一个mysql
odbc
3.51数据源。
4.在登录login选项卡中输入数据源名称data
source
name,此处输入mysqldns(也可以自己随便命名,只要在后面导入数据的时候选择正确的数据源名字就行);然后输入服务器server,用户user,密码password,输入正确后选择要导入的数据库,database选择你需要导入的数据库。在连接选项connect
options中根据需要设置mysql使用的端口port和字符集character
set。
注:字符集一定要和mysql服务器相对应,如果mysql使用了gbk字符集,则一定要设置字符集为gbk,否则导入到sql
server可能会出现问号乱码。
5.打开sql
server企业管理器,选择该数据库,单击右键选择所有任务
--
导出数据。
6.‘选择数据源’为默认,‘选择目的’为刚刚安装的mysql数据源,用户/系统dsn为mysqldns。
后来在网上发现解决方法,my.ini里面添加[mysqld]
skip-name-resolve
这样速度就快了!
skip-name-resolve
选项就能禁用DNS解析,连接速度会快很多。不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用ip格式。
就MySQL本身而言,问题出在在mysql dns反解析
mysql>show processlist
| 20681949 | unauthenticated user | 10.10.4.193:52497 | NULL | Connect | | Reading from net | NULL |
| 20681948 | unauthenticated user | 10.10.4.193:52495 | NULL | Connect | | Reading from net | NULL
发现有非常多的 unauthenticated user 尝试做登入使用 mysql 的情况 ,当这种情况无限制发生时就会造成系统十分缓慢。
查阅mysql官方网站得知,这属于官方一个系统上的特殊设定,就把他当成mysql的一个bug算了,不管链接的的方式是经过 hosts 或是 IP 的模式,他都会对 DNS 做反查。mysqld 会尝试去反查 IP ->dns ,由于反查解析过慢,就会无法应付过量的查询。
SQL服务器在内存中维持了一个Host缓存,用于存储客户端的信息,包括:IP地址、Host主机名、错误信息等。对于非本地的TCP连接,MySQL服务器都会查询此缓存。对于使用本地环回地址(比如:127.0.0.1或者::1)的TCP连接、或者是使用Unix套接字文件的TCP连接、命名管道的TCP连接、共享内存的TCP连接,都不会使用Host缓存。注:Loopback,本地环回接口(或地址),亦称回送地址。此类接口是应用最为广泛的一种虚接口,几乎在每台路由器上都会使用。在Windows系统中,采用127.0.0.1作为本地环回地址。
对于每一个新的客户端连接,MySQL服务器使用客户端的IP地址进行检索,查看客户端的主机名是否在Host缓存中。如果Host缓存中不存在,MySQL服务器会尝试解析主机名。首先,MySQL服务器会解析主机名对应的IP地址,并与客户端的原始IP地址进行比较,确保是同一个IP地址。然后MySQL服务器把这些信息写入Host缓存中。如果Host缓存已满,MySQL服务器会使用最近最少使用算法,删除部分缓存数据。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)