Groups | Blog | Home
all groups > sql server clustering > february 2005 >

sql server clustering : SQL Failover problem.


C-Ya
2/17/2005 3:47:03 PM
I have multiple (2) instances of sql 2000 running on my windows 2003 cluster.
I have the default instance owned by server1 and a named instance owner by
server 2. If I shutdown server 1 then my default instance fails over to
server2. Now server two is running both. (no problem). If I shutdown server
2 then my named instance fails over to server1, but my default instance fails
and will only come up when server2 is back online. I have check all
dependencies. The physical disks, the SQL IP Address, and the SQL Network
Name stay online, just the SQL Server (and stuff dependant on it) fail. This
is a new installation (just a few days old)

Should I have done two named instances instead of a default and a named?

One more bit of info. There is no problem with my Cluster Group or my DTC
C-Ya
2/18/2005 9:01:18 AM
Well guys, like magic it now works. I did do a lots of things so I probably
fixed it. Both instances will fail over to the other server and then
fail-back. I problem down.

Now I have another question. I have been told that I can have my web servers
make calls to the MSDTC, and it will pass the data back and forth to the
instances of SQL. This way my web servers don't have to know which instance
of SQL the database they need is in. Correct ??? If so where can I find
information on how to run it this way. Web sites, books, anything will help

Thanks

[quoted text, click to view]
joe.
2/18/2005 9:21:38 AM
A few thoughts:
1. Have you tried a manual failover/move of your default instance without
shutting down the machine?
2. Anything interesting in the event logs?
3. Do you have enough memory on server 1 to accomodate the default instance
after the named instance is up and running?


joe.


[quoted text, click to view]

Mike Hodgson
2/18/2005 3:11:36 PM
You can happily run a default instance and a named instance
simultaneously on the same node. It sounds like the binaries for your
default instance on server1 may be corrupt.

Do all the cluster group resources move over to the other node? If so,
does the SQL Server resource try to start up and then fail? If it does
then there will be some messages logged in the SQL errorlog (for your
default instance) and in the NT event log on server1. Do they give you
any clues as to what's going wrong?

You can try moving the default instance cluster group to server1,
bringing all the dependent resources online (like Disks, IP, Network
Name) and then try starting the default instance from the command line
(in a DOS shell go to the binaries directory and run "sqlservr.exe -c"
perhaps with the -m switch as well so that it's in single user mode;
Ctrl-C in the DOS shell will shutdown sqlservr.exe). Does that work?
If so, then there's nothing wrong with the binaries on server1.

--
*mike hodgson* |/ database administrator/ | mallesons stephen jaques
*T* +61 (2) 9296 3668 |* F* +61 (2) 9296 3885 |* M* +61 (408) 675 907
*E* mailto:mike.hodgson@mallesons.nospam.com |* W* http://www.mallesons.com



[quoted text, click to view]
Mike Hodgson
2/22/2005 10:52:58 AM
Hmmm...that doesn't sound right. :-(

MSDTC (Microsoft Distributed Transaction Coordinator) is responsible for
managing atomic transactions across multiple server. SQL can't do this
on its own because it only knows about the transaction context of
transactions in its own process space. So if you're trying to run a
transaction (ie. a single atomic operation) that involves multiple
servers you need some external "manager", that is DTC.

For a web server to talk to a database it needs to know what SQL server
the database lives on. At a minimum, a SQL client (including a
connection from a web server) needs the 1) server name, 2) the database
name and 3) the connection method (which will be either a flag to say
"use a trusted connection with the current security context", otherwise
knows as "trusted connection" or a username/password pair for the older
style SQL authentication). MSDTC cannot help you figure out where the
database lives.

But at the same time, you don't need to know which physical node is
hosting the instance of SQL. All you need to know is the name of the
virtual server (which can run on any configured node in the cluster).
The IP address for the virtual server is mapped to the appropriate node
(courtesy of MSCS) and all comms to the virtual SQL server are routed to
the appropriate physical node.

There is an option in SQL 2000 for "adding" a SQL instance to Active
Directory, which, as far as I'm aware, publishes the SQL instance in the
LDAP directory so that you can "find" the SQL instance by querying AD
with LDAP. But I've never bothered with this and haven't heard of
anyone who has. It has never sounded like Microsoft's best idea to me
and I can't really see any benefit in it.

HTH.

--
*mike hodgson* |/ database administrator/ | mallesons stephen jaques
*T* +61 (2) 9296 3668 |* F* +61 (2) 9296 3885 |* M* +61 (408) 675 907
*E* mailto:mike.hodgson@mallesons.nospam.com |* W* http://www.mallesons.com



[quoted text, click to view]
AddThis Social Bookmark Button