2009-03-04 7 views
2

Vielleicht ist das nur eine dumme Idee, deshalb gebe ich es hier rein:Wie kann MSDTC vermieden werden?

Ich erstelle eine Anwendung, die eine Datenbank für Basis- und aktuelle Daten verwendet (Kunden, Artikel, Inventar, offene Rechnungen, ...) und eine Datenbank pro Jahr für Archivdaten (alte Rechnungen, Bestandsbewegungen, ...).

Es gibt nur ein unangenehmes kleines Problem: MSDTC. Die meisten Transaktionen berühren nur eine Datenbank, aber einige berühren die aktuelle Datenbank und ein Archivjahr. Da alle Datenbanken auf demselben Server zurücktreten, könnte dies eine einfache Transaktion über zwei Datenbanken sein.

Allerdings zwingt mich zu Entitäten Linq, eine separate Verbindung für jede Datenbank zu erstellen, und hier MSDTC tritt ein, fordert a) installiert werden und b) verlangsamt das Ganze.

Ärgerlich!

Gibt es keine Möglichkeit, zwei ADO.Net-Entity-Framework-Modelle die gleiche Verbindung zu verwenden, beide haben ihre eigene aktuelle Datenbank?

Ich habe bereits versucht zu specify the database in the EF Schema, but EF does not like this and blocks it.

Sehr ärgerlich. Vielleicht sollte ich nur alle Tabellen in eine Datenbank verschieben, aber das ist ein Schmerz später beim Versuch, die Daten für die Sicherung und Beschleunigung zu trennen.

+0

Wenn Sie Abfragen über Jahre hinweg durchführen müssen, ist eine Datenbank pro Jahr wahrscheinlich kein guter Ansatz. Wie wäre es mit separaten Tabellen in einer Datenbank oder einfacher Partitionierung? http://msdn.microsoft.com/en-us/library/ms345146.aspx – bobince

+1

Partitionierung kann teuer sein, da es SQL Server Enterprise Edition erfordert, die $ 30- $ 50K abhängig von Ihrer Prozessorkonfiguration hinzufügen können, wenn Sie nicht bereits verwenden es. –

Antwort

2

Versuchen Sie ChangeDatabase auf Ihrer Verbindung aufzurufen. MSDTC wird immer beteiligt sein, wenn Sie mehr als eine Verbindung verwenden. Sogar für eine Datenbank. Also kann ich vorschlagen, immer eine Verbindung zu halten und die Datenbank über diese Methode zu ändern.

Hoffe, das hilft.

Verwandte Themen