【问题标题】:mysql communicate with mssql on different server via phpmysql通过php与不同服务器上的mssql通信
【发布时间】:2013-06-18 08:36:39
【问题描述】:

我在我拥有的安装了 CentOS 的 linux 服务器上安装了 mysql。我想从另一个具有 mssql 数据库的 Windows 服务器获取数据。

我需要创建一个 php 脚本,它可以从 mssql 服务器获取值并将其插入到 mysql 服务器中。

我已尝试安装 FreeTDS 和 PDO,但仍然无法连接(不确定我是否已正确安装)。我收到的错误消息是无法连接到服务器并且找不到驱动程序。

如何检查我是否正确安装了 freetds 和 PDO 驱动程序。

我正在尝试做的基本图:

服务器 A (Mumbai) {Linux Cent OS, FreeTDS and PDO installed} ---------> 服务器 B (Delhi) {Windows, MSSql}

我想从服务器 B 获取数据到服务器 A。

locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
62Error 20009 (severity 9):
        Unable to connect: Adaptive Server is unavailable or does not exist
        OS error 110, "Connection timed out"
There was a problem connecting to the server

root@server [~]# tsql -C
Compile-time settings (established with the "configure" script)
                            Version: freetds v0.91
             freetds.conf directory: /usr/local/etc
     MS db-lib source compatibility: no
        Sybase binary compatibility: no
                      Thread safety: yes
                      iconv library: yes
                        TDS version: 5.0
                              iODBC: no
                           unixodbc: yes
              SSPI "trusted" logins: no
                           Kerberos: no

如何将 TDS 版本从 5 更新到 7

请指导。

【问题讨论】:

    标签: php mysql sql-server pdo freetds


    【解决方案1】:

    使用 ADODB 连接

    $conn = new COM ("ADODB.Connection", NULL, CP_UTF8) or die("Cannot start ADO");
    $connStr = "PROVIDER=SQLOLEDB;SERVER=myServer;UID=myUser;PWD=myPass;DATABASE=myDB";
    $conn->open($connStr); //Open the connection to the database
    
    $SQL="SELECT id, .........................";
    $res=$conn->execute($SQL);
    while (!$res->EOF)  //carry on looping through while there are records
    {
        $id=$res->Fields('id')->value;
    }
    

    http://php.net/manual/en/class.com.php

    现在转到示例 #2 COM 示例 (2)

    【讨论】:

    【解决方案2】:

    好吧,您可以使用 mssql 选择查询,在 php 中使用 mssql 查询的结果设置一个变量,然后执行 mysql insert 查询将其插入到您的数据库中

    $link = mssql_connect($server, 'sa', 'phpfi');
    mssql_select_db('php', $link)
    $query = mssql_query('SELECT [id] FROM [php].[dbo].[userlist]');
       while ($row = mssql_fetch_assoc($query)) {
            $row['id']
    $con=mysqli_connect("127.0.0.1","root","pass","db");
    mysqli_query($con,"INSERT INTO tablname VALUES('$id')");
        }
    

    试试这个。 当然,您必须对其进行自定义以满足您的需求。

    【讨论】:

    • 警告:mssql_connect() [function.mssql-connect]:无法连接到服务器:116.214.26.236
    • 告诉我是否有任何端口阻塞了连接?
    • 警告:mssql_select_db() 期望参数 2 是资源 警告:mssql_fetch_assoc() 期望参数 1 是资源
    • 我有一些如何配置 freetds 但它现在连接到端口 4000 net.c:205:Connecting to 116.214.26.236 端口 4000(TDS 版本 7.0)
    【解决方案3】:

    Configure FreeTDS

    这是配置 FreeTDS 的完美教程。一切都来自基本的..精湛的教程。

    感谢雨果·布朗。

    【讨论】:

      猜你喜欢
      • 2014-12-02
      • 1970-01-01
      • 2015-11-19
      • 2011-06-09
      • 2011-09-23
      • 2021-12-29
      • 1970-01-01
      • 1970-01-01
      • 2014-06-20
      相关资源
      最近更新 更多