Some thoughts and facts:
The knowledge doc referenced by Brian is showing a problem when creating tickets from a template.
The underlaying coding in this situation creates a new ticket ,
initialize it (i.e. creating a new ticket number),
and then loops through all known attributes of the template
and copying the template attribute value to the new ticket attribute value.
This loop hits a certain "maximum code step limit" called ilimit, and therefor fails at a certain number of attributes.
This ilimit stuff normally takes care about, that a loop in the program code is not iterating forever.
Again, there is no hardcoded limit, no check of a maximum number of columns anywhere I am aware.
That might be the reason nobody is able to say what is the exact column limit.
There are certain other areas, where the coding loops through lists of whatever data, and ran into the ilimit problem as well.
Here the coding was fixed, so, that these loops were not hitting this very internal limit.
This is the reason I was saying, this is a bug and can be fixed.
Anyway, there might be other limits somewhere in the code. For example hardcoded array sizes etc.
Additionally, I'd like to remark, that the idea of moving attributes from a ticket table to another separate table might impact, what you are trying to achieve, and therfore not the appropriate solution.
Attributes of a ticket are part of the ticket itself and so, their values are unique to a specific ticket.
If you create a another table and only creating an SREL attribute in the ticket table referencing a record in the new table,
these attributes are not part of the ticket anymore, but now belonging to the referenced table record
This is comparable to any other SREL attribute, like affected_contact, ci, etc.
Of course this has some consequences.
a "create from template" will just copy the reference of the new table record, to the new ticket.
a "copy" will do just the same.
Now many tickets might have the same attribute values, because they are referencing the same record.
Another disadvantage would be, you would not be able to edit the values of the referenced record when you edit the ticket. For example, you are not able to edit the contact attributes of the affected user when editing the ticket.
Some of these consequences might be solvable, by implementing additional application logic. But of course all these additional solutions will lead to custom code, which is officially not supported at all.
I fully agree that one should not add attributes carelessly, due to several reasons
Nevertheless, if there is a real business need, you might not have any alternative.
I know systems that are highly customized with hundreds of new tables and fields, but 60 additional attributes in a ticket table is very unusual. I am wondering if these 60 attributes are all relevant to the ticket process. Maybe considering the use of properties or an additional ticket entity, like issues.
Regards
.....Michael