2014-09-23 6 views
0

У меня есть два экземпляра MSSQL: SERVERNAME1 и SERVERNAME2 \ SQL01, к которым я пытаюсь подключиться с Linux-машины, используя DBI: Sybase.DBI - MSSQL - строка подключения с именем экземпляра

У меня нет никаких проблем для подключения к SERVERNAME1, я использую:

DBI->connect("dbi:Sybase:server=SERVERNAME.domain.com:PORT;database=master", "user", "pass") 

и это отлично работает для меня. Второй сервер также содержит имя экземпляра (SQL01) ... Итак, мой вопрос: как мне построить строку подключения для SERVERNAME2 \ SQL01? Мне нужно передать также domain.com и PORT внутри него.

Большое спасибо за помощь.

+1

Вся информация находится в [документации] (https://metacpan.org/pod/DBD::Sybase) - Вы проверили его? –

+0

Да, я проверил его, но нет информации о том, как подключиться к имени экземпляра ... – DMan

ответ

1

Имя экземпляра - это просто имя порта.
В некоторых случаях вам необходимо использовать порт, а не имя экземпляра

Это один из таких случаев.

Клиент обращается к браузеру SQL Server на порт 1434. Эта служба разрешает порт из имени. Не все клиенты знают, как это сделать, или не может быть позволено слишком

Названия сервера экземпляра SQL потребуется a static port assigned

0

Каждый экземпляр 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: [email protected]"; 
$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"; 
}; 

-Rusty

Смежные вопросы