MS SQL Verständnisfragen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
boxen
brauche
datenbank
datum
ende
grund
host
http
kette
limit
listen
nutzen
problem
programm
schieben
server
speichern
unterschied
wechsel
-
Hallo Limera
Ich programmiere zur zeit eine Einsatzplanung für meinen Betrieb und Nutze dafür natürlich eine MySQL Datenbank.
Nun hat mir der Netzwerkadmin aber gesagt ich soll doch bitte MS SQL nutzen... nun meine Fragen:
1. Unterscheiden sich die art und weisen, wie man eine Datenbank anspricht grundlegend oder nur etwas? wenn ja, wie?
2. Kann man einen MySQL Dump in MS SQL importieren?
3. Welche Arten von "Ansprechungen" gibt es also das mit query oder array u.s.w.
4. Was muss man noch alles beachten
Ich habe noch nie damit gearbeitet und das bei php.net hab ich noch nie gerafft... würde mich freuen, wenn mir hier jemand helfen könnte.
Gruß
technofan -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Den SQL Dump sollte man direkt importieren können. Ist ja nur eine SQL Anweisung...
Ein wichtiger Unterschied ist das es kein LIMIT gibt. Das musst du dir erst selbst "bauen". Dafür empfehle ich dir entsprechende MS SQL Seiten zu besuchen. Ansonsten ist MS SQL wesentlich performanter wie MySQL.
//edit: Und du hast noch ein paar andere Feldtypen zur Auswahl. zb. das Bit Feld :)
Beitrag zuletzt geändert: 10.8.2009 17:14:50 von evil-devil -
nikic schrieb:
Soll das eine Webapplikation sein?
Dann solltest du auf PDO setzen. Löst das Problem mit den Unterschiedlichen Queries nicht, aber du kannst dennoch recht einfach durch wechseln des Treibers die Datenbank wechseln.
Na ja, gerade die Queries machen mir zu schaffen. Das "Programm" basiert zu 90% auf Datenbankabfragen... und das sind ne ganze Menge. Das mit dem Einrichten des Webservers ist sowieso nicht in meiner Hand, an den Server selbst darf ich nicht...
Ich sollte vllt mal beschreiben, in wie fern die DB beansprucht wird.
Das Programm basiert Vollständig auf Ajax und hat damit also eine Standleitung zur Datenbank, damit sämtliche Änderungen sofort gespeichert werden. Das hat den Grund, dass der Server des öfteren mal abstürzt, was bei einer Seite die nicht mit Ajax läuft zu Problemen beim Speichern führen könnte... wenn man dann nach 2 Stunden die Planung für den nächsten Tag fertig hat und man will speichern, kann es gerne mal vorkommen, dass der Server sich verabschiedet hat und dann ist die Planung für die Katz gewesen. Das ganze funktioniert nämlich nicht mit Eingabefeldern, sondern mit Listen, die JS ausliest und als getvariable sendet. alles andere funktioniert ähnlich.
evil-devil schrieb: Den SQL Dump sollte man direkt importieren können. Ist ja nur eine SQL Anweisung...
Ein wichtiger Unterschied ist das es kein LIMIT gibt. Das musst du dir erst selbst "bauen". Dafür empfehle ich dir entsprechende MS SQL Seiten zu besuchen. Ansonsten ist MS SQL wesentlich performanter wie MySQL.
//edit: Und du hast noch ein paar andere Feldtypen zur Auswahl. zb. das Bit Feld :)
Die zusatzfelder brauche ich eigentlich nicht... alles was ich brauche hat MySQL bereits.... und das LIMIT brauche ich extrem oft... -
@limit: Ich hoffe mal ihr habt schon den 2005er MS SQL Server...
http://www.select-sql.com/mssql/how-to-make-limit-from-to-in-mssql-2005.html
@ajax und js listen: willst du das wirklich als Get Listen übertragen? Schau mal nach ob es Sinn machen könnte das per JSON zu übertragen. Das dürfte wesentlich schlanker sein als viele Get Variablen. -
evil-devil schrieb:
@limit: Ich hoffe mal ihr habt schon den 2005er MS SQL Server...
http://www.select-sql.com/mssql/how-to-make-limit-from-to-in-mssql-2005.html
@ajax und js listen: willst du das wirklich als Get Listen übertragen? Schau mal nach ob es Sinn machen könnte das per JSON zu übertragen. Das dürfte wesentlich schlanker sein als viele Get Variablen.
Na ja es ist ja keine Kette... das ganze funktioniert so... man schiebt eine Box da hin wo sie hingehört... die zu schiebene Box hat ne ID und die in die man reinschieben kann auch... jedes mal wenn der Drag and Drop vorgang zu ende ist speichert der das. also so...
Schieben, speichern, schieben, speichern, schieben, speichern u.s.w.
aber mal wieder zurück zum Thema... was muss ich denn bei ner Abfrage bei SQL machen??? sind das die gleichen also aich so SELECT * FROM tebellenname WHERE ........ u.s.w. oder muss man da noch was anderes machen???
Hab mal gehört, dass die im Grunde gleich wären, dass es aber noch einen Pflichtzusatz geben würde.... bei php.net kommt das für mich nicht immer so ganz hervor... wenn das nur am Anfang mssql_connect ist, dann hab ich im Grunde kein Problem, außer beim erstellen der Datenbank... gibt es da auch sowas wie PHPmyAdmin??? -
Im Großen und ganzen ist das genutzte SQL das selbe. Aber wie gesagt, es gibt Unterschiede, siehe Limit.
Für die Datenbankzugriffe nutzt du am besten PDO (wie bereits erwähnt). Damit bist du portabel. Zumindest musst du an den Methodenaufrufen selbst später nichts mehr ändern, nur an den Queries, wenns um Limit geht. Also, eine Syntax für alle Datenbanken. -
technofan schrieb:
Na ja es ist ja keine Kette... das ganze funktioniert so... man schiebt eine Box da hin wo sie hingehört... die zu schiebene Box hat ne ID und die in die man reinschieben kann auch... jedes mal wenn der Drag and Drop vorgang zu ende ist speichert der das. also so...
Muss das wirklich nach jeden Drag'n Drop gespeichert werden? Wäre ein Speichern Knopf oder evtl. eine kleine Bufferung der Daten nicht effektiver? Evtl. könntest du die Daten auch im JS/Cookie vorhalten, für den Fall das mal wieder der Server verreckt. Aber eigentlich müsste man dem Server-Admin mal auf die Finger kloppen, dass der SQL Server ständig verreckt. Das ist doch kein Zustand! -
evil-devil schrieb:
technofan schrieb:
Na ja es ist ja keine Kette... das ganze funktioniert so... man schiebt eine Box da hin wo sie hingehört... die zu schiebene Box hat ne ID und die in die man reinschieben kann auch... jedes mal wenn der Drag and Drop vorgang zu ende ist speichert der das. also so...
Muss das wirklich nach jeden Drag'n Drop gespeichert werden? Wäre ein Speichern Knopf oder evtl. eine kleine Bufferung der Daten nicht effektiver? Evtl. könntest du die Daten auch im JS/Cookie vorhalten, für den Fall das mal wieder der Server verreckt. Aber eigentlich müsste man dem Server-Admin mal auf die Finger kloppen, dass der SQL Server ständig verreckt. Das ist doch kein Zustand!
Ist ein Temperaturproblem im Sommer... der Server steht aufm Dachboden und da wirds im Sommer ganz schön hitzig... Klimeanlage is da eigentlich auch drinne, aber die is ausgefallen, das ist der Grund... im Keller is kein Platz und sonst wo auch net.
das mit den coockies is auch so ne Sache... der Netzwerkadmin kommt gerne mal auf die Idee Coockies zu deaktivieren und dann ist die Sicherung auch wieder fürn A****... Deswegen ist das die beste Alternative... davon abgesehen läuft die Planung im Livemodus... d.h. man sieht wie sich die Boxen bewegen, wenn im Büro geplant wird und man selbst sitzt iwo im Ausland...
Also kann man SQL bis auf die Ausnahme mit Limit genau so benutzen??? wie sieht das mit escape_string aus??? muss man sowas auch noch machen??? und was ist mit Datenvergleich??? Kann man da auch sowas wie mysql_insert_id machen??? weil das ganze sehr aufgesplittet ist, muss ich vieles miteinander verknüpfen, also die einzelnen Tabellen Arbeiten ineinander verschrängt...
nicht selten, dass ich da 4 - 8 Schleifen ineinander habe. Das ist halt tatsächlich ein Programm... so wie Excel oder das Verwaltungsprogram Georg 6 ich schreibe quasi die Ergänzung dazu... deswegen verstehe ich auch net wieso der Admin will, dass ich SQL benutze, weil Georg 6 benutzt selbst auch MySQL... da greife ich auch drauf zu... aber nur temporär. -
Okey, ein Server auf dem Dachboden zu stehen haben ohne ordentliche Kühlung ist böse. In dem einzigen Serverraum in dem ich je gewesen bin, konnte man niemand anders verstehen, da die Ventilation so laut lief und dennoch war es recht heiß. Um gute Kühlung sollte man sich kümmern.
So, und ich verweise dich nochmals auf PDO.
Zur Erklärung: PDO ist ein PHP Framework, könnte mans nennen. Es bietet eine einheitliche Syntaxt für alle DBMS. Du musst PDO nur mit dem richtigen Datenbanktreiber starten.
Das geht bei MSSQL wie folgt:
$dbh = new PDO("mssql:host=HOST:PORT;dbname=DBNAME","USERNAME","PASSWORD", array( PDO::ATTR_PERSISTENT => true ));
Port ist Optimal. (Eigentlich ist auch Host optimal) Das array hinten sind Driver-Optionen. Die obig genannte startet eine persistente Verbindung. Ich glaube für deinen Zweck ist das ein Geschwindigkeitsincrease. (Du kannst im ersten String noch charset und appname angeben)
Obwohl ich mir hier nicht ganz sicher bin. Der genutzte dblib Driver ist experimentell, villeicht solltest du stattdessen odbc nutzen.
Auf jeden Fall Vorteil der ganzen Sache ist, dass du eigentlich nur durch ändern des Treibers dein ganzes Script auf eine andere Datenbank umstellen kannst. Zudem lernt man ein mal eine Syntax für alle Datenbanken.
Wenn du PDO mit prepared Statements nutzt, dann hast du auch keine Probleme mit escaping, das passiert dann von selbst. Am besten ins Manual sehen und das Tut von PHPro durchlesen, villeicht. -
Das SQL das du in MS SQL schreibst ist sofern du dich an den SQL Standard hältst identisch. Wie immer beim verknüpfen von Tabellen mit JOINS arbeiten und die Indexe auf den jeweiligen Join Elementen gesetzt haben damit alles schneller geht. Ansonsten sind die Unterschiede relativ gering.
@real escape strings: Die Funktion gibt es afaik bei php auch für MS SQL. Aber das ist ja eher ein PHP Problem, da in anderen SPrachen sowas direkt über den SQL Treiber abgewickelt werden kann bzw. die interne Zwischenschicht dafür schon sorgt. Aber wie nikic schon sagte, wenn du dir nicht sicher bist verwende PDO. -
Naja von MS SQL bin ich nicht wirklich Überzeugt worden, ich musste einmal eine große web-Application von MY SQL auf MS-Sql "umbetten" was jedoch sehr viele Schwierikeiten mit sich gebracht hat. Wenn es irgendwie möglich ist würde ich schon MYSQL verwenden.
PS: nochmal würde ich MS SQL nicht verwenden -
Kannst du das auch begründen?
Abgesehen von den Kosten die MS SQL verursacht halte ich selbigen für wesentlich mächtiger und aufgeräumter als MySQL. Vor allem im High Performance Bereich würde ich nie zu MySQL greifen. Wenn immer zu Oracle oder MS SQL oder vergleichbare Enterprise Systeme. PL SQL bietet sich auch an. -
Also, dass MySQL oder PostgreSQL langsam sind ist doch mittlerweile wirklich nur ein Klischee. Wenn ich High Performance und Ordentlichkeit bräuchte, dann würde ich überhaupt kein relationales Datenbanksystem nutzen, sondern ein Objektorientiertes.
Aber das MySQL langsam ist, ist meistens, wie auch immer, ein Problem vor dem Bildschirm und nicht vom Server. Wenn man falsch designt oder indiziert oder auch nur falsch konfiguriert, dann ist man natürlich selbst schuld.
[Was übrigens auch meistens der ursprung der Leistundsunterschiede in Benchmarks ausmacht. Die Leute die Testen bevorzugen meist ihre datenbank durch richtige Konfiguration, einfach weil sie nicht wissen, was die optimale für die anderen DBMS ist. Daher ergeben die Benchmarks von MySQL-"Fans" auch meist Vorsprung für mySQL, die von anderen, Vorteile für die anderen.]
Beitrag zuletzt geändert: 18.8.2009 11:46:03 von nikic -
Geschwindigkeit ist nicht alles, das stimmt. Aber wenn ich an die Unterschiede bei der Administrierung beider Server denke gefällt mir MS SQL besser. Logs per Default aktiv, Transaktion Log zur Wiederherstellung sämtlicher Daten, Verwaltungstools. Naja, jedem das seine. Was aus MySQL jetzt wird ist aktuell eh unklar nachdem Oracle Sun und somit MySQL aufgekauft hat.
-
Ja, okey, MSSQL bietet wohl den einfacheren Einstieg, weil es ein kommerzielles System ist und genauso wie Windows verglichen mit Linux, natürlich einfacher sein muss. Insbesondere, wenn man statt MyISAM InnoDB nutzt, dann finde ich, ist MySQL doch ein recht weit entwickeltes System.
Naja, auf jeden Fall gilt: Einfach das nutzen, mit dem man vorher schon gearbeitet hat. Ein- oder Umarbeitung wird wohl immer länger dauern und zu einem schlechterem Ergebniss führen. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage