IP Library › Granted Patent US 9,239,868
Granted Patent B2
US 9,239,868 · App. 13/527,384 · Granted Jan 19, 2016

Virtual session management and reestablishment

Inventors: Matthew A. Neerincx (Sammamish, WA); Luiz F. Santos (Lynnwood, WA); Oleg Ignat (Bellevue, WA); David B. Lomet (Redmond, WA); Quetzalcoatl Bradley (Monroe, WA); Raghu Ram (Redmond, WA); Chadwin J. Mumford (Woodinville, WA); Peter Gvozdjak (Bellevue, WA); Balendran Mugundan (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F17/30566G06F11/2023H04L67/142H04L67/146H04L67/148G06F11/2097H04L69/40
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,239,868
App. No.
13/527,384
Granted
Jan 19, 2016
Kind
B2
Abstract

Systems and methods are described that establish and maintain a virtual session between a client and one or more database servers. A database server establishes a first session with a client wherein establishing the virtual session with the client comprises associating a virtual session identifier (ID) with the first session, generates state information in association with the first session, and stores the state information in a repository in association with the virtual session ID. After the first session fails, a same or different database server establishes a second session with the client wherein establishing the second session with the client comprises receiving the virtual session ID from the client, accesses the state information that was stored in the repository in association with the virtual session ID, and associates the state information with the second session.

Claims (76)

1. A method, comprising:

a first method performed by a first instance of a database server executing on at least one of one or more machines, the first method comprising:

establishing a first session with a database driver of a client, the establishing the first session with the database driver of the client comprising associating a virtual session identifier (ID) with the first session, wherein the virtual session ID is stored by at least the database driver of the client;

generating state information in association with the first session;

storing the state information in a repository in association with the virtual session ID;

generating further state information in association with the first session; and

sending the further state information to the client for storage thereby in association with the virtual session ID; and

a second method performed by a second instance of the database server executing on the at least one of the one or more machines, the second method comprising:

establishing a second session with the database driver of the client, the establishing the second session with the database driver of the client comprising receiving the virtual session ID from the database driver of the client;

accessing the state information that was stored in the repository in association with the virtual session ID;

associating the state information with the second session;

receiving the further state information from the client in association with the virtual session ID; and

associating the further state information received from the client with the second session, the virtual session ID comprising an ID that is unique with respect to at least both the first instance of the database server and the second instance of the database server.

2. The method of claim 1 , wherein the first method further comprises:

generating the virtual session ID; and

transmitting the virtual session ID to the client.

3. The method of claim 1 , wherein the first method further comprises:

receiving the virtual session ID from the client.

4. The method of claim 1 , wherein the step of establishing the second session with the database driver of the client occurs after the first session fails.

5. The method of claim 1 , wherein the repository is stored in a storage medium that is not directly accessible by the second instance of the database server and wherein accessing the state information that was stored in the repository in association with the virtual session ID comprises accessing a replicated copy of the repository that is stored in a storage medium that is accessible to the second instance of the database server.

6. The method of claim 1 , wherein the repository is stored in a storage medium that is shared by both the first instance of the database server and the second instance of the database server and wherein accessing the state information that was stored in the repository in association with the virtual session ID comprises accessing the repository in the shared storage medium.

7. The method of claim 1 , wherein the repository is stored in a storage medium that is not directly accessible by the second instance of the database server and wherein accessing the state information that was stored in the repository in association with the virtual session ID comprises requesting and receiving information concerning the contents of the repository from an entity that is capable of directly accessing the storage medium.

8. The method of claim 1 , wherein the state information comprises one or more of:

a temporary table;

transaction state information;

a database cursor handle; or

lock ownership information.

9. The method of claim 1 , wherein the second method further comprises:

receiving a message initiated by the client that indicates that the second session is to be terminated; and

terminating, by the second instance of the database server, the second session in response to receiving the message.

10. A method performed by a database server instance executing on a machine, comprising:

establishing a first session with a database driver of a client, the establishing the first session with the database driver of the client comprising associating a virtual session identifier (ID) with the first session, wherein the virtual session ID is stored by at least the database driver of the client and is unique with respect to at least the database server instance;

generating state information in association with the first session;

storing the state information in a repository in association with the virtual session ID;

generating further state information in association with the first session;

sending the further state information to the client for storage thereby in association with the virtual session ID;

establishing a second session with the database driver of the client, the establishing the second session with the database driver of the client comprising receiving the virtual session ID from the database driver of the client;

accessing the state information that was stored in the repository in association with the virtual session ID;

associating the state information with the second session;

receiving the further state information from the client in association with the virtual session ID; and

associating the further state information received from the client with the second session.

11. The method of claim 10 , further comprising:

generating the virtual session ID; and

transmitting the virtual session ID to the client.

12. The method of claim 10 , further comprising:

receiving the virtual session ID from the client.

13. The method of claim 10 , wherein the step of establishing the second session with the database driver of the client occurs after the first session fails.

14. The method of claim 10 , wherein the state information comprises one or more of:

a temporary table;

transaction state information;

a database cursor handle; or

lock ownership information.

15. The method of claim 10 , further comprising:

receiving a message initiated by the client that indicates that the second session is to be terminated; and

terminating, by the database server instance, the second session in response to receiving the message.

16. A system, comprising:

one or more processors;

a storage medium that stores program modules that are executed by the one or more processors, the program modules comprising:

an application; and

a database driver of a client that, when executed by the one or more processors, performs database operations on behalf of the application, the performing the database operations including:

establishing a first session with a first instance of a database server, the establishing the first session with the first instance of the database server comprising associating a virtual session identifier (ID) with the first session;

storing the virtual session ID;

receiving state information associated with the first session, wherein the state information associated with the first session is generated by the first instance of the database server;

storing the state information in association with the virtual session ID;

establishing a second session with a second instance of the database server, the establishing the second session with the second instance of the database server comprising associating the virtual session ID with the second session and transmitting the virtual session ID to the second instance of the database server, the virtual session ID comprising an ID that is unique with respect to at least both the first instance of the database server and the second instance of the database server; and

transmitting the state information to the second instance of the database server in association with the virtual session ID.

17. The method system of claim 16 , wherein performing the database operations by the database driver further includes:

sending a message that causes the second instance of the database server to terminate the second session.

18. The system of claim 16 , wherein the state information comprises one or more of:

a temporary table;

transaction state information;

a database cursor handle; or

lock ownership information.

19. The system of claim 16 , wherein storing the state information in association with the virtual session ID comprises:

storing the state information in a repository in association with the virtual session ID.

20. The system of claim 19 , wherein the repository is stored in a storage medium that is not directly accessible by the second instance of the database server.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0541 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 20, 2012
From: NEERINCX, MATTHEW A.; SANTOS, LUIZ F.; IGNAT, OLEG; LOMET, DAVID B.; BRADLEY, QUETZALCOATL; RAM, RAGHU; MUMFORD, CHADWIN J.; GVOZDJAK, PETER; MUGUNDAN, BALENDRAN
To: MICROSOFT CORPORATION
Reel/Frame 028406/0743 →
Continuity (1)
Related Publication 20130339533A1 · Dec 19, 2013