2009-03-03 7 views
5

Ich habe SQL-Anweisungen geschrieben (in einem Textdokument gespeichert), die Daten in eine SQL Server-Datenbank laden. Diese Aussagen müssen täglich wiederholt werden. Einige der Anweisungen verwenden die NewId()-Funktion, um ein Schlüsselfeld in der Datenbank zu füllen, und das funktioniert einwandfrei. Während ich gerade eine Anwendung schreibe, um diese Anweisungen zu replizieren, möchte ich Access-Abfragen und Makros verwenden, anstatt Abfragen in SQL Server zu kopieren und einzufügen, wodurch ich täglich Zeit sparen kann. Alles funktioniert gut, aber ich kann keine Funktion finden, die die SQL NewId() Funktion ersetzen wird. Gibt es einen oder gibt es eine Arbeit? Ich verwende SQL Server 2005 und Access 2007.Gibt es eine Access-Entsprechung der SQL Server NewId() - Funktion?

+0

„Kopieren und Einfügen von Abfragen in SQL Server, damit mich auf einer täglichen Basis Zeitersparnis“. Sie könnten überrascht sein, was Sie in SQL Server tun können, um Zeit zu sparen. –

Antwort

-2

Die einzige Problemumgehung, die ich denken könnte wäre, die Spalte in Ihrer Access-Datenbank vom Typ "Replikations-ID" zu definieren und es zu einem Auto-Nummer-Feld. Dadurch wird automatisch eine eindeutige GUID für jede Zeile generiert, und Sie müssen newid() überhaupt nicht verwenden. In SQL Server würden Sie einfach den Standardwert für die Spalte "newid()" festlegen.

+0

GUIDs funktionieren nicht gut in Access: http://trigeminal.com/usenet/usenet011.asp?1033. Aber sie werden nicht benötigt - alles, was benötigt wird, ist eine Autonummer. –

+0

Hoppla - die ursprüngliche Frage falsch gelesen (nicht realisiert, dass NewID() speziell eine GUID generiert hat). GUIDs funktionieren jedoch immer noch nicht gut in Access. –

+1

Warum funktionieren GUIDs nicht gut in Access? –

1

Zusätzlich zur Antwort von matt können Sie einfach eine pass-through query verwenden und einfach Ihre vorhandenen, funktionierenden Abfragen von MS Access verwenden.

-2

Auch hier scheint es Verwirrung zu geben.

Wenn ich Verständnis richtig:

Sie haben einen Access-Frontend.

Sie haben ein SQL Server 2005-Back-End.

Was Sie benötigen, ist die Möglichkeit, die GUID in der SQL Server-Tabelle zu generieren. Daher schlagen Antworten, die vorschlagen, ein AutoNumber-Feld vom Typ ReplicationID in Access hinzuzufügen, nicht zu helfen, da die Tabelle keine Jet-Tabelle, sondern eine SQL Server-Tabelle ist.

Die SQL kann sicherlich als Passthrough-Abfrage ausgeführt werden, die alles an den SQL Server zur Verarbeitung übergeben, aber ich frage mich, warum gibt es keinen Standardwert für dieses Feld in SQL Server? Können SQL Server 2005-Tabellen NewId() als Standardwert nicht haben? Oder gibt es eine andere Methode, um ein Feld mit einer neuen GUID zu füllen? Ich erinnere mich an etwas über die Verwendung von GUIDs und das Markieren von "nicht für die Replikation" (ich habe im Moment keinen Zugriff auf einen SQL Server, um das herauszufinden).

Scheint mir, es ist besser, die Datenbank-Engine so etwas tun zu lassen, anstatt eine Funktion in Ihrem SQL auszuführen, aber vielleicht kann mir jemand erklären, warum ich falsch liege.

Verwandte Themen