Office: MS SQL-Server

Helfe beim Thema MS SQL-Server in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, ich habe folgendes Problem: auf dem MS-SQL-Server sind für eine Access-Anwendung alle Tabellen und Views angelegt. Nun sollen in diese... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Schwabe-LA, 19. April 2015.

  1. MS SQL-Server


    Hallo,

    ich habe folgendes Problem: auf dem MS-SQL-Server sind für eine Access-Anwendung alle Tabellen und Views angelegt. Nun sollen in diese bestehende SQL-Server-DB alle Daten, die noch in lokalen Access-Tabellen liegen, eingespielt werden. In den Access-Tabellen werden Autowerte verwendet, auf dem SQL-Server entsprechende "Identitätsspezifikationen". Ich brauche ja nicht zu erwähnen, dass diese IDs identisch bleiben müssen :-). Ich habe nun schon alles Mögliche und Unmögliche probiert, um die Daten aller Tabellen per VBA 1:1 auf den SQL-Server zu bekommen. Das Hauptproblem ist, dass es manchmal geht, aber meistens nicht.

    Hier ein Beispiel, wie ich es verucht habe:

    Public Sub SQL_IDENTITY_ADODB()
    '
    Dim cnn As ADODB.Connection
    Dim SQL As String

    Set cnn = New ADODB.Connection
    cnn.Open DB_Connection_String
    cnn.Execute "SET IDENTITY_INSERT Buchung_Pos ON", , adCmdText

    SQL = "INSERT INTO Buchung_Pos SELECT Buchung_Pos_lokal.* FROM Buchung_Pos_lokal;"
    CurrentDb.Execute SQL, dbFailOnError

    cnn.Execute "SET IDENTITY_INSERT Buchung_Pos OFF", , adCmdText
    cnn.Close
    End Sub


    Hinweis: bei der Tabelle "Buchung_Pos" handelt es sich um die eingebundene Tabelle auf dem SQL-Server; bei "Buchung_Pos_lokal" um die lokale Tabelle in der MDB.

    Habt ihr eine Idee, wie ich dieses Problem in den Griff bekomme?


    Viele Grüße und schon mal vielen Dank

    Jochen

    :)
     
    Schwabe-LA, 19. April 2015
    #1
  2. Hallo,
    habe das gleiche Problem.
    Gibt es hierfür eine Lösung?
    Gruß
    Thomas
     
    BeckerThomas, 16. Juni 2019
    #2
  3. Warum nimmst du nicht den Import-Assistenten?

    Ansonsten, was man in den Threads zu dem Thema liest, muss die ganze Aktion in einer Session durchgeführt werden.
    Dass lässt sich auch sehr leicht überprüfen, dass dem so ist.
    Daher wundert es mich, dass es nach der vorgestellten Methode manchmal funktionieren soll.

    Ungetestet:
    Sollte es triftig Gründ für diese Vorgehensweise geben:
    Access File sollte am Server liegen. Dann kann man den Insert ebenfalls per ADO durchführen, da die Zugriffsrechte auf die Access Datei bestehen.

    Was natürlich immer funktioniert ist das direkte einfügen via ADO mit Values Anweisung. Das ist aber nicht wirklich praktikabel. *grins

    LG Markus
     
    markusxy, 17. Juni 2019
    #3
  4. MS SQL-Server

    Korrekt, SET IDENTITY_INSERT gilt pro Session.

    Unverifizierte Ahnung: Wenn ADO und Jet beide einen äquivalenten ODBC-Connectionstring verwenden wird für alle Statements jeweils eine willkürliche, existierende Verbindung aus dem ODBC-Connection-Pool verwendet. - Dies kann zufällig dieselbe Connection für alle Statements sein, dann funktioniert es, oder genauso zufällig, verschiedene Connections, dann funktioniert es nicht.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    sonic8, 17. Juni 2019
    #4
  5. Hallo Phillip,
    wie wäre es, wenn man direkt per DAO ein Database Objekt erstellt (oder via permanenter Verbindung dafür sorgt, dass die Datenbank Verbindung nicht geschlossen wird) und die SET Anweisung per Passthrough macht. Sollte es dann nicht auch via DAO klappen?
     
    markusxy, 17. Juni 2019
    #5
  6. Vielleicht. - Ich habe es einfach mal ausprobiert. - In 3 Durchläufen hat es immer einwandfrei funktioniert.

    Das Problem ist, dass du den Abfragen/(Tabellen) nur einen Connection-String zuweisen kannst, aber kein konkretes Connection-Objekt. Somit bleibt es wieder "dem Zufall" überlassen, ob es funktioniert oder nicht.
    Ob das wirklich Zufall ist oder nicht, kann ich nicht sicher sagen. Soweit mir bekannt ist, ist es nicht dokumentiert, welche Strategie Access bei ODBC-Zugriffen für Erstellung/Abruf der Connections verwendet.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    sonic8, 17. Juni 2019
    #6
  7. Hallo!

    Ich würde solche Eingriffe nicht vom Client aus steuern.

    Mein üblicher Weg:
    Access-Client befüllt eine Transfertabelle mit eindeutiger Transferkennung (z. B. Guid).
    Danach wird eine gespeicherte Prozedur am Server aufgerufen und dieser die Transferkennung übergeben. Diese SP führt den den Import durch. Damit hat man im Server den Vorteil, dass man unbeeinflusst von außen mit Transaktionen und Fehlerbehandlungen arbeiten kann.

    Der Vorschlag von Markus, die Access-DB vom Server aus erreichbar zu machen, ist auch ein sauberer Weg. Allerdings muss meiner Meinung nach dafür erstmal im Windows-Server die Jet/ACE-Lib installiert werden.

    BTW: Darf IDENTITY_INSERT ON/OFF jeder ausführen oder muss man "Alter"-Rechte bei der Tabelle haben? (Kann gerade nicht testen.)

    mfg
    Josef
     
    Josef P., 17. Juni 2019
    #7
  8. MS SQL-Server

    Als ersten Schritt die Daten von Access in eine Temp-Tabelle auf dem Server zu exportieren und dann rein serverseitig die Daten in die "Echt"-Tabelle zu schreiben finde ich für komplexere Import-/Migrationsvorgänge auch die beste Lösung.

    "User must own the table or have ALTER permission on the table."
    Quelle: https://docs.microsoft.com/en-us/sql...ql-server-2017
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    sonic8, 18. Juni 2019
    #8
  9. Hallo,
    gibt es ein funktionsfähiges Codebeispiel, wenn man die Daten von Access aus auf den SQL-Server übernehmen möchte?
    Gruß
    Thomas
     
    BeckerThomas, 16. August 2019
    #9
  10. Der MS SQL Server hat dafür einen eigenen Import Assistent.
    Damit soll das recht einfach gehen.

    https://docs.microsoft.com/de-de/sql...ql-server-2017
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    markusxy, 17. August 2019
    #10
  11. Geht es dir um wiederkehrenden Import von Access zu SQL Server in deinem Programmablauf? - Dann kannst du die SQL Server Tabellen per ODBC verknüpfen und mit Anfügeabfragen auf den SQL Server bringen. Das wurde ja in diesem Thread diskutiert. - Ein "funktionsfähiges Codebeispiel" wird eher wenig helfen, weil die Kernfunktionalität nicht wirklich kompliziert ist und der Rest dann von deiner individuellen Anwendung abhängt.

    Wenn du einmalig deine Access Anwendung auf den SQL Server migrieren möchtest, könnte der SQL Server Migration Assistant ein Hilfe sein.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  12. Hallo,
    ich habe die SQL-Tabelle in Access verknüpft und will diese mit einer Anfügeabfrage füllen. Leider bekomme ich mit den SQL-Tabellen die eine Autowertspalte haben Problem, wenn ich dort "Altdaten" als Erstübernahme anfügen will.
    Also gibt es hier ein Codebeispiel wie das geht?
    Gruß
    Thomas
     
    BeckerThomas, 18. August 2019
    #12
  13. MS SQL-Server

    Warum beantwortest du die Frage von sonic8 in #11 nicht?
    Hast du irgend etwas von dem bisher besprochenen verstanden oder gar getestet?

    Weißt du wie eine DAO Passthrogh Abfrage funktioniert?
    Wenn nein, dann google das Thema vorab mal.
     
    markusxy, 18. August 2019
    #13
  14. Hallo,

    nein so richtig verstanden habe ich das nicht.
    Deshalb wäre ein einfaches Codebeispiel für eine Tabelle "X" hilfreich.

    Und wenn ich Murksy richtig verstanden habe, dann hat er auch kein einfaches Codebeispiel für einen Anfänger wie mich.

    Gruß
    Thomas
     
    BeckerThomas, 19. August 2019
    #14
  15. Es steht ja eh schon alles im ersten Post.

    Die IDENTITY_INSERT Anweisungen musst du nur per Passthrough Anweisungen umsetzen.

    Grundlagen siehe hier:
    https://shop.minhorst.com/media/pdf/ASQL_LP_VBADAO.pdf

    Wenn du es nicht schaffst, so poste deinen Versuch und die Fehlermeldungen.
     
    markusxy, 19. August 2019
    #15
