klie1
Goto Top

Daten in SQL Server Express DB importieren

Hallo,

Vorab ein Gruß an alle, da dies mein erster Beitrag in diesem Forum ist. Nun zu meiner Frage.

Ich habe vor kurzem mit der Entwicklung in Visual Studio 2005 Express begonnen. Als Datenbank möchte ich SQL Server verwenden, da Parameterabfragen mit einer Access-DB Probleme verursachen und viele Tutorials auf SQL-DBs bezogen sind. Ich möchte meine Zeit nicht damit verbringen, Fehler zu beseitigen und herauszufinden, wie ich Anweisungen für SQL in Access umsetzen kann, deshalb meine Entscheidung für eine SQL Server-DB.

Für die Dateneingabe möchte ich aufgrund des Komforts Excel verwenden. Das Autoausfüllen und C&P geht dort einfach wesentlich schneller. Diese Daten sollen dann in eine bestimmte Tabelle in der SQL-DB importiert werden.

Die einzige Lösung scheint momentan der Umweg über Access zu sein, indem ich die Excel-Tabelle dort importiere, eine Verknüpfung zur SQL-DB erstelle und die Daten in Access in die SQL-Tabelle schreibe. Ich komme jedoch nur soweit, dass ich über ODBC eine Verbindung erstelle. Wenn Access einen Dialog öffnet, in dem die zu verknüpfende Tabelle auszuwählen ist, stehen dort nur kryptische Einträge wie dbo.MSreplication_options oder information_schema.check_constrai aber ich finde meine DB nicht. Damit endet mein Importversuch ohne Erfolg.

Wie kriege ich das hin? Gibt es vielleicht sogar eine einfachere, schnellere Möglichkeit zum Datenimport?

mfg

Content-Key: 39676

Url: https://administrator.de/contentid/39676

Ausgedruckt am: 28.03.2024 um 10:03 Uhr

Mitglied: AndreasHoster
AndreasHoster 08.09.2006 um 12:50:32 Uhr
Goto Top
Wo fangen wir da jetzt an?

1. Excel als Frontend ist keine gute Idee, da man in Excel-Zellen alles eintragen kann, eine Datenbank aber definierte Spaltentypen hat, z.B. Integer. Wenn man jetzt in Excel Buchstaben einträgt -> Rumms, ein Fehler.
Access als Frontend ist da viel besser, da wird drauf geachtet, daß in ein Zahlenfeld nur Zahlen reinkommen.

2. Wenn Access als Frontend, dann würde ich kein ODBC machen, sondern ein Access-Projekt, dann laufen nämlich auch die Abfragen auf dem SQL Server (performanter) und man die Tabellen und Sichten mit dem Designer von Access anlegen.

3. Zu Deinen kryptischen Einträgen: Das sind einfach die Systemtabellen der ausgewählten Datenbank. Wenn da noch keine Benutzertabellen drin sind, dann sieht man halt auch keine. Und Access kann über eine ODBC Verbindung keine neuen Tabellen anlegen oder verändern!
Mitglied: klie1
klie1 08.09.2006 um 21:25:21 Uhr
Goto Top
Ad 1. Danke für die ausführliche Antwort. Die DB ist nur für mich zum Experimentieren und für die ersten Programmierschritte gedacht. Mir ist klar, dass damit nur umständlich eine Datenprüfung zu realisieren ist. Für zukünftige Projekte ziehe ich das aber in Betracht.

Kannst du mir beschreiben, wie das mit dem Access-Projekt funktioniert? Ich nehme an, du sprichst von .adp?

Dass mir bei der ODBC-Verbindung nur diese merkwürdigen Tabellen angezeigt wurden, wundert mich schon, da ich im SQL Server Management Studio meine DB eingebunden habe und auf problemlos darauf zugreifen kann. Nur Access scheint blind zu sein und findet sie nicht.

