Zum Inhalt springen

Tabelle ersetzen (Microsoft Jet SQL / Access 2000)


xound

Empfohlene Beiträge

Hallo,

ich suche eine Möglichkeit eine Tabelle in einem Access MDB File zu ersetzen.

Es wird mit SQL (Microsoft Jet EngineSQL, wie ODBC) darauf zugegriffen.

Ich schreibe gerade eine kleine Web-Applikation in PHP und muss schauen, ob eine Tabelle schon vorhanden ist; wenn sie nicht vorhanden ist, soll sie erstellt werden, wenn sie vorhanden ist, soll sie ersetzt werden.

Leider gibt es sowas wie "CREATE OR REPLACE table_name" unter Jet SQL anschienend nicht, nur CREATE oder DROP ...

Wie stell ich das an? Danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

Alle Tabellen bei MS SQL Server sind in sys Tabellen gespeichert.

Also es reicht dir die sicht

INFORMATION_SCHEMA.TABLES

abfragen und schon hast du alle Info über alle Tabellen in deinem DB

Hallo,

erstmal danke für die Antwort.

Sind die Sys-Tabellen nicht standardmäßig unerreichbar von außen, weil Systemobjekte explizit über die Eigenschaften "angeschaltet" werden müssen?

Ich probiere es mal; wie sieht die Abfrage der Sicht genau aus? Funktioniert das auch mit SELECT ... FROM?

Besten Dank

Link zu diesem Kommentar
Auf anderen Seiten teilen

die frage des OP war meiner meinung eher der umgang mit jet sql / access 2000 ... von sql server war keine rede, right? sys.tables hilft da also nix; ich würde es allerdings mit ADO(X) versuchen oder über die MSysObjects versuchen, dort sind alle datenbank-objekte gelistet.

s'Amstel

Hallo,

ich hab's jetzt so probiert:

SELECT Count(Name) FROM MSysObjects WHERE Name='Tabellenname';

Leider habe ich keine Leseberechtigung über Jet SQL ....

Description: Datensätze können nicht gelesen werden. Keine Leseberechtigung auf 'MSysObjects'.

Vielleicht hast Du ja noch eine andere Idee? Danke vorab

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

Leider habe ich keine Leseberechtigung über Jet SQL ....

Description: Datensätze können nicht gelesen werden. Keine Leseberechtigung auf 'MSysObjects'.

Vielleicht hast Du ja noch eine andere Idee? Danke vorab

mit welchem user greifst du denn auf die datenbank zu, wenn du die MSysObjects im select verwendest bzw. machst du das schon von seiten PHP? allenfalls müsstest du nur die zugriffsberechtigungen innerhalb der datenbankdatei ändern.

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

mit welchem user greifst du denn auf die datenbank zu, wenn du die MSysObjects im select verwendest bzw. machst du das schon von seiten PHP? allenfalls müsstest du nur die zugriffsberechtigungen innerhalb der datenbankdatei ändern.

s'Amstel

Der Zugriff erfolgt via PHP als Administrator ...

Allerdings hat, wie ich hier sehe der Admin nur die Berechtigung den Entwurf zu lesen, nicht aber die Daten ... weiss der Deifel, warum. :-)

Jedenfalls habe ich keine Idee, wie ich die Zugriffsberechtigung von extern ändern könnte; wie gesagt - ich habe zwar ein Testsystem hier, mit dem ich frickeln kann, aber beim Produktivstart habe ich nur noch von extern, also über Jet SQL die Möglichkeit Änderungen vorzunehmen. Die Datenbankdatei hat in der Produktivumgebung zwar den gleichen Aufbau, ist aber eine andere, also kann ich jetzt nicht einfach die Berechtigungen über das DBMS ändern, da es sowieso nur ein Testfile ist.

Was meinst Du mit ADO(x) ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jedenfalls habe ich keine Idee, wie ich die Zugriffsberechtigung von extern ändern könnte; wie gesagt - ich habe zwar ein Testsystem hier, mit dem ich frickeln kann, aber beim Produktivstart habe ich nur noch von extern, also über Jet SQL die Möglichkeit Änderungen vorzunehmen. Die Datenbankdatei hat in der Produktivumgebung zwar den gleichen Aufbau, ist aber eine andere, also kann ich jetzt nicht einfach die Berechtigungen über das DBMS ändern, da es sowieso nur ein Testfile ist.

Was meinst Du mit ADO(x) ?

Microsoft ADO Ext 2.5 for DDL and Security

um auf die benutzerverwaltung einer access-db mittels ADOX zuzugreifen (und das vieleicht noch via ASP), wirst du schon einiges scripten müssen - du kannst sie vielleicht aber anstatt sie umständlich von extern zu ändern versuchen am testsystem die notwendigen zugriffsberechtigungen herauszufinden und dann am produktivsystem nachzuziehen bzw. nachziehen zu lassen.

besser wäre es vielleicht auch, mit einem separaten user zu arbeiten.

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

Microsoft ADO Ext 2.5 for DDL and Security

um auf die benutzerverwaltung einer access-db mittels ADOX zuzugreifen (und das vieleicht noch via ASP), wirst du schon einiges scripten müssen - du kannst sie vielleicht aber anstatt sie umständlich von extern zu ändern versuchen am testsystem die notwendigen zugriffsberechtigungen herauszufinden und dann am produktivsystem nachzuziehen bzw. nachziehen zu lassen.

besser wäre es vielleicht auch, mit einem separaten user zu arbeiten.

s'Amstel

Hm, das sind gute Vorschläge, allerdings möchte ich an der DB nichts ändern, ausser eine neue Tabelle anlegen bzw. diese überschreiben.

Ich stimme Dir aber vollkommen zu, dass es der sauberste Weg wäre einen entsprechenden Benutzer mit den notwendigen Berechtigungen anzulegen - das geht allerdings nicht in meinem Fall, da ich nur Zugriff via Microsoft Jet SQL habe !!!

Meinst Du ich könnte eine com_exception irgendwie abfangen und auswerten via PHP? Das wäre vielleicht eine Idee.

Wenn ich die Tabelle erstellen will, und er gibt mir eine com_exception zurück, dann existiert die Tabelle schon, also kann ich diese droppen.

Wenn ich die Tabelle erstellen will, und er gibt mir keine com_exception, dann kann ich createn!

Aber wie verarbeite ich die com_exception in PHP ? Vielleicht hat ja jemand eine Idee...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...