我在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之外,如何调整这些参数?
答案 0 :(得分:0)
您应该能够创建备用配置文件并通过interfaces
参数将其提供给DBI:
$dbh = DBI->connect('dbi:Sybase:interfaces=/path/to/your/config',
$user, $passwd);