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



我有两个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和其中的PORT。

非常感谢您的帮助。

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

这就是一个这样的例子。

客户端在端口1434上调用SQL Server Browser。此服务从名称解析端口。并非所有客户都知道如何做到这一点,或者可能不允许太

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 responsen";
my ($datagram,$flags);
$message->recv($datagram,1024,$flags);
#print "Got message from ", $message->peerhost,", flags ",$flags || "none",": $datagramn";
my @PARAMS=split(';',substr($datagram,3));
print "------------------n Server $ARGV[0] reports:nn";
for(my $i=0;$i<($#PARAMS)+1;$i+=2) {
    if ($PARAMS[$i] eq "") {
       print "---------n";
       $i--;
       next;
    };
    print "$PARAMS[$i]=$PARAMS[$i+1]n";
};

-生锈的

最新更新