Noch eine weitere Frage: Welche Datenformate eignen sich für Datums- und Zeitangaben? Wenn ich eine Spalte mit einem Datum (TT.MM.YYYY) und eine Spalte mit einer Uhrzeit (HH:MM) in einer Access-Tabelle erstelle und diese nach SQL Server exportiere, dann zeigt mir dieser bei allen Abfragen beide Spalten im Format TT.MM.YYYY HH:MM:SS an. Das führt natürlich zu seltsamen Daten, z.B. 30.12.1899 14:00 in einem Feld der Spalte Uhrzeit.
Mitglied: AndreasHoster
AndreasHoster 11.09.2006 um 09:05:42 Uhr
Goto Top
Die kryptischen Tabellen sind in Deiner Datenbank.
Eine Datenbank auf dem SQL Server enthalten immer Systemtabellen wie syscolumns, syscomments etc.
Hast Du im SQL Manager Tabellen angelegt und siehst diese nur im SQL Manager, aber nicht in Access?
Benutzt Du zum Zugriff auf den SQL Server von beiden Programmen denselben User? Du kannst auf Tabellenebene nämlich Berechtigungen vergeben.

Es gibt keine getrennten Datum und Uhrzeit Datentypen auf dem SQL Server, es gibt nur Date/Time (und Timestamp, aber das ist dafür nicht gedacht).
Man muß dann einfach bei der Ausgabe es so formatieren, daß man nur das Datum oder die Zeit ausgibt.

Ein Access Projekt ergibt eine .adp Datei.
Funktioniert ganz einfach: Einfach Access öffnen, Datei -> Neu auswählen und dort Projekt aus bestehenden Daten auswählen. Danach wird man nach Name der ADP Datei gefragt, auf welchem Server welche Datenbank dazugehört etc. Das wars.
Mitglied: klie1
klie1 11.09.2006 um 15:14:43 Uhr
Goto Top
In SQL existieren von mir angelegte (Benutzer-)DBs aber über ODBC schafft Access den Zugang einfach nicht.

Mittels eines Access-Projektes konnte ich die Datenbank des SQL Server schließlich einbinden. Ich habe in Access eine Tabelle importiert und in SQL Server die Daten der importierten Tabelle in eine bestehende Tabelle geschrieben. In Visual Web Developer sehe ich aber diese Daten nicht!

Ich habe ein Dataset und für jede Tabelle einen TableAdapter erstellt. Ich möchte vermeiden, diese ganze Prozedur noch einmal machen zu müssen. Wieso sieht VisWebDev die importierten Daten nicht? Es ist so, als ob das Dataset den Zustand der Datenbank eingefroren hätte. Es muss doch eine Möglichkeit geben, die Daten bzw. Datenquelle auszutauschen, ohne ein neues Dataset inkl. TableAdapters und zugehöriger Methoden zu erstellen.

Zu Datum und Uhrzeit: Das heißt, in der SQL DB speichere ich in einem Feld das Datum und in einem anderen die Uhrzeit, SQL ergänzt im ersten Fall automatisch die Uhrzeit und im letzten Fall das Datum mit Fantasiewerten, die ich dann nicht anzeigen darf, indem ich das in VisWebDev so konfiguriere?

mfg
Mitglied: AndreasHoster
AndreasHoster 11.09.2006 um 16:37:22 Uhr
Goto Top
Kenne den Visual Web Developer nicht, kann Dir dazu also nichts sagen.

Zum Datum/Zeit:
Wenn das Datum und die Uhrzeit zusammengehören, also z.B. Du willst mitloggen, wann sich jemand anmeldet, dann schreib doch einfach die Datum/Zeit Kombination in eine Spalte.
Ansonsten tatsächlich in 2 Spalten eintragen.
Und es gibt keine Phantasiewerte sondern bei einem Nur-Zeiteintrag ist das Datum auf 01.01.1900 gestellt und bei einem Nur-Datumseintrag die Zeit auf 00:00.
Dies kommt daher, daß die Zeit intern eine Dezimalzahl ist, die ganzen Zahlen ergibt die Tage ab 01.01.1900 und die Zeit ist der Bruchteil nach dem Komma.
1,5 ist daher 02.01.1900 12:00
12:00 -> 0,5
03.01.1900 -> 2
Da dieser Typ beides kann, gibt es keine getrennten Datum / Zeit Datentypen.