So machen Sie Tabellen ohne Zeilenversion bearbeitbar
Eine Tabelle ohne Zeilenversion lässt sich über OData und aus Access nicht sicher ändern: Es gibt keinen Wert, an dem eine fremde Änderung erkennbar wäre, und der ODBC-Treiber weist Ändern und Löschen ab. Ein berechneter Zeilenstempel schließt diese Lücke, ohne das Schema zu ändern.
Lösungsübersicht
Der Dienst berechnet für freigeschaltete Tabellen eine Prüfsumme über alle gespeicherten Spalten und
bietet sie als Zeilenversion an (Spalte gw_rowstamp). Wie er sie bildet und was sie nicht leistet:
Schreiben und Schreibkonflikte.
Ein Eintrag nennt die Tabellen in einer von drei Formen; Groß- und Kleinschreibung zählen nicht:
| Eintrag | Bedeutung |
|---|---|
schema.tabelle | diese eine Tabelle |
schema.* | jede Tabelle des Schemas |
* | jede Tabelle der Datenquelle |
Umsetzung
Mit Verwaltungsspeicher (Verwaltungsanwendung):
- Öffnen Sie Datenquellen, und klappen Sie die Datenquelle mit dem Pfeil am Zeilenanfang auf.
- Legen Sie im Register Tabellen-Einstellungen eine Zeile an: Einstellung
row_stamp, Muster etwadbo.Rolle. - Verlassen Sie die Zeile. Ein Muster in anderer Form wird abgelehnt.
Ohne Verwaltungsspeicher (Konfigurationsdatei): Ergänzen Sie den Eintrag der Datenquelle, und starten Sie den Dienst neu:
{ "Name": "fachdaten", "Provider": "sqlserver", "ConnectionString": "…",
"RowStampTables": [ "dbo.Rolle", "stamm.*" ] }
Danach in beiden Fällen:
- Aktualisieren Sie in Access die Verknüpfungen der Tabellen (Externe Daten > Tabellenverknüpfungs-Manager), damit Access die Spalte
gw_rowstampkennt. - Prüfen Sie: Das Schemadokument nennt
gw_rowstampfür die Tabelle, und eine Änderung in Access gelingt; eine fremde Änderung dazwischen ergibt den gewohnten Schreibkonflikt.
Hinweise
- Keinen Stempel bekommt eine gelistete Tabelle ohne eindeutigen Schlüssel, eine Tabelle, die selbst eine Spalte
gw_rowstampführt, und eine Tabelle mit einem Spaltentyp, den die Prüfsumme nicht abdeckt – ein Stempel, der eine Spalte ausließe, übersähe jede Änderung an ihr. Das Protokoll nennt beim Laden des Katalogs Tabelle und Grund (Zeilenstempel fuer … nicht moeglich). - Eine Tabelle mit Zeilenversion behält sie, auch unter
*. - Sichten bekommen keinen Stempel.
RowStampTableswirkt nur auf Tabellen; ein Muster wiedbo.*trifft die Sichten des Schemas nicht, eine Sicht wird ohne Stempel angeboten. Wählt eine Sicht die Zeilenversionsspalte ihrer Basistabelle aus, meldet der Dienst diese Spalte als ihre Zeilenversion; eine Sicht über eine einzelne Tabelle bearbeitet Access damit wie eine Tabelle. Ohne eine solche Spalte bleibt eine verknüpfte Sicht in Access nur lesbar. Wo Benutzer bearbeiten, verknüpfen Sie die Basistabelle zum Schreiben und die Sicht zum Lesen. - Wo das Schema geändert werden darf, ist eine echte Zeilenversionsspalte die bessere Antwort: genau, von der Datenbank gepflegt und beim Lesen kostenlos. Der Stempel wird bei jedem Lesen über jede Spalte berechnet.