【问题标题】:cannot connect using perl Sybase dbi on Linux to mssql 2008 using a domain user无法使用域用户在 Linux 上使用 perl Sybase dbi 连接到 mssql 2008
【发布时间】:2012-07-31 02:16:26
【问题描述】:

我需要在 CentOS 机器上使用 perl (12.2) 和 freetds 0.91 连接到 mssql 2008 数据库,并且可以使用在数据库上定义的用户成功完成。但是,我需要切换到域用户,但我无法弄清楚我需要做什么才能让它工作。它看起来在数据库上正确设置,这是我的连接字符串:

my $dsn = [
    "DBI:Sybase:database=adx;server<server_name>",
    '<DOMAIN>\\<user>',
    '<password>',
    {
        PrintError  => 0,
        RaiseError  => 0,
        AutoCommit  => 0
    }
];

这是错误信息:

database connection failed for DBI:Sybase:database=<db_name>;server=<server_name>
<DOMAIN>\\<user> : OpenClient message: LAYER = (0) ORIGIN = (0) SEVERITY = (78) NUMBER = (34)
Server <server_name>, database
Message String: Adaptive Server connection failed

我相信tds错误(LAYER = (0) ORIGIN = (0) SEVERITY = (78) NUMBER = (34))表示登录失败,但我确定密码是正确的,并直接在mssql客户端上尝试过。有谁让这个工作?

【问题讨论】:

  • 你试过硬编码吗? : $dbh = DBI->connect("dbi:Sybase:server=BILLING","meuser","mypassw");
  • 为什么要使用 Sybase 连接 mssqsl。有一个 Class::DBI::MSSQL
  • 我已经尝试过硬编码的语法。不工作。而 DBI::MSSQL 需要 ODBC,因此需要我安装和配置 unixODBC,而我上次尝试时无法让它工作。我已经使用常规 mssql 数据库帐户使用 DBI::Sybase 连接到 mssql。

标签: sql sql-server perl


【解决方案1】:

我发现从 Linux 连接到 SQL Server(DBD::ODBC) 的唯一成功方法是使用 ODBC,SyBase 模块应与 Sybase 实例一起使用,而不是与 SQL Server 一起使用...

与 ODBC 一起使用的连接字符串应如下所示:

 "DBI:ODBC:driver={SQL Server};Server=192.168.1.1,1433;database=db_name";

【讨论】:

  • mssql 基于 Sybase,我使用 DBI::Sybase 和 freetds 0.91。它适用于许多常规 mssql 数据库帐户,但我还没有找到如何让它与域帐户一起使用。
  • 是的,但是我认为使用 ODBC 可能会更好,尤其是在这种情况下...
猜你喜欢
  • 1970-01-01
  • 2014-08-28
  • 2017-10-26
  • 1970-01-01
  • 1970-01-01
  • 2020-04-22
  • 1970-01-01
  • 2011-02-24
  • 2011-08-31
相关资源
最近更新 更多