Ich möchte gerne über ODBC eine Tabelle einer anderen Anwendung mit den
SQL-Server online verknüpfen (NICHT IMPORTIEREN), ähnlich wie es zum
Beispiel in ACCESS möglich ist. Geht das überhaupt, und wenn ja, wie?
Vielen Dank,
Helmut Wunder.
Stichwort: Verbindungsserver
Du kannst zB eine Access-Datenbank oder auch Oracle (es muß ein OLEDB oder
ODBC-Treiber vorhanden sein) als Verbindungsserver einbinden. Die Tabellen
stehen Dir dann für Abfragen zur Verfügung.
Den Menüpunkt findest Du unter Sicherheit-Verbindungsserver.
Weitere Infos mußt Du in der Online-Hilfe nachschlagen.
--
Schönen Gruß
Bernd
Access-FAQ: http://www.donkarl.com/AccessFAQ.htm
SQLServer-FAQ: http://www.berndjungbluth.de
... Don't forget to smile today
... wie schnell iss nix passiert
Hallo Bernd,
ich glaub Du hast mich falsch verstanden.
Ich möchte Tabellen einer fremden Anwendung in den SQL-Server verknüpfen und
nicht SQL- Server-Tabellen in ACCESS einbinden. Frage nochmals: Ist das
überhaupt möglich und wenn ja, wie?
Bernd schreibt:
Ich habe dich (denk ich mal) doch richtig verstanden.
Über Verbindungsserver kann ich ODBC-Datenbanken für Abfragen im SQL-Server
einbinden.
Die Access-Datenbank, Oracle-Datenbank oder jede Datenbank für die es einen
OLEDB oder ODBC-Treiber gibt, steht nach dem Einbinden (Stichwort:
Verknüpfungsserver) für Abfragen zur Verfügung. Natürlich nur, wenn die
Berechtigungen auch vorhanden sind.
Klingt unglaublich, funktioniert aber ... - und das finde ich jetzt wieder
unglaublich ;-))
naja, so einfach mit dem Einbinden geht es nicht immer, wenn ein Treiber zur
Verfügung steht, mit Access geht es problemlos, aber z.B. mit
Btrieve/Pervasive sowohl über ODBC als auch OLEDB hatte ich bis jetzt noch
keine Erfolg
Hallo Bernd
welche DB möchtest Du einbinden
--
mit freundlichen Grüßen
Uwe Müller
Commit Software, Heidelberg
"Bernd Jungbluth" <jung...@prosozial.de> schrieb im Newsbeitrag
news:948rt0$cthmi$1...@ID-11510.news.dfncis.de...
ich möchte ein Abrechungsprogramm für Mieteinnahmen (FM-Haus von Speedware)
in den SQL-Server einbinden und dann mit anderen Tabellen, die bereits im
SQL-Server gehalten werden, wiederum mit dem CAFM-Programm Aperture
auswerten. Für die FM-Haus-Anwendung ist ein ODBC-Treiber verfügbar. Die
Tabellen müssen nur gelesen werden. Es muss nichts in die Tabellen von
FM-Haus eingetragen werden.
Das Verknüpfen der Tabellen von FM-Haus-Tabellen in ACCESS funktioniert
einwandfrei. Nur mit den SQL-Server habe ich das noch nie gemacht.
Könntest Du mir mal Step-by-Step beschreiben, wie das Anbinden einer
externen Tabelle im SQL-Server funktioniert (kann ruhig am Beispiel einer
ACCESS-Tabelle sein). Das wäre echt super. Vielen Dank im voraus.
Mit freundlichen Grüßen
Helmut Wunder
"uwe müller" <commi...@t-online.de> schrieb im Newsbeitrag
news:O8HG5OjgAHA.1612@tkmsftngp05...
-Enterprise Manager -> Sicherheit -> Verbindungsserver
- rechte Maustaste -> neuer Verbindungsserver
- Name eingeben -> Andere Datenquelle markieren
- Provider auf Jet 4.0 lassen (vorausgesetzt wir sprechen von Acc2000)
- Pfad der Datenquelle (Access mdb) in Datenquelle eingeben
- Registerkarte Sicherheit -> Zuordnen zu markieren
- Remotebenutzer = admin
- OK zum speichern
Wenn Du nun verteilte Abfragen machen möchtest, mußt Du beim Zugriff auf
diese Tabellen die Syntax
Verbindungsservername..Tabellenname verwenden.
ich habe die Vebindung ohne remotebenutzer auch geschafft
>
> Wenn Du nun verteilte Abfragen machen möchtest, mußt Du beim Zugriff auf
> diese Tabellen die Syntax
> Verbindungsservername..Tabellenname verwenden.
meiner Meinung nach 3!! Punkte : Verbindungsservername...Tabellenname
wobei genau hier das Problem ist : was zwischen die Punkte muss, weiß der
Herrgott (ich zumindestens nicht)
bei Btrieve war das 'verbindungssserver.datenbankname(innerhalb
btrv)..tabellenname
also beim 1.Fehlversuch beim Zugriff damit experimentieren
>
--
mit freundlichen Grüßen
Uwe Müller
Commit Software, Heidelberg
> > - Remotebenutzer = admin
> > - OK zum speichern
> ich habe die Vebindung ohne remotebenutzer auch geschafft
Da kommt es wohl auf die MDW an. Ich habe noch das Problem, daß wir eine MDW
benutzen, in der kein admin mehr existiert.
Also müßte ich den Pfad der MDW auch noch irgendwo angeben. Aber wo ?
> meiner Meinung nach 3!! Punkte : Verbindungsservername...Tabellenname
stimmt ! die korrekte Namensangabe wäre
SELECT * FROM Verbindungsserver.Datenbank.BesitzerDerTabelle.Employees
zuerst möchte ich mich mal für Eure Hilfe bedanken und einen kurzen
Zwischenstand bezügliche meines Problemes geben. Zweitens hätte ich noch
einige Fragen.
Also, mit Euerer Hilfe habe ich es nun geschafft, über einen
Verbindungsserver die Tabellen im SQL-Server sichtbar zu machen. Da es sich
ja um eine System-DSN und nicht um eine Access-DB handelt habe ich als
Provider den "Microsoft OLE DB Provider for ODBC Drivers" benutzt.
Mit folgendem Script habe ich den Verbindungsserver erstellt:
exec sp_addlinkedserver
@server=N'TESTFMH',
@srvproduct=N' ',
@provider=N'MSDASQL',
@datasrc=N'FMHausM'
Nun ist das Problem vorhanden, dass ich es nicht schaffe, auf diese Daten im
SQL-Server zuzugreifen. Unter Access funktioniert das über ODBC einwandfrei.
Ich habe den Syntax von Euch probiert und es klappt leider nicht.
SQL-Abfrage:
select * from TESTFMH...Raumstamm
und verschiedene Variationen habe ich probiert und dabei immer wieder
folgende Fehlermeldung erhalten:
Server: Nachr.-Nr. 7313, Schweregrad 16, Status 1, Zeile 1
Ungültiges Schema oder ungültiger Katalog für Provider 'MSDASQL' angegeben.
Frage: Was ist bei meiner Verbindung ein Schema oder ein Katalog? Wie
definiere ich sowas?
Die Daten der Anwendung liegen in einzelnen Dateien mit der Endung *.id,
zusätzlich einer Indexdatei mit der Endung *.ix. Jede Datei stellt eine
Tabelle dar. Über den ODBC-Treiber dieser Anwendung wird für jede Datei bzw.
Tabelle ein Name zugewiesen (manuell mittels einer Textdatei). Es wird von
mir ja nirgendwo eine Datenbank definiert, die ich in den vierteiligen Namen
(Server.Datenbank.Besitzer.Tabelle) angeben könnte. Hab ich da was nicht
verstanden?
Habe heute auch eine Access-DB wie von Euch beschrieben über den
Verbindungsserver angebunden, und der Zugriff über den SQL-Server hat dabei
einwandfrei funktioniert. Aber hier wird ja die *.mdb direkt angegeben. Bei
meiner Anwendung muss ich aber über den ODBC-Treiber bzw. System-DSN gehen.
Ich glaube, ich habe da kein einfaches Problem und es wäre super von Euch,
wenn ihr mir nochmals versuchen könntet zu helfen. Mein Dank ist Euch gewiß.
SELECT * FROM [Viele Grüße] WHERE Zugriff = 'true'
Helmut Wunder
____________________________________________________________________________
________________________
"Bernd Jungbluth" <jung...@prosozial.de> schrieb im Newsbeitrag
news:94jf3d$dtu0r$1...@ID-11510.news.dfncis.de...
> Server: Nachr.-Nr. 7313, Schweregrad 16, Status 1, Zeile 1
> Ungültiges Schema oder ungültiger Katalog für Provider 'MSDASQL'
angegeben.
Grundsätzlich ist das wohl ein Berechtigungsproblem.
Du mußt deine Benutzer vom SQL-Server mit einem Account aus der
Verbindungsdatenbank verknüpfen.
Im Enterprise Manager kann dies über die Registerkarte 'Sicherheit'
eingestellt werden.
In T-SQL gibt es dafür die sp_addlinkedsrvlogin.
Aus der Online Hilfe:
EXEC sp_addlinkedserver 'ExcelSource', 'Jet 4.0','Microsoft.Jet.OLEDB.4.0',
'c:\MyData\DistExcl.xls', NULL, 'Excel 5.0'
GO
****
/* Verbinden aller lokalen Benutzernamen mit dem Verbindungsserver ohne
Verwendung von Anmeldeinformationen */
EXEC sp_addlinkedsrvlogin 'mydb', 'false', NULL, NULL, NULL
Oder
EXEC sp_addlinkedsrvlogin 'mydb', 'false'
> Die Daten der Anwendung liegen in einzelnen Dateien mit der Endung *.id,
> zusätzlich einer Indexdatei mit der Endung *.ix. Jede Datei stellt eine
> Tabelle dar. Über den ODBC-Treiber dieser Anwendung wird für jede Datei
bzw.
> Tabelle ein Name zugewiesen (manuell mittels einer Textdatei). Es wird von
> mir ja nirgendwo eine Datenbank definiert, die ich in den vierteiligen
Namen
> (Server.Datenbank.Besitzer.Tabelle) angeben könnte. Hab ich da was nicht
> verstanden?
Welcher Art von Datenbank soll denn eingebunden werden ?
Hast Du irgendwelche Logins auf dieser Datenbank definiert ?
"Bernd Jungbluth" <jung...@prosozial.de> schrieb im Newsbeitrag
news:94m1et$de038$1...@ID-11510.news.dfncis.de...
> Hi Helmut,
>
> > Server: Nachr.-Nr. 7313, Schweregrad 16, Status 1, Zeile 1
> > Ungültiges Schema oder ungültiger Katalog für Provider 'MSDASQL'
> angegeben.
>
> Grundsätzlich ist das wohl ein Berechtigungsproblem.
Das glaube ich eher nicht.
Ich habe nämlich das gleiche Problem.
Wenn ich eine Acc-DB per Jet4.0 verknüpfe, komme ich an die Daten,
die gleiche Acc-DB über ODBC und System-DSN klappt nicht, siehe
obiger Fehler.
In der Acc-DB existieren keine Zugriffsbeschränkungen.
Befehl:
Select .... from MeinServer...MeineTabelle
Ich kann in beiden Fällen die Tabellen sehen.
In der ODBC-Verbindung steht allerdings unter Katalog der Pfad der
Acc-DB, in der Jet4.0-Verbindung steht dort nichts.
Hast Du noch eine Idee?
Gruß
Christa
--
---------------------------------------------------------
Access-FAQ: http://www.donkarl.com
KnowHow.mdb: http://www.accessware.de
SQL-Server-FAQ: http://www.berndjungbluth.de
---------------------------------------------------------
ich habe bei mir das Problem gelöst. Es liegt nicht an den Berechtigungen.
Wir haben MDAC Version 2.6 installiert und nach einem Neustart des Rechners
ging es dann, auf Access-DB über ODBC zuzugreifen.
Viele Grüße,
Helmut Wunder
Christa Kurschat <kurs...@drholthaus.de> schrieb in im Newsbeitrag:
OdB$eEehAHA.1988@tkmsftngp03...
habe das Problem, auf die externe Anwendung zuzugreifen über den SQL-Server
gelöst. Es lag nicht an den Berechtigungen. Aus einen anderen Grund haben
wir die ODBC-Treiber mit MDAC V2.6 aktualisiert und plötzlich ging die
Verbindung. Was nun MDAC V2.6 mit den ODBC-Treiber der externen Anwenung
FM-Haus zu tun hat, versteht ich auch nicht. Aber es funktioniert!
Aber ich hab zwei neue Probleme:
Das Speichern einer Abfrage in einer Datenbank ist nicht möglich, da er in
den Namen Server...Tabelle immer noch zwischen den zweiten und dritten Punkt
den Pfadnamen des ODBC-Treibers automatisch schreibt. Beispiel:
FMHaus.C:\Programme\Otree..Raumstamm. Eine Abfrage in der Form
Select Feldname From FMHaus...Raumstamm
wird im SQL Server Query Anaylzer anstandslos ausgeführt, vorausgesetzt ich
Frage kein Textfeld ab.
Das bringt mich auch zu meinem zweiten Problem. Ich kann keine Textfelder
abrufen. Aus Access habe ich jetzt herausgefunden, dass wenn z.B. ein Feld
mit 30 Zeichen definiert ist und nur mit 5 Zeichen gefüllt, der Rest mit
Leerzeichen aufgefüllt ist. Bei einer Abfrage erscheint daduch folgende
Fehlermeldung:
Server: Nachr.-Nr. 7347, Schweregrad 16, Status 1, Zeile 1
OLE DB-Provider 'MSDASQL' gab eine unerwartete Datenlänge für Spalte
'[FMHausOnline]...[Objektstamm].obj_o_group' mit fester Länge zurück.
Erwartet wurde die Datenlänge 30 zurückgegeben wurde die Datenlänge 5.
Gibt es hierfür Lösungsansätze, denn an der externen Anwendung FM-Haus kann
ich nichts definieren oder einstellen?
Vielen Dank für Deine Hilfen,
Helmut.
Bernd Jungbluth <jung...@prosozial.de> schrieb in im Newsbeitrag:
94m1et$de038$1...@ID-11510.news.dfncis.de...
"Helmut Wunder" <wun...@rnt.net> schrieb im Newsbeitrag
news:3a6e...@news.ivm.net...
> Hallo Christa,
>
> ich habe bei mir das Problem gelöst. Es liegt nicht an den
Berechtigungen.
> Wir haben MDAC Version 2.6 installiert und nach einem Neustart des
Rechners
> ging es dann, auf Access-DB über ODBC zuzugreifen.
>
das bringt mich zu der Frage, woher weiß ich, welche MDAC-Version
auf meinem Rechner installiert ist.
W2000, SQL7 SP2, SQL2000
Gruß
Christa
nach deinem Posting bin ich dann auch in diese Treiber-Falle gelaufen.
Die Version deiner MDAC bekommst Du über den Component Checker. Den findest
Du im Microsoft-Downloadcenter unter Data Access Components.
> Was nun MDAC V2.6 mit den ODBC-Treiber der externen Anwenung
> FM-Haus zu tun hat, versteht ich auch nicht. Aber es funktioniert!
Die MDAC ist eine Sammlung von ODBC-Treibern. Und bei der 2.6er wird wohl
der aktuellste Treiber der Datenbank enthalten sein, in der die Daten deiner
externen Anwendung gespeichert werden.
> Server: Nachr.-Nr. 7347, Schweregrad 16, Status 1, Zeile 1
> OLE DB-Provider 'MSDASQL' gab eine unerwartete Datenlänge für Spalte
> '[FMHausOnline]...[Objektstamm].obj_o_group' mit fester Länge zurück.
> Erwartet wurde die Datenlänge 30 zurückgegeben wurde die Datenlänge 5.
In der Hilfe steht die Problematik der Text-Felder beschrieben. Allerdings
keine Lösung.
Anhand der Fehlermeldung würde ich allerdings die Feldtypen innerhalb von
SQL-Server von varchar auf char setzen.
Dadurch werden die Textfelder innerhalb SQL-Server genauso gehandelt wie in
Access. Eigentlich nicht im Sinne des Erfinders, aber es ist ein Versuch
wert ;-)
Vielleicht bringt Dich das wieder einen Schritt weiter.
Zu deinem Speicherproblem kann ich leider nichts sagen, da ich die MDAC 2.6
noch nicht installieren möchte. Die neuen Versionen wird man so schwer
wieder los ;-)
"Bernd Jungbluth" <jung...@prosozial.de> schrieb im Newsbeitrag
news:94mq8i$ebcjh$1...@ID-11510.news.dfncis.de...
> Hi Christa,
>
> nach deinem Posting bin ich dann auch in diese Treiber-Falle
gelaufen.
>
das tut mir leid!
> Die Version deiner MDAC bekommst Du über den Component Checker.
Den findest
> Du im Microsoft-Downloadcenter unter Data Access Components.
>
Ich habe mir den Checker runtergeladen.
Laut dem habe ich MDAC 2.6 Versionsnummer 2.60.6526.0.
Sollte das nicht ausreichen?