SQL Server: TSQL Tipp - Tabellen Tuning für Access

Werbung
Glück IT
IT Beratung, Schulung und Entwicklung
1. Tipps & Tricks
2. MS SQL Server
SQL Server: TSQL Tipp - Tabellen Tuning für Access
Verknüpfte Tabellen in Access sind eine elegante Möglichkeit die Beschränkungen von Access aufzuheben und die Leistungsfähigkeit
vom MS SQL Server zu nutzen. Die Jet Engine von MS Access benötigt aber Hilfe um das volle Potenzial des SQL Servers ausnutzen zu
können.
Normalerweise könnte man davon ausgehen das es ausreicht einen Datensatz über den Primärschlüssel zu identifizieren, wenn ein solcher
abgeändert werden soll. In einer Mehrbenutzerumgebung reicht dies jedoch nicht aus. Wenn Sie beispielsweise in MS Access einen Datensatz
aktualisieren (ändern), vergleicht Access jeden Feldinhalt des aktuell im Speicher stehenden Datensatzes mit dem in der Datenbank
gespeicherten und das obwohl vielleicht nur ein Wert, beispielsweise der Name, abgeändert wurde.
UPDATE Person SET Nachname=’Maier’ WHERE PersonID=1 AND Nachname=’Meier’ AND Vorname=’Fritz’ AND…
Dieser Mechanismus ist entsprechend langsam jedoch unumgänglich um Probleme im Mehrnutzerbetrieb zu umgehen, denn der Datensatz
könnte bereits vorher von einem anderen Anwender abgeändert worden sein.
Dieses Problem umgeht der MS SQL Server mit einem internen Datentypen, dem Timestamp. Der Timestamp Datentyp ist ein reiner interner
Datentyp binärer art und kann inhaltlich nicht ausgelesen werden. MS Access, genauer die Jet Engine von MS Access, kennt diesen Datentypen
und nutzt diesen zur Verifikation von Datensetzen. So das eine Aktualisierung auf eine Tabelle mit einem Timestampfeld wesentlich schneller
abläuft.
UPDATE Person SET Nachname=’Maier’ WHERE PersonID=1 AND TimeStampX=########
Der Einfachste Weg MS Access im Zusammenspiel mit dem MS SQL Server zu optimieren besteht also darin, in jede verknüpfte Tabelle ein
zusätzliches Feld vom Typ Timestamp hinzuzufügen.
Das lässt sich auch mit Hilfe eines Transact SQL Statements (TSQL) automatisieren. Das folgende TSQL Skript erstellt ein ALTER TABLE
Statement für jede in der Datenbank befindliche Tabelle. Dieses fügt eine Spalte mit dem Namen TimeStampX und vom Typ TIMESTAMP ein.
declare @table varchar(200)
declare @altersql nvarchar(4000)
declare cur cursor for
select name from sysobjects where xtype = 'u'
open cur
fetch next from cur into @table
while @@fetch_status =0
begin
set @altersql = 'alter table [' + @table + '] ADD DATEFIELD TimeStampX'
print @altersql
-- exec(@altersql) -- Wenn Sie diese Zeile entkommentieren, wird Ihre Datenbank verändert!!!
fetch next from cur into @table
end
close cur
deallocate cur
Das Skript gibt die Auszuführenden ALTER TABLE Befehle nur auf den Bildschirm aus und führt sie nicht aus. Wenn die Befehle sofort ausgeführt
werden sollen, muss lediglich das -- vor der Zeile mit dem exec entfernt werden.
Artikel als PDF herunterladen
18.05.2017 04:24:34 by CMAssist
http://www.dozent.net/Tipps-Tricks/MS-SQL-Server/185-SQL%20Server:%20TSQL%20Tipp%20-%20Tabellen%20Tuning%20f%C3%BCr%20Access
Seite 1
Herunterladen