【问题标题】:How do you adjust FreeTDS options through DBD::Sybase?如何通过 DBD::Sybase 调整 FreeTDS 选项?
【发布时间】:2023-03-26 23:28:01
【问题描述】:

我在 Windows 2012 上的 SQL Server 2012 Standard 上托管了一个数据库。使用带有 p5-DBI-1.6.33 和 p5-DBD-Sybase-1.15_1 的 FreeBSD 10,我可以连接到它并使用以下命令运行玩具查询Perl 代码。

my $dbh = DBI->connect(
    "dbi:Sybase:server=mydb.example.com",
    "username",
    "mypassword",
    {"RaiseError" => 1, "PrintError" => 0},
);
print "Connected.\n";

my $version = $dbh->selectall_arrayref('SELECT @@VERSION', {Columns => {}});
print Dumper($version);

my $tables = $dbh->selectall_arrayref("SELECT * FROM information_schema.tables", {Columns => {}});
print Dumper($tables);

这可行,但是我需要将 /usr/local/etc/freetds/freetds.conf 替换为以下内容(决定性元素是“tds 版本”)。

[global]
    port = 1433
    connect timeout = 10
    timeout = 10
    tds version = 8.0
    text size = 64512

问题是,调整 freetds.conf 不是一个可接受的解决方案。我需要在 Perl 代码中指定连接参数,尤其是“td​​s 版本”和“端口”,就像连接到任何其他品牌的数据库时一样。我尝试如下更改数据源规范,但 DBD::Sybase 忽略了这些参数。

"dbi:Sybase:server=mydb.example.com;port=1433;tds_version=8.0;timeout=10"

除了通过 freetds.conf 之外,如何调整这些参数?

【问题讨论】:

    标签: sql-server perl freebsd dbi


    【解决方案1】:

    您应该能够创建一个替代配置文件并通过 interfaces 参数将其提供给 DBI:

    $dbh = DBI->connect('dbi:Sybase:interfaces=/path/to/your/config',
                        $user, $passwd);
    

    【讨论】:

    • 嗯。这样就足够了,但这似乎也没有任何效果。我怀疑 DBD::Sybase 中有一个错误,它没有解析 server= 之外的任何参数。
    猜你喜欢
    • 2011-02-16
    • 2016-04-14
    • 2017-04-01
    • 2015-07-09
    • 2011-06-16
    • 1970-01-01
    • 2013-07-23
    • 2013-11-18
    • 1970-01-01
    相关资源
    最近更新 更多