如何通过DBD :: Sybase调整FreeTDS选项?

时间:2015-03-19 17:37:16

标签: sql-server perl freebsd dbi

我在Windows 2012上有一个托管在SQL Server 2012 Standard上的数据库。使用FreeBSD 10和p5-DBI-1.6.33以及p5-DBD-Sybase-1.15_1,我可以连接到它并使用以下命令运行玩具查询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代码中指定连接参数,特别是“tds版本”和“端口”,就像连接到任何其他品牌的数据库时一样。我尝试按如下方式更改数据源规范,但DBD :: Sybase忽略这些参数。

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

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

1 个答案:

答案 0 :(得分:0)

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

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