Search Mailing List Archives
[protege-discussion] MS SQL Server 2005 index maximum size exceededduring Project Conversion to ProtegeDB
jonathan.carter at e-asolutions.com
Thu Jan 17 11:27:23 PST 2008
I've just realised that where I said nvarchar(400), my SQL Server 2005
database has actually created the 'short_value' column as an nvarchar(800).
I'm not sure if this is the Micrsoft JDBC driver (version 1.2) or the
database that's used such a column type. But you can see how quickly the
index key would get beyond 900 bytes (SQL Server sums the columns used in
the index to establish the required key length).
From: protege-discussion-bounces at lists.stanford.edu
[mailto:protege-discussion-bounces at lists.stanford.edu] On Behalf Of Jonathan
Sent: 17 January 2008 17:01
To: protege-discussion at lists.stanford.edu
Subject: [protege-discussion] MS SQL Server 2005 index maximum size
exceededduring Project Conversion to ProtegeDB
I've just tried to convert my project to the Protege Database (File->Convert
Project to Format...) to use a Microsoft SQL Server2005 database. I'm using
Microsoft's JDBC driver v1.2 but am getting the following exception at the
end of the conversion.
" Exception class com.microsoft.sqlserver.jdbc.SQLServerException.
Message: Operation failed. The index entry of length 1288 bytes for the
index 'repositorylive_I2' exceeds the maximum length of 900 bytes."
All of my project data is loaded into the table but it fails to create Index
This project works fine with MySQL but unfortunately, I need to use
There's nothing I can do in SQLServer2005 to remove/raise the limit for the
index size. The solution Microsoft suggest is "in SQL Server 2005, you can
include nonkey columns in a nonclustered index to avoid the maximum index
size of 900 bytes." Unfortunately, all the keys/indices etc are created by
the Project Conversion code in Protege. Reading more from Microsoft, they
discuss using an include statement, using the example of indexing on a
nvarchar(400) column (which is what the 'short_value' column in the Protege
DB is created as) as follows:
Using the CREATE INDEX statement with an INCLUDE clause to include the
nvarchar column without blowing the index size limit. e.g.
CREATE INDEX IX_Document_Title
ON Production.Document (Title, Revision)
where Filename is a nvarchar(400) column.
I'm not at all sure about how you would do this using JDBC commands, though.
Has anyone seen this before - I believe the limit also existed on previous
versions of SQL Server - have any other suggestions?
Thanks for your help
Jonathan Carter - Head of Technical Architecture
Enterprise Architecture Solutions Ltd
Assess your EA maturity at:
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the protege-discussion