CLR stored procedure fails to rollback the transaction?

I created the following stored procedure. It inserts a row into the 
Headlines table. If it fails, it returns -1 with the error that sql server 
returned. So far, everything seems to be working right except the rollback 
part. Is there any reason why the rollback fails?

[code]
using System;

using System.Data;

using System.Data.SqlClient;

using System.Data.SqlTypes;

using Microsoft.SqlServer.Server;

using System.Transactions;

public partial class StoredProcedures {

[Microsoft.SqlServer.Server.SqlProcedure]

public static void InsertHeadline(string Title, string Description, string 
Content, DateTime StartDate, DateTime EndDate) {

string SqlQuery = "INSERT INTO Headlines (HeadlineTitle, 
HeadlineDescription, HeadlineContent, HeadlineStartDate, HeadlineEndDate) 
values (@HeadlineTitle, @HeadlineDescription, @HeadlineContent, 
@HeadlineStartDate, @HeadlineEndDate)";

try {

using(TransactionScope Scope = new TransactionScope()) {

using(SqlConnection Connection = new SqlConnection("context 
connection=true")){

SqlCommand Command = new SqlCommand(SqlQuery, Connection);

#region Command parameters

Command.Parameters.Add("@HeadlineTitle", DbType.String);

Command.Parameters["@HeadlineTitle"].Value = Title;

Command.Parameters.Add("@HeadlineDescription", DbType.String);

Command.Parameters["@HeadlineDescription"].Value = Description;

Command.Parameters.Add("@HeadlineContent", DbType.String);

Command.Parameters["@HeadlineContent"].Value = Content;

Command.Parameters.Add("@HeadlineStartDate", DbType.Date);

Command.Parameters["@HeadlineStartDate"].Value = StartDate;

Command.Parameters.Add("@HeadlineEndDate", DbType.Date);

Command.Parameters["@HeadlineEndDate"].Value = EndDate;

#endregion

Connection.Open();

Command.ExecuteNonQuery();

} //end connection.

Scope.Complete();

} //end transaction.

} catch(Exception ex) {

using(SqlConnection Connection = new SqlConnection("context 
connection=true")) {

Connection.Open();

SqlCommand Command = new SqlCommand("SELECT -1, @ErrorMessage", Connection);

Command.Parameters.Add("@ErrorMessage", DbType.String);

Command.Parameters["@ErrorMessage"].Value = ex.Message;

SqlContext.Pipe.ExecuteAndSend(Command);

}

}


}

};


0
Andy
3/12/2010 3:04:58 PM
dotnet.languages.csharp 1931 articles. 0 followers. Follow

8 Replies
1288 Views

Similar Articles

[PageSpeed] 36

On Mar 12, 5:04=A0pm, "Andy B." <a_bo...@sbcglobal.net> wrote:
> I created the following stored procedure. It inserts a row into the
> Headlines table. If it fails, it returns -1 with the error that sql serve=
r
> returned. So far, everything seems to be working right except the rollbac=
k
> part. Is there any reason why the rollback fails?

I have no idea.  But CLR is weird--you ever look at what goes on
behind the scenes?  More than meets the eye.  It's almost like they
have a automatic parallel thread generator--I'm always surprised at
the temporary variables that seem to get created.  Maybe something is
out of sync so that when you think there should be a rollback, the CLR
engine is in fact 'behind the times' or 'ahead of time' from where you
think it is, and hence the database (which runs on its own clock, so
to speak) never gets affected.

That's the only thing I can think of without a line by line dissection
of your code.  BTW I am not a db expert though I do have a pretty good
handle on it.

RL
0
RayLopez99
3/12/2010 3:33:43 PM

"Andy B." wrote:

> I created the following stored procedure. It inserts a row into the 
> Headlines table. If it fails, it returns -1 with the error that sql server 
> returned. So far, everything seems to be working right except the rollback 
> part. Is there any reason why the rollback fails?
> 

Maybe you need to use nested Using(s) like this.

using(TransactionScope Scope = new TransactionScope())  
using(SqlConnection Connection = new SqlConnection("context 
connection=true"))

try
{
      conn.open();
      other statemants
      scope.complete
}
catch
{
    
}
finally
{
   if(conn.State == conn.Open)
     conn.close();
}


What that stuff you have about going back to get SQL to get some exception 
is what? It doesn't seem to make any sense.

0
Utf
3/12/2010 4:37:02 PM
>What that stuff you have about going back to get SQL to get some exception 
>is what? It doesn't seem to make any sense.
1. I need to return the HeadlineID of the headline just inserted (if it was 
successful) as well as a "Your headline was successfully saved." message. 
This part wasn't included in the stored proc for now. The other part was in 
case the insert failed and a rollback happened. It seemed to be the easiest 
way of making a resultset for the -1 and the exception text. Do you have any 
easier way to work it out? If there was an easy way to create a .net 
resultset I would do it. 


0
Andy
3/12/2010 4:52:19 PM
"Andy B." <a_borka@sbcglobal.net> wrote in message 
news:ewhoYRgwKHA.5812@TK2MSFTNGP02.phx.gbl...
> >What that stuff you have about going back to get SQL to get some 
> >exception is what? It doesn't seem to make any sense.
> 1. I need to return the HeadlineID of the headline just inserted (if it 
> was successful) as well as a "Your headline was successfully saved." 
> message. This part wasn't included in the stored proc for now. The other 
> part was in case the insert failed and a rollback happened. It seemed to 
> be the easiest way of making a resultset for the -1 and the exception 
> text. Do you have any easier way to work it out? If there was an easy way 
> to create a .net resultset I would do it.
>
Ok. I reworked the stored proc again. It now doesn't go to the database for 
error handling, just sends the error results to the client. Everything still 
works fine, but the rollback still fails to execute. Any ideas? Here is the 
complete stored proc code.

using System;

using System.Data;

using System.Data.SqlClient;

using System.Data.SqlTypes;

using Microsoft.SqlServer.Server;

using System.Transactions;

public partial class StoredProcedures {

[Microsoft.SqlServer.Server.SqlProcedure]

public static void InsertHeadline(string Title, string Description, string 
Content, DateTime StartDate, DateTime EndDate) {

string SqlQuery = "INSERT INTO Headlines (HeadlineTitle, 
HeadlineDescription, HeadlineContent, HeadlineStartDate, HeadlineEndDate) 
values (@HeadlineTitle, @HeadlineDescription, @HeadlineContent, 
@HeadlineStartDate, @HeadlineEndDate)";

using(SqlConnection Connection = new SqlConnection("context 
connection=true")){

SqlCommand InsertCommand = new SqlCommand(SqlQuery, Connection);

#region InsertCommand parameters

InsertCommand.Parameters.Add("@HeadlineTitle", DbType.String);

InsertCommand.Parameters["@HeadlineTitle"].Value = Title;

InsertCommand.Parameters.Add("@HeadlineDescription", DbType.String);

InsertCommand.Parameters["@HeadlineDescription"].Value = Description;

InsertCommand.Parameters.Add("@HeadlineContent", DbType.String);

InsertCommand.Parameters["@HeadlineContent"].Value = Content;

InsertCommand.Parameters.Add("@HeadlineStartDate", DbType.Date);

InsertCommand.Parameters["@HeadlineStartDate"].Value = StartDate;

InsertCommand.Parameters.Add("@HeadlineEndDate", DbType.Date);

InsertCommand.Parameters["@HeadlineEndDate"].Value = EndDate;

#endregion

SqlTransaction InsertTransaction;

Connection.Open();

InsertTransaction=Connection.BeginTransaction("Insert");

InsertCommand.Connection=Connection;

InsertCommand.Transaction=InsertTransaction;

try {

InsertCommand.ExecuteNonQuery();

InsertTransaction.Commit();

} catch(Exception ex) {

//Handle any commit errors.

SqlDataRecord InsertError = new SqlDataRecord(new SqlMetaData[]

{ new SqlMetaData("ID", SqlDbType.Int),

new SqlMetaData("Message", SqlDbType.NVarChar, 2048) });

InsertError.SetInt32(0, -1);

InsertError.SetString(1, ex.Message);

try {

InsertTransaction.Rollback();

SqlContext.Pipe.Send(InsertError);

} catch(Exception ex2) {

//Deal with rollback errors.

InsertError.SetString(1, ex2.Message);

SqlContext.Pipe.Send(InsertError);

}

}

}

}


};


0
Andy
3/12/2010 6:18:37 PM

> Ok. I reworked the stored proc again. It now doesn't go to the database for 
> error handling, just sends the error results to the client. Everything still 
> works fine, but the rollback still fails to execute. Any ideas? Here is the 
> complete stored proc code.
> 

Is not the statement below suppose to be the first line in the Catch of the 
first Try/Catch?

InsertTransaction.Rollback();

What does the second Try/Catch have anything to do with the first Try/Catch 
and what happened there and rollback of transaction? 

You ran the stop sign it seems and started executing other SQL statements 
that have nothing to do with what happened in the first Try/Catch from a 
logical standpoint.

And you have the rollback in the wrong Try/Catch, which means it blew it off 
and committed the changes it sems well before it got to the rollback 
statement.



0
Utf
3/12/2010 8:14:02 PM
"Mr. Arnold" <No@No.com> wrote in message 
news:0A00CD47-EE9E-4F72-B834-D9003EC25C17@microsoft.com...
>
>
>> Ok. I reworked the stored proc again. It now doesn't go to the database 
>> for
>> error handling, just sends the error results to the client. Everything 
>> still
>> works fine, but the rollback still fails to execute. Any ideas? Here is 
>> the
>> complete stored proc code.
>>
>
> Is not the statement below suppose to be the first line in the Catch of 
> the
> first Try/Catch?
>
> InsertTransaction.Rollback();

Probably, but if you have to do error handeling (i.e. log an exception, or 
send it to the client) you need to trap the exception before you do a 
rollback. If you don't, you lose everything since rollback resets everything 
back to default state: The number of commits is set to 0, the number of 
commitable statements is set to 0, all references to error codes are set to 
null and all exceptions get thrown out the window and are set to null. This 
is the same way in transact-sql statements. Consider the following code:

create procedure TestTransaction
as

-- create a transaction
begin try
begin transaction
insert into ATableOfSomeKind (ID, Message) values(0, 'This might work...');
commit transaction
end try
begin catch
-- will send a message to the client if the insert above fails for some 
reason.
print error_message()

-- rollback now that there is an uncommitable transaction somewhere.
rollback
-- Just for kicks, try to resend the error again. It should fail.
print error_message()
end catch
--end transact-sql

The above transact-sql is a basic example of what my clr proc was trying to 
model after, but it isn't working for some strange reason. You would think 
CLR would follow the same rules as transact-sql does...

> What does the second Try/Catch have anything to do with the first 
> Try/Catch
> and what happened there and rollback of transaction?

Unless Microsoft is totally clueless and
1. Was born yesterday, and
2. Crawled out from a rock in the desert

They must not know how to write code for their own server. At this link:
http://msdn.microsoft.com/en-us/library/2k2hy99x(VS.71).aspx
It explains how to do the same thing I want to do but with error reporting 
to the client in a controlled way. The answer to the next questions are in 
that sample.

> You ran the stop sign it seems and started executing other SQL statements
> that have nothing to do with what happened in the first Try/Catch from a
> logical standpoint.
>
> And you have the rollback in the wrong Try/Catch, which means it blew it 
> off
> and committed the changes it sems well before it got to the rollback
> statement.
>
>
>

I can try working it out again, but the try...catch inside the first catch 
block was Microsoft's idea (see above). I guess it's supposed to deal with 
errors in case rollback fails. 


0
Andy
3/13/2010 1:14:31 AM
Andy B. wrote:
> 
> I can try working it out again, but the try...catch inside the first catch 
> block was Microsoft's idea (see above). I guess it's supposed to deal with 
> errors in case rollback fails. 
> 
> 

The example link you supplied.

What I see here is a Try/Catch with the rollback in the first Try as the 
first thing done on the caught exception, like I said. What are you seeing?


Try
   myCommand.CommandText = "Insert into Region (RegionID, 
RegionDescription) VALUES (100, 'Description')"
   myCommand.ExecuteNonQuery()
   myCommand.CommandText = "Insert into Region (RegionID, 
RegionDescription) VALUES (101, 'Description')"
   myCommand.ExecuteNonQuery()
   myTrans.Commit()
   Console.WriteLine("Both records are written to database.")
Catch e As Exception
   Try
     myTrans.Rollback()
   Catch ex As SqlException
     If Not myTrans.Connection Is Nothing Then
       Console.WriteLine("An exception of type

Where is this CLR example? Are you trying to roll your own with two 
examples combining the two on a pillage and plunder?


0
Mr
3/13/2010 3:24:12 AM
Andy B. wrote:

<snipped>

What I suggest you do is rework the code for now doing a divideByZero in 
code before the commit. In the catch, there should only be one statement 
in the catch the rollback -- no try in the catch no nothing.

You can do it with the Using Transcope too and let it rollback.

I suggest that you see it in its simplistic example to know that it will 
work the -- rollback.

Then I suggest that you sit back and ponder this. What are you doing in 
the code that leads to the rollback not working and the trans is 
committed, even after it blew-up?
0
Mr
3/13/2010 3:55:08 AM
Reply:

Similar Artilces:

Increasing size of store
Hey guys, Is there an downside to increasing the store size to 75 gb in standard? Also, is it okay to delete PreDefragLogFile's older then last year? The log files are taking up 40gb of space and i dont think they are necessary. Thanks in advance you do not defrag log files...a full, online backup will/should purge the transaction log files that have been committed to the store/s...are you not performing nightly backups? -- Susan Conkey [MVP] <draelive@gmail.com> wrote in message news:1175617448.514415.240730@y80g2000hsf.googlegroups.com... > Hey guys, > > Is the...

Split Transactions do not total transaction amount (See Warnings)
I have a bunch of transactions where the total of the items split into different categories does not add up to the transaction amount. I've noticed that for electronically received transactions, I get a message on the transaction that says "See Warnings", but I don't seem to see this for transactions that have been accepted or were entered incorrectly (not electronically received). Is there any way to write a report to find these transactions where the different categories do not add up to the transaction amount? This is a great question. I'm not thinking of a way to g...

Store object in combo?
Is it possible to store a collection of objects in an MFC combo box? e.g. I want to store a collection of my Campaign objects in a combo, displaying each Campaign.getName() in the combo list. When a user selects the Campaign in the drop-down it returns that chosen Campaign. Si wrote: > Is it possible to store a collection of objects in an MFC combo box? > > e.g. I want to store a collection of my Campaign objects in a combo, > displaying each Campaign.getName() in the combo list. When a user selects > the Campaign in the drop-down it returns that chosen Campaign. >...

Business Portal Installation Failing
When Installing Business Portal for GP 10.0 I'm getting an error "The language is not supported on server.", the server is configured with English (New Zealand) but the SharePoint site itself is configured with English (United States) .. could this be causing the issue? I've googled and found a related issue during MOSS installation suggesting that the follow reg key entry: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\12.0\ServerLanguage] “1033″=”" Is missing, but I've checked at that entry is present on my server....

Fastest way to move XML document into and back out of CLR function
Fastest way to move XML document into and back out of CLR function In SQL Server 2005 and Visual Studio 2005, what is the fastest way to pass an xml data type variable into a C# CLR function and retrieve it back out of the C# CLR function when the C# CLR function is done modifying it? I tried this but get deployment error becuase SQLServer2005/CLR dotn support System.Xml.XmlDocument: public partial class UserDefinedFunctions { [Microsoft.SqlServer.Server.SqlFunction] public static int InsertSomeNode(System.Xml.XmlDocument pDoc) { // return 1; } }; thorws ...

Cannot Mount Store
I am running Exchange Server 2003 SP2. I restored a mail store to a recovery storage group and then I tried to dismount it. I don't think the dismount completed but shows that the store is dismounted. When trying to mount it i get the following error: The Microsoft Infromation Store Service is Busy c104173c Exchange System Manager Does this mean that there is a problem with the information store. If I restart the service will I have the same problem with the rest of my stores? I cannot even delete the store. This means that the service is not in a happy place. Is it still hung...

CLR Attention CLR
Your much appreciated posts have no disappeared as far as I can see. Your postings "All of my posts got deleted" and "It just did it again..." are visible at msnews.microsoft.com and www.excelforum.com What if you try www.excelforum.com? What newsreader are you using, and how do you connect to the group? Post a reply to this message and see what happens. Maybe you have a spam filter agains yourself, or it's just the evil eye :-) Regards Anders Silvn Thank you Anders, for your kind words and your new information. I generally go to the newsgroups through msnews...

Can't Fail We ADVERTISE for YOU Just Join! #2
The hottest biz online did a crazy move. They decided to do a FREE Ad CO-OP. That means once you join they will send your website targeted traffic. They are SPENDING THOUSANDS ON THIS CO-OP. All you need to do is plug in. Take a Free Tour Today at http://www.watchthemoneyonline.com ...

A program is trying access e-mail addresses you have stored in Outlook
This annoying message comes up all the time, any way to turn it off? Hi Marrob, CAUSE This behavior occurs if you have installed the Outlook E-mail Security Update. The Outlook E-mail Security Update provides additional levels of protection against malicious e-mail messages. The update changes the way that Outlook handles attachments and the way that Outlook can be controlled programmatically. For additional information about this update, please see one of the following articles in the Microsoft Knowledge Base, depending on which version of Outlook you have: 262631 OL2000: Info...

The request failed with HTTP status 403: Forbidden
I am working on SBS 2003 with CRM 3.0 loaded using SQL 2000. While using CRM, I noticed that the reports were not working. I tried to do a repair on the CRM installation and received the error: Setup failed to validate specified Reporting Services Report Server https:<servername>.<domainname>/ReportServer. Error: The request failed with HTTP status 403: Forbidden. I am fairly sure this is a setting in IIS, but have tinkered around inside of there and made numerous changes to no effect. Apparently this same issue is keeping me from making changes within System Settings in CR...

DPM2010 installation fails with ID: 820
I have installed DPM2010 several times now without any problems. The past 5 installations have all gone wrong however and all fail with the same error. I cannot figure out what I am doing wrong. My server is a Windows 2008 R2 server with 4GB of RAM and a few local disks. Because the previous installations went wrong, I reinstalled the OS, did a Windows Update and made the machine a member of a Windows Server 2008 R2 domain. The DPM installation starts out fine and accepts the configuration. It also installs SQL Server 2008 without error. Fairly quickly after the Data Prote...

Store Sales
Str1 Str2 Str3 Str4 Str5 Week 1 1 Week 2 1 1 Week 3 1 1 1 Week 4 1 1 1 1 Week 5 1 1 1 1 1 Wk1 Wk2 Wk3 Wk4 wK5 Markets $20 $10 $8 $7 $6 I have information above in my spreadsheet. The store opens in week 1 and stores in their first week make $20. In week 2, I have one new store that makes $20 and another and an existing store that makes $10. In week 3, I have 1 new opening at $20, 1 store open for 1 week at $10, and 1 store open for 2 weeks which now makes $8. This continues in the same fashion for week 4 and week 5. This is easy to calculate if th...

Mailbox store rights
Sorry for the length of this post. I have an exchange 2003 server with one mailbox storage group. I have 4 standard mailbox stores under this storage group. All 4 were created during the initial install with the same rights, just different names. I am having various strange "permission" problems for users under 3 of the stores, but no problems with users in the other store. We utilize mapi and owa. Outlook web access gives a "You don't have permissions to perform this action." when the user tries to create an appointment in their calendar, everything else i...

Updates Failing
Howdy, I just got Microsoft Money 2007 Premium Version 16.0.125.162 and it will not download/install the updates no matter what I do. I've installed and uninstalled the software, attempted to download the updates again and it is not working. Can anyone give me a work around or a fix for this? I've been looking around the MNYCoreFiles and it appears the files are downloading it just is not applying the updates preoperly. Thanks, owen Delete your temp files. Then open the money sample file and see if the updates are applied. If you still are having problems search the news grou...

Importing into Outlook MSN mail stored on my computer
Can anyone tell me how to get MSN mail stored on My computer into outlook and maintain the correct dates on the messages. Jim Innes How are you importing it? Do you have MOOL service? -- Diane Poremsky [MVP - Outlook] Author, Teach Yourself Outlook 2003 in 24 Hours Coauthor, OneNote 2003 for Windows (Visual QuickStart Guide) Author, Google and Other Search Engines (Visual QuickStart Guide) Outlook Tips: http://www.outlook-tips.net/ Outlook & Exchange Solutions Center: http://www.slipstick.com Join OneNote Tips mailing list: http://www.onenote-tips.net/ "jdinnes_fra" &l...

Access 2002 front end works fine in full version
Folks, I work for a government department with strict controls on the computer and network. I have built an Access 2003 (2000 file format) DB that has a front and back end. The front end has a switch and user toolbar, and the majority of the app works fine. The front end performs flawlessly on my machine with a full version. The major data entry screen has a series of fields and a subform with a couple of tabs for additional data. Beside two of the data fields (comboboxes) I have a button to pop up a modal form to enter new data for the list in the combo box. When new data i...

outlook failed to archive
On a system with Outlook 2000, I created an archive folder and then clicked on the menu file-->archive and select the folder and a date of one year ago. I then pressed okay and outlook appears to jump like it is trying to do something, but nothing happens . I look at the archive.pst file and nothing has been added to it and then look at the email folder and emails older than one year ago are still there. Is there something that I could be missing in the settings that would cause it not to archive without an error message. I've looked at the folder options and set those to the same d...

Grocery Store
This is a multi-part message in MIME format. ------=_NextPart_000_000A_01C69446.9D5988B0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Has anyone implemented MS POS or RMS SO in a grocery store? Are there = any "gotchas" that I need to be aware of? Any problems integrating with = Magellan XL scale/scanners? =20 Zare ------=_NextPart_000_000A_01C69446.9D5988B0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional/...

Store file sizes do not make sense.
I am running Exchange Enterprise 2003 sp1 My priv1.edb is 20GB's, my priv1.stm is 70GB's. All but one of my users is using Outlook 2003. (the one user that doesn't use ol2003 is me) We only have limited use of OWA. I have tried to perform an offline defrag, and the stm file only dropped by 1 GB. I am left wondering what is actually in the STM file when you add up all the mailboxes, it only totals approximately 18GB's. The couple of questions I have. What in the world of Microsoft is chewing up so much space? Other than moving all of the mailboxes to another server, cleaning ...

Money 2007: Transaction not downloaded? ?
I recently upgraded to Money 2007. I have set up my online accounts to Bank of America and ING Direct. When I update the account, the summary indicates success, and the Bank Balance gets updated correctly. However, the transaction are not downloaded to the accounts, and hence the Adjusted Balance remains unchanged. Any idea as to what is happening? ...

Information Store Crashes store.exe
store.exe exception access violation (0xc0000005), This is currently happening on 3 of the 5 exchange 5.5 servers with sp4 and trend micro interscan. once to twice a day. total of 3500 users Urgent help need Make sure this is installed. http://www.microsoft.com/downloads/details.aspx?FamilyID=9EA49782-26B4-470E-950C-3CDCFDC27211&displaylang=en -- Hope that helps, Dan Townsend This posting is provided "AS IS" with no warranties, and confers no rights. Please do not send email to this address, post a reply to this newsgroup. Use of included script samples are subject ...

Simplest CLR
What is the simplest (and cheapest/free) way I can use CLR on my home machine? I have XP & SQL Server 2008 developer. You simply need Visual Studio (the free Express edition will work) to build your CLR classes and then deploy to your SQL Server. Here is very simple example: http://msdn.microsoft.com/en-us/library/ms254956(VS.80).aspx -- Plamen Ratchev http://www.SQLStudio.com Thanks, it's too involved for me to get into right this sec, but I'll probably do it next weekend. Two questions: 1) I didn't see the restrictions listed. What are they? ...

Information Store Hangs!
When trying to start IS the server hangs. No events, nada. Repairing hangs as well. Any ideas? how large is the store? are there lots of transaction logs? are they replaying? "Wiley Coyote" <wiley@mentorits.com> wrote in message news:O9ysTtDZFHA.1088@TK2MSFTNGP14.phx.gbl... > When trying to start IS the server hangs. No events, nada. Repairing hangs > as well. > > Any ideas? > > The store is 5GB and minimal logs. interestingly enuff, the store crashed after I tried to send an attachment of 5MB. We have not limits on the store and I can't do a ...

store-size in 2003 stand./enterpr. with/without SP1
Hi, I'm lost now! What is the maximum priv.-store and pub.-store capacity allowed in the following configs: Exchange 2003 standard without SP1 Exchange 2003 standard with SP1 Exchange 2003 enterprice without SP1 Exchange 2003 enterprice with SP1 Standard Edition with or without Exchange Server 2003 SP1 is 16 Gigs, has been since Exchange 5.x. Exchange Server 2003 SP2 increases that to 18 Gigs default and 75 Gigs after a registry entry. Enterprise Edition does not have size constraints, but either way you would want to restrict Store sizes according to your SLAs / backup technology...

System Attendand fail to start on a restored node (demoted DC)
Hi all, we have a problem: We rebuilt a cluster node with new Win server 2k3 SP1 installation. The node was a DC, but during restore we did not run DCPROMO, cause we don't want to restore his DC functionality. The other node is the only DC, now. Followed procedures on "Replacing Damaged Exchange Cluster Nodes" on technet, reinstalling Exchange server. trying to start the VS System Attendant resource on the restored node, we have these errors logged: MSExchangeMU - 1042 ERROR Metabase Update failed to read the Configuration namespace property from the domain controller...