Case sensitivity for objects

A SQL Server Management Studio add-in to source control your database in Subversion or Team Foundation Server.

Case sensitivity for objects

Postby jjwynn » Fri May 20, 2011 9:03 pm


I have a database which I am trying to add to source control (v2.1). It is a SQL Server 2008 R2 database and the source control repository is SVN. The database has a collation of Latin1_General_BIN2 and has objects (tables and stored procedures) which differ only by case.

I am able to link the database successfully, but when I click on the "Commit Changes" tab, I get an error during the "Calculating changes" phase.

The error is posted below. While I am not positive the error has to do with a case-insensitive equality check on keys (where the key is possibly the schema.objectname), the error seems to point in that direction. Is there a setting to change to support case-sensitivity in object names?

System.ArgumentException: An item with the same key has already been added.
at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector)
at #G3c.#A57.#l36(String , #B57 )
at #G3c.#K3c.#83c(String , #O9U )
at #G3c.#A57.#f6c(String , Options , DatabaseConnection , Database , Database , SchemaMappings , ICancellableOperationStatus )
at #oEc.#VXM.#t.#XXM.#tYM()
at #oEc.#VXM.#t.#WXM.#qYM()
at #oEc.#VXM.#t.#XXM.#zYM(ToCommitChangeSet& toCommitChangeSet)
at #oEc.#VXM.#mYM[#eTb](Func`2 , ICancellableOperationStatus , IReadOnlySourceControlServerCallBacks )
at #oEc.#VXM.#jYM(ICancellableOperationStatus , IReadOnlySourceControlServerCallBacks )
at #oEc.#4Ec.#7Jc(ICancellableOperationStatus , IReadOnlySourceControlServerCallBacks )
at #oEc.#4Ec.#t.#u3.#ofA(ICancellableOperationStatus )
at RedGate.SQLSourceControl.Engine.Cancellables.MutexedCancellableOperation`1.#t.#u3.#k5f()
at RedGate.SQLSourceControl.Engine.Cancellables.CancellableOperationBase.InvokeWithTracker(Action action)
at RedGate.SQLSourceControl.Engine.Cancellables.MutexedCancellableOperation`1.Invoke()
at #eEc.#Qlg.Invoke()
at #JLc.#PLc.#t.#Jfb.#EJf()
at RedGate.SQLSourceControl.Engine.SmartAssembly.ExceptionReporting.ErrorReporterBase.Do(Action , Predicate`1 , Boolean )
at RedGate.SQLSourceControl.Engine.SmartAssembly.ExceptionReporting.ErrorReporterBase.DoWithObviousExceptionsRethrowAll(Action action)
at RedGate.SQLSourceControl.CommonUI.Forms.ErrorDialog.DoWithObviousExceptionsRethrowAll(Action action)
at #JLc.#PLc.#CTc(ICancellableOperation`1 , Object )

Any help is greatly appreciated.

Posts: 2
Joined: Fri May 20, 2011 8:38 pm

Postby james.billings » Mon May 23, 2011 12:26 pm

Thanks for your post.

I don't think the problem here is quite as simple as SQL Source Control not dealing with the case correctly. Certainly, if you're using a non-case-sensitive collation you'll get this kind of error, but I just created a new database using the same as you, with two tables (TABLE1 and table1) - this works fine; I can commit the objects, and also "Get Latest" back out to a new empty database.

Another possible cause is if you have multiple files in your repository that refer to the same object. If, for instance, someone made a backup copy of some of the files using Tortoise, and these are held under the same folder you're linking to, it would trigger this error.

If that's not relevant, can you please submit the error report to us, using the "Serious error? Send Report" link, ensuring you enter your email address so I can find it, as this should contain more information to help us troubleshoot the problem.

If you want to mail me directly, we've got a ticket open for you, so mail quoting F0048083 in the subject line.

Posts: 1122
Joined: Wed Jun 16, 2010 10:10 am
Location: Red Gate

Postby jjwynn » Wed May 25, 2011 12:45 pm

Thanks for responding. To my knowledge, I don't have multiple files which refer to the same object in the repository as this error occurs when I'm initially trying to add objects to the repository right after I link a database. Nothing seems to get committed because it errors on the "Calculating changes" step.

I have tried submitting the error report, but I have been unsuccessful as I am encountering redirection errors in the dialog box. Can you tell me which files (and their locations) I can submit along with the email?
Posts: 2
Joined: Fri May 20, 2011 8:38 pm

Postby james.billings » Wed May 25, 2011 12:55 pm

Sounds like the report is sticking due to a proxy.

If you get the box up where you enter your email address on the error dialog, and then disable/unplug your network connection, it should fail with an option to save the report.

If you do that, you can mail it through to quoting the reference in my earlier message in the subjectline.

Posts: 1122
Joined: Wed Jun 16, 2010 10:10 am
Location: Red Gate

Return to SQL Source Control Previous Versions

Who is online

Users browsing this forum: No registered users and 0 guests