Backend-Datenbank:
[Microsoft Access]
Und
[Microsoft SQL Server]
Nach dem Ersetzen sollte der ASP-Code auf einige Stellen achten, die geändert werden müssen:
[1] Verbindungsprobleme (Beispiel)
[Microsoft Access]
constr = "DBQ=c:dataclwz.mdb; DRIVER={Microsoft Access Driver (*.mdb)}"
[Microsoft SQL Server]
constr = "DRIVER={SQL Server};SERVER=host;DATABASE=mydata;uid=sa;pwd="
[2] Ähnliche Funktionen (Beispiel)
[1]DATEDIFF(datepart, startdate, enddate)
Die Optionen des Parameters „datepart“ lauten wie folgt:
Einstellungsbeschreibung————————————
[Microsoft Access]
Jahrjjjj
Viertel q
Monat m
Anzahl der Tage im Jahr y
Tag
Wochentage w
Zhou, wow
Stunden h
Minutenn
Sekunden
[Microsoft SQL Server]
Jahr jj, jjjj
Viertel qq, q
Monat mm, m
Tag des Jahres dy, y
Tag dd, d
Woche Woche, ww
Stunde hh
Minute mi, n
zweite SS, s
Millisekunden ms
----------------------
Im Grunde ist es das Gleiche, aber achten Sie beim Schreiben darauf,
[Microsoft Access] Fügen Sie Anführungszeichen hinzu, z. B.: datediff('d',enddate,'2004/08/01')
[Microsoft SQL Server] ist nicht erforderlich, z. B.: datediff(d,enddate,'2004/08/01')
[2][Microsoft Access] kann Datentypkonvertierungsfunktionen wie cstr und verwenden
Verwenden Sie in [Microsoft SQL Server] die Konvertierungs- oder Umwandlungsfunktion, wie zum Beispiel:
konvertieren(varchar,[Betrag]) usw.
[3][Microsoft SQL Server]
Um die aktuelle Uhrzeit zu erhalten, verwenden Sie getdate usw.
[3] Anweisungen
[Microsoft SQL Server]
verfügbar
FALL
WANN DANN
WANN DANN
...
ANDERS
ENDE
Aussage, während
[Microsoft Access]
Nicht unterstützt.
[Microsoft Access] unterstützt die Between-Anweisung ebenfalls nicht
[Microsoft SQL Server] kann wie folgt geschrieben werden:
[Datum] zwischen @Datum1 und @Datum2
[4] Abfragetabelle
[Microsoft SQL Server]
Es kann durch Zusammenführen von drei oder mehr Tabellen abgefragt werden
[Microsoft Access]
Es scheint, dass nur zwei Tabellen zur Abfrage verknüpft werden können (muss von der Behörde bestätigt werden).
Und [Microsoft SQL Server] kann „*="- und „=*"-Konnektoren verwenden. [5] Division durch Null-Problem
[Microsoft Access]
Wenn der Divisor Null ist, werden die relevanten Datensätze automatisch verworfen und
[Microsoft SQL Server]
Es wird ein Fehler gemeldet und die Abfrage abgebrochen. Code löschen:
[Microsoft Access]
Sie können es so schreiben: delete * from [table]
[Microsoft SQL Server]
Es kann nur so geschrieben werden: delete from [table]
Oft wird ein Fehler gemeldet
____________________________________________
Aktuelles Datum:
[Microsoft Access]
Verwenden Sie date()
[Microsoft SQL Server]
Wenn die Datenbank möglicherweise den Typ ändert, können Sie mit getdate() Folgendes zum ASP-Code hinzufügen:
wenn inStr(constr,"Microsoft Access") > 0 dann
sqlstr=[Microsoft Access][SQL-Code]
anders
sqlstr=[Microsoft SQL Server][SQL-Code]
Ende wenn
(constr--connection string)
Selbst wenn die Datenbank geändert wird, ist es auf diese Weise nicht erforderlich, die Datenbankabfrage und den Aktualisierungscode zu ändern.
Darüber hinaus gibt es im Zugriff einen wahren und einen falschen Felddatensatz, in SQL jedoch nur Smallint. Wenn im Zugriff „Feldname = wahr“ vorhanden ist, sollte dieser in SQL in „Feldname = 1“ geändert werden.
Die meisten kostenlosen ASP-Programme im Internet nutzen die Access-Datenbank. Allerdings ist die Access-Datenbank als kleines und mittleres eigenständiges Datenbanksystem oft überfordert, wenn sie für Website-Anwendungen mit großen Besuchs- und Datenmengen verwendet wird. Es wird allgemein angenommen, dass die Leistung einer Zugriffsdatenbank erheblich abnimmt, wenn sie 50 Millionen überschreitet. Nach dem Überschreiten von 100 Millionen treten die Probleme von Fehlern und langsamem Betrieb stärker in den Vordergrund. Obwohl wir unser Bestes geben können, um aus Programmsicht zu optimieren, um die Leistung zu verbessern, wie wir es nach Dongwang 7.0 getan haben, kann das Problem dadurch nicht grundsätzlich gelöst werden.
Derzeit ist die Verwendung der SQL Server-Datenbank von Microsoft möglicherweise die wahrscheinlichste Methode. Natürlich können Sie auch andere Datenbanken wie Oracle, MySQL usw. verwenden, aber als Umschreibung, da es sich bei beiden um Microsoft-Produkte handelt, wird die Umschreibung in SQL Server durchgeführt dürfte der arbeitssparendste Weg sein.
1. Voraussetzungen für das Umschreiben:
SQL Server 2000 wurde auf dem System installiert und der SP3-Patch wurde installiert. Es wird jedoch empfohlen, einen Editor zu verwenden, der die Nur-Text-Bearbeitung unterstützt und über eine Zeilennummernanzeige verfügt Natürlich kann auch FrontPage2003 verwendet werden, allerdings war die Zeilennummernanzeige in der Vorgängerversion nicht ganz einfach zu bedienen.
Persönliche Fähigkeitsanforderungen: Sie müssen in der Lage sein, die grundlegende ASP-Syntax zu verstehen, auf Datenbankoperationen zuzugreifen und grundlegende Operationen von SQL Server Enterprise Manager durchzuführen.
2. Im Allgemeinen gibt es zwei Situationen für die Datenbankvorbereitung
:
1. Das Programm stellt ein SQL-Datenbankformat bereit: Es wird eine MDF-Datei oder eine SQL-Skriptdatei (Suffix .sql) zum Erstellen einer SQL-Datenbank bereitgestellt.
Wenn eine MDF-Datei vorhanden ist, können Sie diese direkt mit dem Enterprise Manager anhängen. Wenn die SQL-Skriptdatei bereitgestellt wird, verwenden Sie den Enterprise Manager, um selbst eine SQL-Datenbank zu erstellen, und verwenden Sie dann den Abfrageanalysator im Enterprise Manager, um sie auszuführen Skript zum Erstellen der Datenbanktabelle.
Die so aufgebaute Datenbank muss grundsätzlich nicht neu geschrieben werden.
2. Die meisten von ihnen stellen keine SQL-Datenbank oder Skriptdateien bereit. Dies ist auch das Hauptproblem, das unser Beitrag löst. Im Allgemeinen stellt ein solches Programm eine Zugriffsdatenbank bereit, sodass Sie Enterprise Manager zum Importieren der Zugriffsdatenbank verwenden können. Nach dem Import müssen Sie die folgenden Dinge neu schreiben:
Schreiben Sie im Vergleich zum ursprünglichen Zugriff den folgenden Teil neu:
(1) SQL-Datenbanktabellen verfügen nicht über automatische Felder. Daher werden die ursprünglichen automatischen Felder im Zugriff in normale Felder umgewandelt und müssen manuell mit einem Inkrement von 1 in den Identifikationstyp geändert werden.
(2) Wenn für alle Zeitfelder ein Standardwert definiert ist, muss dieser now() lauten und muss in getdate() geändert werden.
(3) Die Standardwerte der Originalfelder werden im Allgemeinen nicht automatisch eingeführt und müssen manuell zu den Feldern der Originaltabelle hinzugefügt werden.
(4) Aufgrund unterschiedlicher Datenbanken ändern sich viele Feldzugriffs- und SQL-Typen nach der Konvertierung. Beispielsweise wird das ursprüngliche „Ob“-Feld in Bit oder Int konvertiert, das Memofeld wird in Langtext konvertiert und das Textfeld wird konvertiert In Varchar usw. konvertiert, hat dies im Allgemeinen keine Auswirkungen auf den Programmbetrieb. Wenn ein Problem auftritt, werden wir es im Abschnitt zum Umschreiben des Programms weiter unten besprechen.
(5) Wenn Sie ein For SQL-Programm verwenden möchten, das gespeicherte Prozeduren verwendet, sollten Sie eine Möglichkeit haben, eine SQL-Datenbank im Programm selbst zu erstellen: Verwenden Sie eine eigene SQL-Datenbankdatei oder ein SQL-Skript Die Access-Datenbankmethode kann keine gespeicherte Prozedur erstellen. Daher sollten Sie diese Version des For Access-Programms besser aufgeben, dieselbe Version des For Access-Programms verwenden, die Access-Datenbank importieren und sie dann mit der folgenden Umschreibungsmethode in die SQL-Version ändern selbst programmieren.
3. Um die Verbindungszeichenfolge neu zu schreiben,
lesen Sie bitte diesen Abschnitt von Dongwang, der sich auf Zugriff bzw. SQL bezieht.
DimConnStr
Wenn IsSqlDataBase = 1, dann
'SQL-Datenbankverbindungsparameter: Datenbankname, Benutzerkennwort, Benutzername, Verbindungsname (lokal lokal verwenden, IP im Ausland verwenden)
Blenden Sie SqlDatabaseName, SqlPassword, SqlUsername, SqlLocalName aus
SqlDatabaseName = "dvbbs7"
SqlPassword = ""
SqlUsername = "dvbbs"
SqlLocalName = "(lokal)"
ConnStr = "Provider = Sqloledb; Benutzer-ID = " & SqlUsername & "; Passwort = " & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Datenquelle = " & SqlLocalName & ";"
Anders
„Für kostenlose Benutzer ändern Sie bitte die Datenbankadresse und den Datenbanknamen im Datenverzeichnis entsprechend, ändern Sie beispielsweise dvbbs6.mdb in dvbbs6.asp.“
'http://www.downcodes.com/
Db = „data/fengerqingqing.mdb“
ConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(db)
Ende wenn
Bei Fehler Weiter fortsetzen
Setze conn = Server.CreateObject("ADODB.Connection")
conn.open ConnStr
Wenn Sie SQL verwenden, kann die Zugriffsanweisung natürlich gelöscht werden, d. h. nach else und vor on error resume next sieht sie so aus:
Dim ConnStr
'SQL-Datenbankverbindungsparameter: Datenbankname, Benutzerkennwort, Benutzername, Verbindungsname (lokal lokal verwenden, IP im Ausland verwenden)
Blenden Sie SqlDatabaseName, SqlPassword, SqlUsername, SqlLocalName aus
SqlDatabaseName = "dvbbs7"
SqlPassword = ""
SqlUsername = "dvbbs"
SqlLocalName = "(lokal)"
ConnStr = "Provider = Sqloledb; Benutzer-ID = " & SqlUsername & "; Passwort = " & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Datenquelle = " & SqlLocalName & ";"
Bei Fehler Weiter fortsetzen
Setze conn = Server.CreateObject("ADODB.Connection")
conn.open ConnStr
kann auch prägnanter sein und so geschrieben werden:
Setze conn = Server.CreateObject("ADODB.Connection")
conn.open „Provider = Sqloledb; Benutzer-ID = sa; Passwort = 1234567; Erstkatalog = dvbbs7; Datenquelle = (lokal);“
Schreiben Sie den Datenbanknamen, die Datenquelle, den Benutzer und das Passwort entsprechend Ihrer tatsächlichen Situation neu.
4. Programmumschreibung
Es gibt zwei Situationen:
1. Wenn Sie Glück haben und das For SQL-Programm erhalten, kann das Programm grundsätzlich ausgeführt werden, wenn beim oben genannten Datenbankerstellungsprozess keine Probleme auftreten. Es handelt sich lediglich um einen Fehler im Programm selbst Das Ändern wird in diesem Beitrag nicht behandelt. Der Inhalt wird nicht im Detail beschrieben.
2. In den meisten Fällen ist das Programm selbst For Access. Der Unterschied zum For SQL-Programm besteht hauptsächlich in den im Programm verwendeten SQL-Abfrageanweisungen. Beachten Sie, dass SQL-Abfrageanweisungen ein unverzichtbarer Bestandteil von Datenbankanwendungen sind, unabhängig davon, ob es sich um For SQL oder For Aceess handelt. Es gibt jedoch einige subtile Unterschiede. Diese Unterschiede machen das Programm nicht universell was wir brauchen Der Hauptinhalt der Änderung. Die Teile, die im Allgemeinen geändert werden müssen, sind wie folgt:
(1) Das Problem der Zeitfunktion: Die Zeitfunktion der SQL-Datenbank unterscheidet sich von der des Zugriffs. Die häufigste Funktion besteht darin, die aktuelle Zeit abzurufen. Access ist now() und SQL ist getdate(). Daher muss die Funktion now() in der where-Klausel in getdate() geändert werden. Beachten Sie, dass die Funktion now() auch im ASP-Programm selbst verwendet werden muss Abfragen oder Ausführungsanweisungen. Achten Sie darauf, diese nicht zu ändern.
(2) Zeitvergleichsfunktion: datediff('d','time1','time2') Dies ist das für Zugriffsabfragen verwendete Format. Gleichzeitig muss # vor und entfernt werden nach dem Zeitformat muss ebenfalls entfernt werden. In ähnlicher Weise bezieht sich dies auch auf die SQL-Anweisung, und die ASP-Anweisung sollte intakt bleiben.
(3) Darstellung des Nullwerts: Beim Zugriff wird der Nullwert im Allgemeinen dadurch ausgedrückt, ob er ="" ist. Dies geht jedoch in SQL häufig schief. Wenn ein Fehler auftritt oder das Programm nicht normal ausgeführt wird, können Sie ihn ändern so urteilen:wobei (Name ist null)
(4) Wahre und falsche Wertbeurteilung: Sie können =true und =false verwenden, um den Zugriff zu beurteilen, aber es führt zu einem Fehler in SQL. Daher sollte diese Art der Beurteilung in =1 geändert werden bzw. =0. Hinweis: Obwohl einige Programme = „true“ schreiben, ist dieses Feld aufgrund der Anführungszeichen vom Typ „Zeichen“. Sie können es nicht in „=1“ ändern, sondern einfach so lassen, wie es ist.
Die oben genannten Stellen sind am häufigsten zum Umschreiben, es gibt aber auch einige, die weniger häufig vorkommen. Wenn Sie auf sie stoßen, können Sie hier antworten, um sie zu besprechen.
5. Programm-Debugging
Es wird empfohlen, einen Editor mit Zeilennummern zu verwenden, da das oben beschriebene Umschreiben wahrscheinlich nicht durch direktes Durchsuchen des Programmquellcodes durchgeführt werden kann und es schwierig ist, alles zu finden.
Die Methode, die ich anwende, ist im Allgemeinen wie folgt: Nachdem das Umschreiben der Datenbank abgeschlossen ist, wird das Programm direkt debuggt. Sehen Sie sich die Fehlermeldung an und suchen Sie die Codezeile der entsprechenden Datei. Die Ursache liegt jedoch häufig nicht vor Diese Zeile lautet beispielsweise: conn.execute(sql), aber dieser Satz selbst ist nicht falsch. Die Ursache des Fehlers ist die darin enthaltene SQL-Zeichenfolge und ändert sie entsprechend auf die oben erwähnte Programmmodifikationsmethode.
Nach dem Import der Datenbank müssen die automatisch hinzugefügten Felder neu geschrieben und die Länge aller numerischen Typen erhöht werden. Am besten ist die Verwendung von Dezimalzahlen.
Alle Standardwerte gehen verloren. Hauptsächlich numerische Typen und Datumstypen.
Alle now(), time(), date() sollten in getdate() geändert werden.
Alle datediff('d', time1, time2) sollten in dateiff(day, time1, time2) geändert werden.
Es ist möglich, dass einige True/False-Typen nicht verwendet werden können und in 1/0 geändert werden sollten.
Der Bemerkungstyp muss über cast (Spalte als Varchar) verwendet werden.
CursorType muss auf 1 geändert werden, d. h. der erste numerische Parameter muss beim Öffnen der Datenbank als 1 angegeben werden, sonst wird der Datensatz möglicherweise nicht vollständig angezeigt.
BeimKonvertieren von isnull(rowname) in rowname = null
wird der automatische Nummerierungstyp in der ACCESS-Datenbank von SQL Server nicht auf den automatischen Nummerierungstyp festgelegt. Wir müssen der SQL-Erstellungsanweisung eine Identität hinzufügen, um die automatische Nummerierung anzuzeigen!
Bei der Konvertierung verwendet SQL SERVER standardmäßig den Typ „smalldatetime“ für datumsbezogene Felder. Am besten ändern Sie ihn in den Typ „datetime“, da der Typ „datetime“ einen größeren Bereich hat als der Typ „smalldatetime“. Bei Verwendung des Typs smalldatetime schlägt die Konvertierung manchmal fehl, bei Verwendung des Typs datetime ist die Konvertierung jedoch erfolgreich.
Die zum Betrieb der beiden Datenbanken verwendeten SQL-Anweisungen sind nicht genau gleich. Wenn Sie beispielsweise Datensätze in der ACCESS-Datenbank löschen, verwenden Sie: „delete * from user where id=10“, während Sie beim Löschen der SQL SERVER-Datenbank Folgendes verwenden: „ delete user where id=10".
Die Datumsfunktionen sind unterschiedlich. Bei der Verarbeitung der ACCESS-Datenbank können Funktionen wie date() und time() verwendet werden. Bei der Verarbeitung der SQL SERVER-Datenbank sind jedoch nur Funktionen wie datediff und dateadd möglich können verwendet werden, jedoch nicht date( ), time() und andere Funktionen.
Bei der Verarbeitung der ACCESS-Datenbank können einige VB-Funktionen, wie z. B. die Funktion cstr(), direkt in der SQL-Anweisung verwendet werden, bei der Verarbeitung der SQL SERVER-Datenbank jedoch nicht.
Die folgende Tabelle vergleicht eine Microsoft Access-Datenbank (Microsoft Access-Datenbank: Eine Sammlung von Daten und Objekten wie Tabellen, Abfragen oder Formularen, die sich auf ein bestimmtes Thema oder einen bestimmten Zweck beziehen. Die Microsoft Jet-Datenbank-Engine wird zum Verwalten von Daten verwendet.) und ein Microsoft Access-Projekt (Microsoft Access-Projekt: Access-Dateien, die eine Verbindung zu einer Microsoft SQL Server-Datenbank herstellen und zum Erstellen von Client/Server-Anwendungen verwendet werden. Die Projektdatei enthält keine Daten oder datenbasierten Objekte (z. B. Tabellen oder Ansichten). Zu den Feldmerkmalen von Datentypen gehören „Boolean“, „Integer“, „Long“, „Currency“, „Single“, „Double“, „Date“, „String“ und „Variant“ (Standard).
Microsoft Access-Datentyp SQL Server-Datentyp Ja/Nein (Ja/Nein-Datentyp: Ein Felddatentyp, der für Felder mit nur zwei möglichen Werten verwendet wird (z. B. Ja oder Nein, Wahr oder Falsch). Nullwerte sind nicht vorhanden zulässig.) Bit (Bit-Datentyp: In Access-Projekten ein Datentyp, der einen Wert von 1 oder 0 speichert. Akzeptiert andere ganzzahlige Werte als 1 und 0, interpretiert sie jedoch immer als 1.)
Zahl (Zahlendatentyp: Ein Felddatentyp in Microsoft Access-Datenbanken, der für numerische Daten verwendet wird, die in mathematischen Operationen verwendet werden. Wenn Sie jedoch Geldwerte anzeigen oder berechnen möchten, sollten Sie den Währungsdatentyp verwenden.) (Byte) tinyint (Tinyint-Datentyp: ein Ein-Byte-Datentyp (8 Bit) im Access-Projekt, der zum Speichern von Ganzzahlen im Bereich von 0 bis 255 verwendet wird.)
Zahl (Ganzzahl) smallint (Smallint-Datentyp: ein 2-Byte-Datentyp (16 Bit) im Access-Projekt, der Zahlen zwischen -2^15(-32.768) und 2^15-1(32.767) speichert.)
Zahl (lange Ganzzahl) int (int-Datentyp: ein 4-Byte-Datentyp (32 Bit) im Access-Projekt, der Werte zwischen -2^31(-2.147.483.648) und 2^31-1(2.147.483.647) speichert .)
Zahl (Gleitkommatyp mit einfacher Genauigkeit) real (realer Datentyp: In Access-Projekten ein ungefährer numerischer Datentyp mit einer Genauigkeit von 7 Ziffern, positive Werte im Bereich von 1,18E-38 bis 3,40E+38, negative Werte The Der Wertebereich liegt ungefähr zwischen -1,18E-38 und -3,40E+38 und kann auch 0 sein.
(Kein gleichwertiger Datentyp) bigint (bigint-Datentyp: ein 8-Byte-Datentyp (64 Bit) im Access-Projekt, gespeichert zwischen -2^63 (-9.223.372.036.854.775.808) und 2^63-1 (9.223.372.036.854.775.807)).
Zahl (Gleitkomma mit doppelter Genauigkeit) Float (Float-Datentyp: In Access-Projekten ein ungefährer numerischer Datentyp mit einer Genauigkeit von 15 Ziffern. Der Bereich der gespeicherten positiven Werte liegt ungefähr zwischen 2,23E-308 und 1,79E+308. der negative Wertebereich reicht ungefähr von -2,23E-308 bis -1,79E+308, er kann auch 0 sein).
Währung (der Datentyp „Währung“: Ein Datentyp in Microsoft Access-Datenbanken, der für währungsbezogene Berechnungen oder Festkommaberechnungen verwendet wird, bei denen die Genauigkeit äußerst wichtig ist.) Geld (Datentyp „Geld“: Wird in Access-Projekten zum Speichern von Währungsdaten verwendet.) Typ des Werts, der Wertebereich reicht von -922.337.203.685.477,5707 bis 922.337.203.685.477,5807, die Genauigkeit beträgt ein Zehntausendstel einer Währungseinheit.)
smallmoney (Smallmoney-Datentyp: ein Datentyp, der Währungswerte im Access-Projekt speichert, der Wertebereich ist von - 214.748,3648 bis 214.748,3647, mit einer Genauigkeit von einem Zehntausendstel einer Geldeinheit. Bei der Anzeige kleiner Geldwerte werden diese auf zwei Dezimalstellen gerundet.)
Dezimal/Numerisch (dezimaler Datentyp (Access-Datenbank): Exakter numerischer Datentyp, der zum Speichern von Werten von -10^38-1 bis 10^38-1 verwendet wird. Numerischer Bereich (maximale Gesamtzahl) und Genauigkeit (Dezimalpunkt) können angegeben werden (maximale Anzahl von Ziffern auf der rechten Seite). ) dezimal (dezimaler Datentyp (Access-Projekt): Exakter numerischer Datentyp, der zum Speichern von Werten von -10^38-1 bis 10^38-1 verwendet wird. Numerischer Bereich (maximal). Gesamtzahl der Ziffern) kann angegeben werden (Zahl) und Genauigkeit (die maximale Anzahl der Ziffern rechts vom Dezimalpunkt).
Numerisch (numerischer Datentyp: In Access-Projekten ein präziser numerischer Datentyp mit Werten von -10^38 -1 bis 10^38-1. Kann den numerischen Bereich (maximale Gesamtzahl der Ziffern) und die Genauigkeit (maximale Anzahl der Ziffern rechts vom Dezimalpunkt) angeben.
Datum/Uhrzeit („Datum/Uhrzeit“-Datentyp: ein Datentyp in der Access-Datenbank, der zum Speichern von Datums- und Uhrzeitinformationen verwendet wird.) datetime (Datum/Uhrzeit-Datentyp: In Access-Projekten der Datentyp für Datum und Uhrzeit im Bereich von 1753 Vom 1. Januar bis 31. Dezember 9999 beträgt die Genauigkeit drei Hundertstelsekunden oder 3,33 Millisekunden)
smalldatetime (Smalldatetime-Datentyp: ein Datums- und Uhrzeitdatentyp im Access-Projekt, die Genauigkeit ist nicht so gut wie datetime time. Daten Der Datenwertbereich reicht vom 1. Januar 1900 bis zum 6. Juni 2079 mit einer Genauigkeit von einer Minute.
AutoNumber (Datentyp „AutoNumber“): Ein Felddatentyp in einer Microsoft Access-Datenbank, der automatisch eine eindeutige Nummer für jeden Datensatz speichert, wenn ein neuer Datensatz zur Tabelle hinzugefügt wird. Es können drei Nummerntypen generiert werden: Sequenznummer, Zufallszahl und synchron Replikations-ID. ) (inkrementierend) int (int-Datentyp: ein 4-Byte-Datentyp (32 Bit) im Access-Projekt, gespeichert bei -2^31 (-2.147.483.648) und 2 ^31-1(2.147.483.647)) ( (das Identitätsattribut ist definiert).
Text (Datentyp „Text“: Ein Felddatentyp in einer Microsoft Access-Datenbank. Der Datentyp „Text“ kann bis zu 255 Zeichen oder eine kleinere Anzahl von Zeichen enthalten, die durch die FieldSize-Eigenschaft angegeben wird.) (n) varchar( n ) (varchar(n)-Datentyp: Ein Datentyp variabler Länge in Access-Projekten mit einer maximalen Länge von 8.000 ANSI-Zeichen.)
nvarchar(n) (nvarchar(n)-Datentyp: In Access-Projekten ein A-Datentyp variabler Länge (Typ, der bis zu 4.000 Unicode-Zeichen enthalten kann. Unicode-Zeichen belegen zwei Bytes pro Zeichen und unterstützen alle internationalen Zeichen.)
Bemerkungen (Datentyp „Bemerkungen“: ein Felddatentyp in der Microsoft Access-Datenbank. Das Feld „Bemerkungen“ kann bis zu 65.535 Zeichen enthalten.) Text (Textdatentyp: ein Datentyp variabler Länge im Access-Projekt, Kann gespeichert werden bis zu 2^31-1(2.147.483.647) Zeichen; Standardlänge ist 16).
OLE-Objekt (Datentyp „OLE-Objekt“): Einer der Datentypen für Felder, die in Objekten verwendet werden, die in anderen Anwendungen erstellt wurden und in eine Access-Datenbank verknüpft oder eingebettet (eingefügt) werden können.) Bild (Bilddatentyp: In Access Im Projekt Ein Datentyp variabler Länge kann bis zu 2^31-1 (2.147.483.647) Bytes an Binärdaten speichern. Der Bilddatentyp wird zum Speichern von BLOBs (Binary Large Objects) wie Bildern, Dokumenten, Sounds und Dateien verwendet. kompilierter Code.)
Synchrone Replikations-ID (auch bekannt als Globally Unique Identifier (GUID): In Access-Datenbanken ein 16-Byte-Feld, das zum Einrichten einer eindeutigen Kennung für die synchrone Replikation verwendet wird. GUIDs werden zum Identifizieren von Replikaten, Replikatsätzen, Tabellen, Datensätzen und anderen Objekten verwendet. In Access-Datenbank, GUID bezieht sich auf die synchrone Replikations-ID (GUID)) UniqueIdentifier (UniqueIdentifier-Datentyp: In Access-Projekten 16-Byte-Globally Unique Identifier (GUID).) (Gilt nur für SQL Server 7.0 oder höher.)
Hyperlink („Hyperlink“-Datentyp: Der Datentyp des Access-Datenbankfelds, in dem Hyperlinkadressen gespeichert werden. Adressen können aus bis zu vier Teilen bestehen und werden im folgenden Syntaxformat geschrieben: displaytext#address#subaddress#.) char (char-Datentyp : in Access-Projekten ein Datentyp fester Länge, der bis zu 8.000 ANSI-Zeichen enthalten kann),
nchar (nchar-Datentyp: In Access-Projekten ein Datentyp fester Länge, der bis zu 4.000 Unicode-Zeichen enthalten kann. Unicode Each Das Zeichen belegt zwei Bytes und unterstützt alle internationalen Zeichen), varchar, nvarchar (Hyperlink-Attribut ist auf „Ja“ gesetzt).
(Kein gleichwertiger Datentyp) varbinary (varbinary-Datentyp: Ein Datentyp variabler Länge in Access-Projekten, der bis zu 8.000 Byte Binärdaten speichern kann.)
(Kein gleichwertiger Datentyp) smallint (Smallint-Datentyp: ein 2-Byte-Datentyp (16 Bit) im Access-Projekt, gespeichert zwischen -2^15(-32,768) und 2^15-1(32,767) ).
(Kein gleichwertiger Datentyp) Zeitstempel (Zeitstempel-Datentyp: In Access-Projekten ein Datentyp, der jedes Mal automatisch aktualisiert wird, wenn eine Zeile eingefügt oder aktualisiert wird. Der Wert in der Zeitstempelspalte sind keine Datums-/Uhrzeitdaten, sondern binär(8) oder varbinär (8) und gibt die Reihenfolge der Datenänderung an.
(kein gleichwertiger Datentyp) charnchar
(Kein äquivalenter Datentyp) sql_variant (sql_variant-Datentyp: ein Datentyp im Access-Projekt, der Werte mehrerer Datentypen außer den Typen text, ntext, image, timestamp und sql_variant speichert. In Spalten, Parametern, Variablen oder verwendet in der Rückgabewert einer benutzerdefinierten Funktion).
(Kein gleichwertiger Datentyp) Benutzerdefiniert (Benutzerdefinierter Datentyp: In einer Microsoft SQL Server-Datenbank kann die Typdefinition der in einer Spalte enthaltenen Daten vom Benutzer mithilfe vorhandener Systemdatentypdefinitionen definiert werden. Regeln und Standardwerte können nur an einen benutzerdefinierten Datentyp gebunden werden.
Hinweis: In einem Access-Projekt oder einer SQL Server-Datenbank steht das Präfix „n“ für „Land/Region“, was bedeutet, dass dieser Datentyp Unicode-fähig ist . In Access-Datenbanken sind alle Textspalten standardmäßig Unicode-fähig.
Probleme, auf die Sie bei der Konvertierung von ACCESS in SQL achten müssen
2006-2-13 16:01:20
Viele Freunde möchten SQL2000-Datenbankprogrammierungsmethoden verwenden, leiden jedoch unter der Tatsache, dass sie ACCESS lernen und nur ein geringes Verständnis von SQL haben. Hier stelle ich Ihnen die folgenden Referenzen zur Verfügung: Methoden und Vorsichtsmaßnahmen für die Konvertierung von ACCESS in SQL2000. Zunächst einmal geht es um die Konvertierung zwischen ACCESS2000 und SQL2000. Ich hoffe, Sie können noch mehr experimentieren, und es muss einen Weg geben.
2. Konvertierungsmethode
1. Öffnen Sie „Datenbankquelle“ in „Verwaltung“ unter „Systemsteuerung“;
2. Klicken Sie auf „Hinzufügen“, um eine neue Datenquelle hinzuzufügen, und wählen Sie in der Auswahlspalte „DriverdomicrosoftAccess“ aus.
(*.mdb)“ wird nach der Fertigstellung ein Feld angezeigt.
Geben Sie den Namen ein, den Sie schreiben möchten, in „Datenbankquelle“. Ich habe ihn „ABC“ genannt, um anzuzeigen, dass kein Ausfüllen erforderlich ist. Klicken Sie dann auf die Auswahl unten um Ihre Datenbankadresse und -auswahl zu finden (Hinweis: Bitte sichern Sie zuerst Ihre ACCESS-Datenbank) und bestätigen Sie dann.
Hier wird die Datenquelle erstellt und es bleibt nur noch die Konvertierung.
3. Öffnen Sie SQL2000 Enterprise Manager, geben Sie die Datenbank ein und erstellen Sie eine neue leere Datenbank „ABC“.
4. Wählen Sie die neu erstellte Datenbank aus, klicken Sie mit der rechten Maustaste, wählen Sie unter „Alle Aufgaben“ „Daten importieren“ und klicken Sie auf „Weiter“, um fortzufahren.
5. Wählen Sie „DriverdoMicrosoft Access (*.mdb)“ in der Dropdown-Liste „Datenbankquelle“ aus. Wählen Sie unter „Benutzer/System-DSN“ das gerade hinzugefügte „ABC“ aus und klicken Sie auf „Weiter“.
6. „Zweck“ muss nicht geändert werden (normalerweise Ihr eigener Computer „lokal“, Sie können auch die Serveradresse oder LAN-Adresse auswählen, um zu bestimmen, ob Ihre Berechtigungen funktionieren), „WINDOWS-Authentifizierung verwenden“ bedeutet Verwendung Für Ihren eigenen Systemadministrator-Identitätsvorgang kann „SQL-Identitätsvorgangsüberprüfung verwenden“ für Website-Vorgänge verwendet werden. Letzteres wird empfohlen.
7. Nachdem Sie „SQL-Identitätsprüfung verwenden“ ausgewählt haben, geben Sie Ihren Benutzernamen und Ihr Passwort ein. Wählen Sie für die Datenbank das neu erstellte „ABC“ und drücken Sie „Nächster Schritt“;
8. In diesem Schritt gibt es zwei Einzeloptionen: „Tabellen und Ansichten aus der Datenquelle kopieren“ und „Verwenden Sie einen Abfragebefehl, um die zu übertragenden Daten anzugeben“. Wählen Sie Ersteres aus und klicken Sie auf „Weiter“, um fortzufahren.
9. Die Tabellen Ihrer eigenen ACCESS-Datenbank werden hier angezeigt. Klicken Sie auf „Alle auswählen“ und fahren Sie mit dem nächsten Schritt fort.
10. „DTS-Import-/Export-Assistent“, achten Sie darauf, dass „Jetzt ausführen“ ausgewählt ist, und klicken Sie auf „Weiter“.
11. Klicken Sie auf „Fertig stellen“, um fortzufahren.
12. In diesem Schritt sehen Sie, wie Ihre Daten in SQL2000 importiert werden. Wenn die Meldung „XXX-Tabellen wurden erfolgreich in die Datenbank importiert“ angezeigt wird und vor allen Tabellen grüne Häkchen angezeigt werden, bedeutet dies, dass alle Daten erfolgreich importiert wurden Erfolgreich importiert. Wenn während des Vorgangs ein Problem auftritt oder ein rotes * vor der Tabelle angezeigt wird, bedeutet dies, dass die Tabelle nicht erfolgreich importiert wurde. Überprüfen Sie jetzt, ob Ihr Vorgang korrekt
ist . Datenänderung
1. Da es in SQL2000 keine „automatische Nummerierung“ gibt, werden die Felder, die Sie mit „automatischer Nummerierung“ festlegen, zu nicht leeren Feldern. In diesem Fall müssen Sie diese Felder manuell ändern und „Ja“ für „Markieren“ auswählen Startwert ist „1“, das Inkrement ist „1“,
2. Darüber hinaus werden nach der Konvertierung von ACCESS2000 in SQL2000 die Felder mit dem ursprünglichen Attribut „Ja/Nein“ in ein nicht leeres „Bit“ umgewandelt. Zu diesem Zeitpunkt müssen Sie es in das gewünschte Attribut ändern.
3. Darüber hinaus sollte jeder auf das Verständnis der Zeitfunktionen achten. Es gibt viele Unterschiede zwischen ACCESS und SQL.
4. Verwandte Feldthemen
1. Beim Konvertieren des automatischen Nummerierungstyps in der ACCESS-Datenbank hat SQL Server ihn nicht auf den automatischen Nummerierungstyp festgelegt. Wir müssen der SQL-Erstellungsanweisung eine Identität hinzufügen, um die automatische Nummerierung anzuzeigen!
2. Bei der Konvertierung verwendet SQLSERVER standardmäßig den Typ „smalldatetime“ für datumsbezogene Felder. Es ist am besten, ihn in den Typ „datetime“ zu ändern, da der Typ „datetime“ einen größeren Bereich hat als der Typ „smalldatetime“. Bei der Verwendung des Typs „smalldatetime“ ist die Konvertierung fehlgeschlagen, bei Verwendung des Typs „datetime“ war die Konvertierung jedoch erfolgreich.
3. Die zum Betrieb der beiden Datenbanken verwendeten SQL-Anweisungen sind nicht genau gleich. Zum Beispiel: Wenn Sie Datensätze in der ACCESS-Datenbank löschen, verwenden Sie: „delete*fromuserwhereid=10“, aber wenn Sie die SQLSERVER-Datenbank löschen, verwenden Sie: „deleteuserwhereid=“. 10".
4. Bei der Verarbeitung der ACCESS-Datenbank können Funktionen wie date() und time() verwendet werden. Bei der Verarbeitung der SQLSERVER-Datenbank können jedoch nur Funktionen wie dateiff und dateadd verwendet werden, nicht jedoch date (), time( ) und andere Funktionen.
5. Bei der Verarbeitung der ACCESS-Datenbank können einige VB-Funktionen, wie z. B. die Funktion cstr(), direkt in der SQL-Anweisung verwendet werden, bei der Verarbeitung der SQLSERVER-Datenbank jedoch nicht.
5. Verwandte Anweisungsprobleme, automatisch hinzugefügte Felder müssen neu geschrieben werden. Das beim Zugriff häufig verwendete automatische Nummerierungsfeld ist nach dem Import in MSSQL kein automatisch inkrementierendes Feld. Es muss manuell auf „Ja“ und „Seed“ gesetzt werden. . und „Inkrementbetrag“ sind beide „1“, um eine automatische Zahl zu werden.
Alle Standardwerte gehen verloren. Hauptsächlich numerische Typen und Datumstypen
Alle now(), time() und date() müssen in getdate() geändert werden.
Alle datediff('d',time1,time2) sollten in dateiff(day,time1,time2) geändert werden.
Alle datediff('ww',time1,time2) sollten in datediff(week,time1,time2) geändert werden.
Alle datediff('d',time1,time2) sollten in dateiff(day,time1,time2) geändert werden.
In mssqlserver gibt es viele reservierte Wörter, die im Zugriff nicht verfügbar sind. Beim Importieren von Daten in mssql treten Probleme auf. Beim Importieren von MSSQL wird automatisch „[Feldname]“ zu diesen Feldern hinzugefügt (einschließlich Tabellennamen in der Datenbank). Daher müssen Sie Ihr Skript ändern und die entsprechenden Feldnamen (oder Tabellennamen) hinzufügen den Feldnamen auf ein reserviertes Wort, das nicht mssql ist
Bei der Verwendung von Zugriff zur Zeitnutzung verwendet jeder gerne SQL-Anweisungen wie „select*fromaaaawhiletime="&now()". Allerdings gibt es in mssql keine Funktion „now()“, sondern „getdate()“. , „now()“ muss in allen SQL-Anweisungen durch „getdate()“ ersetzt werden.
Die Datumsfunktionen sind unterschiedlich. Bei der Verarbeitung der ACCESS-Datenbank können Funktionen wie date() und time() verwendet werden
Bei der SQLSERVER-Datenbankverarbeitung können nur Funktionen wie datediff und dateadd verwendet werden, Funktionen wie date() und time() können jedoch nicht verwendet werden.
Bei der Konvertierung verwendet SQLSERVER standardmäßig den Typ „smalldatetime“ für datumsbezogene Felder. Wir sollten ihn besser in „datetime“ ändern.