Sql server DBI-MSSQL-具有实例名称的连接字符串

Sql server DBI-MSSQL-具有实例名称的连接字符串,sql-server,perl,sybase,dbi,Sql Server,Perl,Sybase,Dbi,我有两个MSSQL实例:SERVERNAME1和SERVERNAME2\SQL01,我尝试使用DBI:Sybase从Linux机器连接到它们 我连接到SERVERNAME1没有问题,我使用: DBI->connect("dbi:Sybase:server=SERVERNAME.domain.com:PORT;database=master", "user", "pass") 这对我来说很好。第二台服务器也包含实例名(SQL01)。。。所以,我的问题是-我应该如何为SERVERNAME2\

我有两个MSSQL实例:SERVERNAME1和SERVERNAME2\SQL01,我尝试使用DBI:Sybase从Linux机器连接到它们

我连接到SERVERNAME1没有问题,我使用:

DBI->connect("dbi:Sybase:server=SERVERNAME.domain.com:PORT;database=master", "user", "pass")
这对我来说很好。第二台服务器也包含实例名(SQL01)。。。所以,我的问题是-我应该如何为SERVERNAME2\SQL01构建连接字符串?我还需要传递domain.com和其中的端口


非常感谢您的帮助。

实例名称只是一个端口的名称。
在某些情况下,您需要使用端口而不是实例名

这就是一个例子

客户端在端口1434上调用SQL Server浏览器。此服务根据名称解析端口。并非所有的客户都知道如何做到这一点,也可能不允许这样做


SQL Server名称实例需要将每个DB实例映射到服务器上的特定端口。只要DBA更改了映射,您就可以询问DBA数据库在哪个端口上提供服务,也可以使用此例程找出哪个实例映射到哪个端口。只需使用服务器的IP地址调用该程序。根据此程序的输出编辑freetds.conf文件

#!/usr/bin/perl
$|++;
use strict;
use IO::Socket::INET;
my $message = new IO::Socket::INET(Proto => "udp", PeerPort => 1434, PeerAddr => "$ARGV[0]", LocalPort => 1434,  Timeout => 10)
  or die "Can't make UDP socket: $@";
$message->send("\x02");
print "Sent message, waiting on response\n";
my ($datagram,$flags);
$message->recv($datagram,1024,$flags);
#print "Got message from ", $message->peerhost,", flags ",$flags || "none",": $datagram\n";
my @PARAMS=split(';',substr($datagram,3));
print "------------------\n Server $ARGV[0] reports:\n\n";
for(my $i=0;$i<($#PARAMS)+1;$i+=2) {
    if ($PARAMS[$i] eq "") {
       print "---------\n";
       $i--;
       next;
    };
    print "$PARAMS[$i]=$PARAMS[$i+1]\n";
};
#/usr/bin/perl
$|++;
严格使用;
使用IO::Socket::INET;
my$message=new IO::Socket::INET(Proto=>udp,PeerPort=>1434,PeerAddr=>“$ARGV[0]”,LocalPort=>1434,超时=>10)
或死“无法生成UDP套接字:$@”;
$message->send(“\x02”);
打印“已发送消息,等待响应\n”;
我的($datagram,$flags);
$message->recv($datagram,1024,$flags);
#打印“从中获取消息,$message->peerhost,”,flags“,$flags | |“无”,“:$datagram\n”;
my@PARAMS=split(“;”,substr($datagram,3));
打印“----------------\n服务器$ARGV[0]报告:\n\n”;

对于(my$i=0;$i我的信息在-中,您签出了吗?是的,我签出了,但没有关于如何连接实例名的信息。。。