sam2000
Goto Top

gemeinsame tabellen

Tach alle,
ich habe eine Frage und hoffe von euch auf eine antwort.
Ich benutze .Adp's als Front-End fuer MSSQL 2003 Datenbanken, ist es moeglich die gemeinsamen Tabellen, die in jeder Datenbank vorkommen, wie z.B. Mitarbeiter-Tabelle, in einer separaten Datenbank zu legen und gemeinsam von allen Adp's bzw. allen Datenbanken zu benutzen?? Wenn ja, was geschieht mit den Beziehungen dieser Tabellen, denn sie sind ja extern verlegt, d.h. sie sind in der Datenbank selbst nicht vorhanden!. Sowas brauche ich ,um die tabellen nur einmal zu aktualisieren.


Danke im voraus,
Gruss.

Content-Key: 81322

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

Printed on: April 19, 2024 at 15:04 o'clock

Member: misterdemeanor
misterdemeanor Feb 22, 2008 at 13:03:50 (UTC)
Goto Top
Grüß Dich sam2000,

SQL Server 2003? Was mit Beziehungen passiert die nicht existieren? Gemeinsame Tabellen...aber in unterschiedlichen Datenbanken?

Ohne Dir jetzt auf den Schlips treten zu wollen, ich vermute das evtl. grundlegende Verständnisprobleme im Bereich RDBMS gegeben sind. Ist wirklich nicht böse gemeint!

Aber besser Du informierst uns mal etwas genauer über die Gegebenheiten...

Ansonsten hilft es Dir vielleicht weiter wenn ich mal das Schlagwort SQL Server-Replikation auf den Tisch knalle.

BG, Felix -Bahrenburg-

PS: Nichts für Ungut...konkretisiere Dein Problem einfach genauer, und erläutere die Umstände des IST-Zustandes
Member: sam2000
sam2000 Feb 24, 2008 at 08:13:25 (UTC)
Goto Top
Hi Felix,
vielleicht hast du schon recht, bin ziemlich neu in RDBMS und dabei mich in diesem bereicht zu vertiefen, es ist auch nicht immer einfach sich und sein problem in worten auszudrucken!.
Ich glaube "SQL Server-Replikation" ist das richtige fuer mein problem, ich gucke es mir genauer an und melde mich wieder.
So, ich versuche mein problem nochmal zu beschreiben und hoffe es ist diesmal verstaendlicher face-smile. Ich habe mehrere Datenbanken, die auf einem SQL Server 2000 laufen, es gibt Tabellen, die fast in jeder Datenbank vorkommen, wie z.B. Mitarbeiter. Meine Frage war, ist es moeglich z.B. die Tabelle Mitarbeiter in einer separaten Datenbank zu legen, wobei alle Datenbanken, die diese Tabelle benoetigen, sie benutzen koennen?. D.h. eine zentrale Datenbank die Tabellen fuer mehrere datenbanken enthaelt, damit ich diese zentrale Tabellen nur einmal aktualisiere.
Ich hoffe es ist jetzt etwas klarer, ich bin auch offen fuer kritik, sag's mir wenn nicht face-smile.

Gruss,
SAM
Member: MadMax
MadMax Feb 24, 2008 at 21:56:22 (UTC)
Goto Top
Hallo SAM,

wenn das alles auf einem Server ist, kommst Du vielleicht schon einfacher davon als mit Replikation.

Nehmen wir mal die Tabelle "Mitarbeiter" und nennen die zentrale DB "ZentralDB". Das Schema sei "Schema". Dann kannst Du darauf aus einer anderen DB zugreifen mit:
select * from ZentralDB.Schema.Mitarbeiter

Um nicht alle Zugriffe auf die Tabelle neu schreiben zu müssen, kannst Du dann ein Synonym in den ursprünglichen DBen anlegen, wodurch dann die Angabe von DB und Schema wieder wegfallen kann (die Tabelle Mitarbeiter darf dann natürlich dort nicht mehr existieren, sonst klappt das nicht):
create synonym Mitarbeiter for ZentralDB.Schema.Mitarbeiter

