ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

ubuntu下连microsoft sql server解决方案

2022-06-17 10:02:44  阅读:221  来源: 互联网

标签:sudo server usr sql MSSQL freetds pyodbc microsoft


  • shell for MSSQL:
    • https://github.com/dbcli/mssql-cli
    • mssql-cli -S 127.0.0.1,1433 -d testDB -U myuser -P mypass -Q "select @@version;select * from account"
      记住输出的sql server的服务器版本.我这里是Microsoft SQL Server 2014.
  • python for MSSQL:
    • 安装环境:ubuntu18.

    • 安装linux下的ODBC驱动管理器:

      • sudo apt-get update
      • sudo apt-get install unixodbc unixodbc-dev (unixodbc-dev是必须的!)
      • odbcinst -j 测试安装成功
    • 安装freetds(支持MSSQL的ODBC驱动):

      • 前言: 作为可选的一个替代方案,也可以安装微软的驱动:https://docs.microsoft.com/zh-cn/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017 (网上比较推荐freetds驱动.我们服务器用的Microsoft ODBC Driver 13.也成功了.下面仅讲述freetds驱动的安装步骤)
      • sudo apt-get remove freetds-bin freetds-common freetds-dev (必须卸载先!必须通过编译的方式安装!不要用apt-get安装freetds!)
      • 在这里查看最新的freetds下载地址:http://www.freetds.org/software.html
      • 安装:
        • wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-1.3.12.tar.gz
        • tar zxf freetds-1.3.12.tar.gz
        • cd freetds-1.3.12/
        • ./configure --prefix=/usr/local/freetds --with-unixodbc=/usr/ --enable-msdblib --with-gnu-ld --enable-shared --enable-static
          注意:因为前面的ODBC驱动管理器是通过apt-get安装的,所以--with-unixodbc=就在/usr/下(有/usr/bin/odbcinst)。
        • sudo make && sudo make install
        • sudo ln -s /usr/local/freetds/bin/tsql /usr/bin/tsql
      • 测试安装成功:
        • tsql -C
        • tsql -H 127.0.0.1 -p 1433 -U myuser -P mypass
            1> select @@version
            2> go   # go这个命令才会执行前面的sql语句.
            1> quit   
        
        上面的命令,记住查询到的sql server服务器的版本. 我这里是Microsoft SQL Server 2014.
        http://www.freetds.org/userguide/ChoosingTdsProtocol.html
        在这个网址里可以查到sql server的版本对应的freetds协议号,可以看到2014对应的协议号是7.4(记住)
      • 配置freetds:
        • sudo vi /usr/local/freetds/etc/freetds.conf
            [global]里面加一行: client charset = UTF-8  # 避免中文乱码
            然后,最下面有个“port = 1433”的章节,这个端口是MSSQL的默认端口.改一下这个章节的名字为MSSQL(要记住):
            如下:
            [MSSQL]                             # 改动.
                    host = 127.0.0.1            # 改动.
                    port = 1433                 # 没改
                    tds version = 7.4           # 改动.     
        
      • 为ODBC驱动管理器添加上freetds驱动:
        • sudo vi /etc/odbcinst.ini
          编辑如下:
        [ODBC]
        Trace = No  
        TraceFile       = /tmp/sql.log
        ForceTrace      = No
        Pooling     = Yes
        
        [FreeTDS]
        Description     = FreeTDS Driver
        Driver=/usr/local/freetds/lib/libtdsodbc.so
        
        • sudo vi /etc/odbc.ini
          编辑如下:
        [ms-sql]                # 对应connect字符串中的DSN
        Driver      = FreeTDS   # 这个和odbcinst.ini里的章节名儿对应起来.
        Servername = MSSQL      # 这个和上面配置的freetds.conf里的章节名儿对应起来.
        
      • 配置完成后测试:
        • 使用 isql 测试一下,测试方式是执行:
        isql -v ms-sql username password # 必须加上user和pass。。否则连不上提示也奇怪。。
        
        也可以批量执行sql语句:
        isql -v ms-sql myuser mypass -w < my.sql > 1.html  # 输出结果到html文件
        
    • 安装pyodbc:

      • 建议python3,py2中的默认编码是ASCII码,py3默认编码是Unicode(utf-8).因此不需要在文件头部写"# coding=utf-8"了。
      • sudo pip3 install pyodbc (如果timeout则多试几遍...)
      • 测试:
        • python3:
            - import pyodbc
            - pyodbc.drivers() 
            # connect时SERVER, SERVERNAME, DSN这三个同时只能设一个,因此有三种connect方法:
            - cnxn = pyodbc.connect('DRIVER=FreeTDS;SERVER=127.0.0.1,1433;DATABASE=testDB;UID=myuser;PWD=mypass') # 推荐
            - cnxn = pyodbc.connect('DRIVER=FreeTDS;Servername=MSSQL;DATABASE=testDB;UID=myuser;PWD=mypass')
            - cnxn = pyodbc.connect('DSN=ms-sql;DATABASE=testDB;UID=myuser;PWD=mypass')
            # 使用:
            - cursor = cnxn.cursor()
            - cursor.execute("select * from account")
            - rows = cursor.fetchall()
            - for row in rows:
                  print("{}, {}".format(row.account_name, row.describe))
        
        详见:https://github.com/mkleehammer/pyodbc/wiki/Getting-started

标签:sudo,server,usr,sql,MSSQL,freetds,pyodbc,microsoft
来源: https://www.cnblogs.com/xiaouisme/p/16384641.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有