Is there an existing module to query MS SQL Server Browser (ms-sql-m)?
Edit: The protocol (https://msdn.microsoft.com/en-us/library/cc219703.aspx) is simple. As I didn't find a module that provided easy access to it, I wrote my own query.
if($self->{db_server} =~ m/(.*)\\(.*)/) {
my $server = $1;
my $instance = $2;
# This is an instance name
# Resolve instance name to a port number
my $socket = new IO::Socket::INET(
PeerAddr => "$server:1434",
Proto => 'udp',
);
$socket->send("\x04$instance\x00");
eval {
local $SIG{ALRM} = sub { die "Timed out waiting for recv";
+ };
alarm 20; # wait up to 20 seconds for a response
eval {
my $ret = $socket->recv(my $data, 255);
unless(defined($ret)) {
die "recv error: $!";
}
my ($srv_resp, $resp_data) = unpack("C n/a", $data);
my $details = { split(/;/, $resp_data) };
$self->{db_host} = $details->{ServerName};
$self->{db_port} = $details->{tcp};
};
alarm 0;
die $@ if($@);
};
alarm 0;
if($@) {
die "ERROR: Query SQL Server Browser failed with: $@";
}
}
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|