und dann wieder:
select * from Mitarbeiter

Foreign Keys sind dann allerdings nicht mehr möglich.

Ansonsten bliebe tatsächlich die Replikation, die Du auch anwenden würdest, wenn die DBen auf verschiedenen Servern oder auch Instanzen liegen.

Gruß, Mad Max
Member: misterdemeanor
misterdemeanor Feb 24, 2008 at 22:22:59 (UTC)
Goto Top
Grüß Dich Mad Max,

wenn das alles auf einem Server ist, kommst
Du vielleicht schon einfacher davon als mit
Replikation.

Das ist ja das was mir auch kopfzerbrechen bereitet...warum existiert das Problem welches SAM hat? Er/Sie sagt ja das RDBMS relativ neu für Ihn/Sie ist. Würde man einen Neuling dami beauftragen bestehende Datenbanken zu administrieren...?
Deshalb gehe ich davon aus das SAM diesen Server respektive darauf laufende DB´selbst angelegt hat. Das lässt vermuten das einfach keine Planung erfolgte welches SAM nun in diese Lage gebracht hat.


create synonym Mitarbeiter for
> ZentralDB.Schema.Mitarbeiter

Gute Idee! Nur leider hat Microsoft das erst im 2005ér eingeführt, was wiederum bedeutet auf einem 2000ér Server funktioniert das nicht. SQL Server 2005 introduces new Transact-SQL DDL statements


Ansonsten bliebe tatsächlich die
Replikation, die Du auch anwenden
würdest, wenn die DBen auf verschiedenen
Servern oder auch Instanzen liegen.

Das wurde ja bereits am Anfang des Threads ins Spiel gebracht...naja face-smile ... aber wenn SAM uns erzählt welche Backends auf die DB´s zugreifen, bzw. uns den Grund verrät warum mehrere DB´s gleiche Daten (Tabellen) enthalten...dann gibts sicher ander Ratschläge.

BG, Felix -misterdemeanor-
Member: MadMax
MadMax Feb 24, 2008 at 23:00:04 (UTC)
Goto Top
Hm, gibts Synonyme tatsächlich erst seit MSSQL 2005, ich dachte seit MSSQL 2000? Hab wohl zu lange nichts mehr mit MSSQL 2000 zu tun gehabt.

Dann gäbe es aber noch die Möglichkeit einer View, also statt "create synonym ..." ein:
create view Mitarbeiter as select * from ZentralDB.Schema.Mitarbeiter
Das dürfte auf das selbe herauskommen face-wink

Gruß, Mad Max
Member: misterdemeanor
misterdemeanor Feb 24, 2008 at 23:04:38 (UTC)
Goto Top
Dann gäbe es aber noch die
Möglichkeit einer View, also statt
"create synonym ..." ein:
create view Mitarbeiter as
> select * from
> ZentralDB.Schema.Mitarbeiter
Das dürfte auf das selbe herauskommen

Ja natürlich...was aber SAM nicht dazu bringt sich mal mit dem allerwichtigsten eines DB-Entwicklers auseinanderzusetzen: die Planung.

face-wink

face-devilish

BG, Felix -misterdemeanor-
Member: MadMax
MadMax Feb 24, 2008 at 23:28:40 (UTC)
Goto Top
Ja natürlich...was aber SAM nicht dazu bringt sich mal mit dem allerwichtigsten eines DB-Entwicklers auseinanderzusetzen: die Planung.
Na und, wen juckts? Oder bist Du Vater, Lehrer, Chef o.ä. von SAM?
Member: sam2000
sam2000 Feb 25, 2008 at 06:23:04 (UTC)
Goto Top
Hallo Mad Max, Felix,....,
danke erstmal fuer eure ratschlaege und fuer die interessante diskussion. Uebrigens SAM ist ein ER face-smile.
Es scheint wohl schwerer als ich dachte, dieses problem zu loesen, denn unter access wuede man die tabelle einfach verlinken, unter MSSQL 2000 gibt's diesen mechnismus aber leider nicht. Ich benutze Access Projects (ADP's) als Front-End um auf die DB'en zuzugreifen, der grund fuer mein vorhaben ist das ich mehrere kleine DB'en habe, jede hat verschiedene benutzer bzw. verschiedene Aufgaben, manche sind fuer Statistik oder fuer Eintraege von den Mitarbeitern,... usw. Aber wenn die Sache mit Beziehungen, Foreign Keys,.. nicht gehalten werden kann, wuerde mir sowas auf keinen fall nutzen!