Thema:

MS SQL-Server

Die Seite wird geladen...
  1. MS SQL-Server - Similar Threads - SQL Server

  2. Access to SQL Server

    in Microsoft Access Hilfe
    Access to SQL Server: Hallo, ich bin aktuell mit der Aufgabe beschäftigt eine Access Datenbank in SQL zu migrieren. Soweit so gut. Da es aber eine Übergangszeit geben wird, wird ein Nächtlicher Datenbankabgleich...
  3. Acces FrontEnd und MS SQL-Server als BackEnd

    in Microsoft Access Hilfe
    Acces FrontEnd und MS SQL-Server als BackEnd: Hallo zusammen, möchte MS access 2010 als FrontEnd und MS SQL-Server als Backend verwenden. Die Backend Tabellen sind bereits auf dem Server. Mit welchem VBA-Code sollte ich nun die MS...
  4. per suchfeld adressdaten aud sql datenbank einfügen

    in Microsoft Word Hilfe
    per suchfeld adressdaten aud sql datenbank einfügen: Hallo, ich würde gern ein Suchfeld in Word 2016 einfügen das im SQL Server eine Tabelle nach dem eingegebenen Kriterium -> Kundennummer durchsucht und dann das vorgegebene Adressformat in word...
  5. Access & SQL-Server-Voraussetzungen

    in Microsoft Access Hilfe
    Access & SQL-Server-Voraussetzungen: Hallo, für meine Firma habe ich eine Access-Anwendung (Frontend/Backend) entwickelt, die wir seit Jahren verwenden. Es handelt sich um Materialdisposition für Vermietungen mit zugehöriger...
  6. Backup SQL Server Datenbank VBA

    in Microsoft Access Hilfe
    Backup SQL Server Datenbank VBA: Hallo an alle! Ich bastle gerade an einem Modul für eine Datensicherung für den MS SQL-Server aus einem MS Access Frontend heraus. Irgendwie habe ich einen Knoten, ich schaffe es nicht den String...
  7. Zugriff auf verknüpfte SQL Server Tabelle

    in Microsoft Access Hilfe
    Zugriff auf verknüpfte SQL Server Tabelle: Hallo, mit dem folgenden Code möchte ich eine Änderung des MWSt-Satzes in eine verknüpfte SQL-Server Tabelle zu schreiben: Private Sub txtMWStSatz_AfterUpdate() Dim db As DAO.Database Dim rst As...
  8. Access Runtime mit SQL Server

    in Microsoft Access Hilfe
    Access Runtime mit SQL Server: Hallo, wie verteile ich ein Access-Frontend mit verknüpften SQL Server Tabellen in der Runtime-Version? Ich habe schon viel experimentiert mit DNS-Datei, Computer-DNS ... klappt alles nicht...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden