@Mike, thanks for the additional interest!

I understand that some of these tables may have no need for primary keys at
all.
In this case, would it make the most sense to create just a clustered index
that included all columns (without adding a PK constraint?)

This would serve SQL server by telling it how to store the columns &
replicate, without necessarily introducing any additional constraints on
the data.

Not sure if it makes sense but wanted to add it as an option.


--
Sean


On Thu, Apr 3, 2014 at 3:19 PM, Michiel Beijen <michiel.bei...@gmail.com>wrote:

> Hi,
>
> I saw a requirement for having indexes on all tables for replication
> before; also as a need for replication, but on a different database
> than SQL Server.
>
> For Sean it would be possible to add indexes of identity columns to
> these tables (caveat: untested)
>
> ALTER TABLE [yourTable] ADD MyID INT IDENTITY(1,1)
> CONSTRAINT PK_My_Current_PK PRIMARY KEY CLUSTERED (MyID)
>
> This would enable SQL Server to do it's replication, and you'd be able
> to insert records after this.
>
> For OTRS in general, I think it might be great if for the upcoming
> OTRS version 3.4 all tables would have PK's with unique indexes and
> identity columns if needed, so these replication scenarios can be
> supported.
>
> @Martin would you be supportive of such a change? If the answer would
> be yes, maybe I can work on this with Sean.
> --
> Mike
>
>
>
> On Thu, Apr 3, 2014 at 5:16 PM, Sean Killeen <seankill...@gmail.com>
> wrote:
> >
> > Martin,
> >
> > Regarding your closing of the bug report as a feature request, I'm not
> sure it necessarily has to be that way.
> >
> > It is only a small subset of T-SQL Commands that are not supported in
> SQL Azure. The list: http://msdn.microsoft.com/library/azure/ee336250.aspx
> >
> > The elements that are not supported strike me as elements that OTRS
> would likely not be using (though of course, being new, it would take me a
> little while to confirm that.)
> >
> > Thanks for the continued discussion & consideration,
> > --
> > Sean
> >
> >
> > On Thu, Apr 3, 2014 at 11:09 AM, Sean Killeen <seankill...@gmail.com>
> wrote:
> >>
> >> Ah-ha! No sooner did I send that message than I stumbled upon the real
> reason:
> >>
> >> Why Do I Need a Clustered Index? (
> http://blogs.msdn.com/b/sqlazure/archive/2010/05/12/10011257.aspx)
> >>
> >> "SQL Azure requires clustered indexes for our replication technology.
> At any one time, we are keeping three replicas of data running - one
> primary replica and two secondary replicas. We use a quorum based commit
> scheme where data is written to the primary and one secondary replica
> before we consider the transaction committed."
> >>
> >>
> >> --
> >> Sean
> >>
> >>
> >> On Thu, Apr 3, 2014 at 11:08 AM, Sean Killeen <seankill...@gmail.com>
> wrote:
> >>>
> >>> Hi Martin,
> >>>
> >>> Thanks for the response.
> >>>
> >>> The best documentation I've been able to find so far:
> http://msdn.microsoft.com/library/azure/ee336275.aspx. "If a table is
> created without a clustered constraint, a clustered index must be created
> before an insert operation is allowed on the table."
> >>>
> >>> It appears that SQL azure will create the tables, but will assume that
> you'll perform additional design on them before inserting data, which is
> why it doesn't throw on create.
> >>> It only throws the error when you attempt to store data in a table
> without a clustered index of any kind.
> >>>
> >>> From a conceptual perspective I agree with you -- I would have never
> thought to put a primary key on tables like those that I listed either;
> they do not seem to require one.
> >>>
> >>> My guess (which is all I have at this point as I research further) is
> that Azure needs a clustered index because it is looking for us to tell it
> how to best store the data, for efficiency reasons.
> >>>
> >>>
> >>> --
> >>> Sean
> >>>
> >>>
> >>> On Thu, Apr 3, 2014 at 10:13 AM, Martin Gruner <martin.gru...@otrs.com>
> wrote:
> >>>>
> >>>> Hello Sean,
> >>>>
> >>>> thanks a lot for your mail and your willingness to help out here. For
> >>>> now I'd like to ask how it could be that SQL Azure does create the
> >>>> tables but then fails on running INSERT statements. That doesn't seem
> >>>> right to me. Can you provide a link to some documentation on this?
> >>>>
> >>>> These are all tables where we don't need a primary key, that's why
> they
> >>>> don't have one.
> >>>>
> >>>> Regards, mg
> >>>>
> >>>> Am 29.03.14 02:50, schrieb Sean Killeen:
> >>>> > *Summary: *I'd like to alter some DB scripts to add clustered
> indexes so
> >>>> > they work better for MSSQL (and work at all for SQL Azure). How
> should I
> >>>> > go about this?
> >>>> >
> >>>> > Hi all,
> >>>> >
> >>>> > New to contributing to OTRS and to the dev mailing list so please
> >>>> > forgive me if I stumble around a bit.
> >>>> >
> >>>> > *Background / Issue*
> >>>> >
> >>>> > I wanted to set up OTRS on Azure using a SQL Azure database
> back-end, so
> >>>> > I thought I'd play around a bit.
> >>>> >
> >>>> > SQL Azure apparently chokes when confronted with tables that don't
> have
> >>>> > any clustered indexes. Womp womp.
> >>>> >
> >>>> > As of v3.3.5, the setup script for OTRS apparently creates 33 tables
> >>>> > without clustered indexes or primary keys (the list in full is at
> the
> >>>> > end of this post). This leads to inoperability and a ton of errors
> in
> >>>> > the log when attempting to use OTRS with SQL Azure.
> >>>> >
> >>>> > *What I'd like to do about it *
> >>>> > *
> >>>> > *
> >>>> > I'd like to help out with this and submit a pull request for the
> MSSQL
> >>>> > setup to deal with this (as well as make things a little more
> snappy for
> >>>> > MSSQL users). Was hoping to start this out as a Github issue, but I
> >>>> > don't believe Issues are enabled for the otrs/otrs project.
> >>>> >
> >>>> > However, I'm as of yet completely unfamiliar with the data
> structure, so
> >>>> > I would be guessing at best here and I don't think that's wise. :)
> >>>> >
> >>>> > Is there a solid reference point for the database architecture
> available
> >>>> > that I could reference to deduce where primary keys or clustered
> indexes
> >>>> > could be used in the affected tables? Or is there some other
> approach
> >>>> > the community would prefer I take to addressing this?
> >>>> >
> >>>> > OTRS is a great product, and I'm looking forward to being able to
> >>>> > hopefully give something back.
> >>>> >
> >>>> > Thanks,
> >>>> > --
> >>>> > Sean
> >>>> >
> >>>> > *Appendix: The list of tables without clustered indexes*
> >>>> >
> >>>> > Found by running:
> >>>> >
> >>>> > SELECT DISTINCT [TABLE] = OBJECT_NAME(OBJECT_ID)
> >>>> > FROM SYS.INDEXES
> >>>> > WHERE INDEX_ID = 0
> >>>> > AND OBJECTPROPERTY(OBJECT_ID,'IsUserTable') = 1
> >>>> > ORDER BY [TABLE]
> >>>> >
> >>>> > acl_sync
> >>>> > article_flag
> >>>> > customer_preferences
> >>>> > generic_agent_jobs
> >>>> > gi_object_lock_state
> >>>> > group_customer_user
> >>>> > group_role
> >>>> > group_user
> >>>> > link_relation
> >>>> > notification_event_item
> >>>> > personal_queues
> >>>> > pm_entity
> >>>> > pm_entity_sync
> >>>> > postmaster_filter
> >>>> > process_id
> >>>> > queue_preferences
> >>>> > queue_standard_template
> >>>> > role_user
> >>>> > search_profile
> >>>> > service_customer_user
> >>>> > service_preferences
> >>>> > service_sla
> >>>> > sla_preferences
> >>>> > support_bench_test
> >>>> > ticket_flag
> >>>> > ticket_index
> >>>> > ticket_lock_index
> >>>> > ticket_loop_protection
> >>>> > ticket_watcher
> >>>> > user_preferences
> >>>> > virtual_fs_preferences
> >>>> > web_upload_cache
> >>>> > xml_storage
> >>>> >
> >>>> >
> >>>> >
> >>>> >
> >>>> > _______________________________________________
> >>>> > OTRS mailing list: dev - Webpage: http://otrs.org/
> >>>> > Archive: http://lists.otrs.org/pipermail/dev
> >>>> > To unsubscribe: http://lists.otrs.org/cgi-bin/listinfo/dev
> >>>> >
> >>>>
> >>>> --
> >>>> Martin Gruner
> >>>> Senior Developer R&D
> >>>>
> >>>> OTRS AG
> >>>> Bahnhofplatz 1a
> >>>> 94315 Straubing
> >>>>
> >>>> T: +49 (0)6172 681988 0
> >>>> F: +49 (0)9421 56818 18
> >>>> I:  www.otrs.com/
> >>>>
> >>>> Geschäftssitz: Bad Homburg, Amtsgericht: Bad Homburg, HRB 10751,
> >>>> USt-Nr.: DE256610065
> >>>> Aufsichtsratsvorsitzender: Burchard Steinbild, Vorstand: André
> >>>> Mindermann (Vorsitzender), Christopher Kuhn, Sabine Riedel
> >>>>
> >>>> Einfache Planung, bessere Übersicht - Mit OTRS 3.3 einfach besseres
> >>>> Service Management - Jetzt downloaden und testen
> >>>> _______________________________________________
> >>>> OTRS mailing list: dev - Webpage: http://otrs.org/
> >>>> Archive: http://lists.otrs.org/pipermail/dev
> >>>> To unsubscribe: http://lists.otrs.org/cgi-bin/listinfo/dev
> >>>
> >>>
> >>
> >
> >
> > _______________________________________________
> > OTRS mailing list: dev - Webpage: http://otrs.org/
> > Archive: http://lists.otrs.org/pipermail/dev
> > To unsubscribe: http://lists.otrs.org/cgi-bin/listinfo/dev
> _______________________________________________
> OTRS mailing list: dev - Webpage: http://otrs.org/
> Archive: http://lists.otrs.org/pipermail/dev
> To unsubscribe: http://lists.otrs.org/cgi-bin/listinfo/dev
>
_______________________________________________
OTRS mailing list: dev - Webpage: http://otrs.org/
Archive: http://lists.otrs.org/pipermail/dev
To unsubscribe: http://lists.otrs.org/cgi-bin/listinfo/dev

Reply via email to