Felix ist weder mein Vater noch meine Mutter ;).
Member: misterdemeanor
misterdemeanor Feb 25, 2008 at 07:08:52 (UTC)
Goto Top
Moin SAM,

Ich benutze
Access Projects (ADP's) als Front-End um
auf die DB'en zuzugreifen, der grund
fuer mein vorhaben ist das ich mehrere kleine
DB'en habe, jede hat verschiedene
benutzer

Nunja, was momentan (für mich) noch nicht dagegen spricht überhaupt nur eine DB zu betreiben. Solltest Du nicht wollen das jeder benutzer Deiner ADP´s die ganzen Daten/SP´s etc. "sieht" stehen Dir ja mit dem SQL-Server 2000 entsprechende Mittel zu Verfügung. Mal wieder nur Schlagwörter wie Rolle, Benutzer, Login

bzw. verschiedene Aufgaben, manche
sind fuer Statistik oder fuer Eintraege von
den Mitarbeitern,... usw.

OK, wenn die Daten thematisch nichts miteinander zu tuen haben spricht auch nichts dafür in einer DB abgelegt zu werden...scheint aber thematisch doch verwandt zu sein. Zumindest hört es sich so an *fg

Leider kann ich Dir keine konkrete Literatur bzgl. zum SQL-Server 2K empfehlen...aber im Netz ist viel zu finden. Vor allem auch allgemein zum Thema relationale Datenbankentwicklung.

Felix ist weder mein Vater noch meine Mutter

Bevor Mad Max ´nen Gentest verlangt versichere ich hier bei Eidestatt das obige Behauptung vollkommen der Wahrheit entspricht face-monkey

BG, Felix -misterdemeanor-
Member: sam2000
sam2000 Feb 25, 2008 at 07:29:15 (UTC)
Goto Top
Moin Felix,

danke fuer die rasche antwort. Bevor ich hier eine Frage stelle versuche ich selbst die Probleme die ich habe zu loesen, was leider nicht immer klappt.

Thematisch sind manche DB'en unterschiedlich, deshalb war auch der gedanke dafuer, bzw. die Anforderung von meinem Cheff!!.

Jedenfalls, ich versuche es einfach weiter, mal gucken wo ich landen werde, falls ich doch einen Weg dafuer gefunden habe, werde ich es auf alle Faelle hier eintragen.

gruss,
SAM
Member: misterdemeanor
misterdemeanor Feb 25, 2008 at 07:35:59 (UTC)
Goto Top
Naja, wie MadMax andeutete lässt sich das ja auch DB-übergreifend mit Views, SP´s und Triggern lösen. Dann fallen zwar einige Feautures der DB-Engine weg, nunja.

Auf jeden Fall wünsche ich Dir bei Deinem Vorhaben viel Erfolg!

BG, Felix -misterdemeanor-
Member: sam2000
sam2000 Feb 25, 2008 at 13:39:31 (UTC)
Goto Top
Tach nochmal,

ich glaube es klappt bei mir soweit, ich habe nur den Namen der Datenbank mit den gemeinsamen Tabellen am anfang angehaengt!!
Also bei den queries einfach statt

dbo.Tbl_Employee

habe ich einfach

ZentralDB.dbo.Tbl_Employee

soweit klappt's ganz gut ohne Probleme mit den Beziehungen und hoffe es bleibt so!.
Trotzdem danke fuer eure Diskussion.

Gruss.