Base de données back-end :
[Accès Microsoft]
et
[Microsoft SQL Serveur]
Après le remplacement, le code ASP doit faire attention à certains endroits qui doivent être modifiés :
[1] Problèmes de connexion (exemple)
[Accès Microsoft]
constr = "DBQ=c:dataclwz.mdb; DRIVER={Pilote Microsoft Access (*.mdb)}"
[Microsoft SQL Serveur]
constr = "DRIVER={SQL Server};SERVER=host;DATABASE=mydata;uid=sa;pwd="
[2] Fonctions similaires (exemple)
[1]DATEDIFF(datepart, startdate, enddate)
Les options du paramètre « datepart » sont les suivantes :
Description du paramètre————————————
[Accès Microsoft]
annéeaaaa
quart q
mois m
nombre de jours dans l'année y
jour
Jours de la semaine w
Zhou ww
heures h
minutesn
secondes
[Microsoft SQL Server]
année aa, aaaa
trimestre qq, q
mois mm, m
jour de l'année, jour
jour jj, j
semaine semaine, ww
heure hh
minute mi, n
deuxième ss, s
milliseconde ms
----------------------
C'est fondamentalement la même chose, mais faites attention lors de l'écriture,
[Microsoft Access] Ajoutez des guillemets, tels que : datediff('d',enddate,'2004/08/01')
[Microsoft Sql Server] n'est pas requis, par exemple : datediff(d,enddate,'2004/08/01')
[2][Microsoft Access] peut utiliser des fonctions de conversion de type de données telles que cstr et
Dans [Microsoft SQL Server], utilisez la fonction de conversion ou de conversion, telle que :
convertir(varchar,[montant]) etc.
[3][Microsoft SQL Server]
Pour obtenir l'heure actuelle, utilisez getdate, etc...
[3] Déclarations
[Microsoft SQL Serveur]
disponible
CAS
QUAND ALORS
QUAND ALORS
...
AUTRE
FIN
déclaration, tandis que
[Accès Microsoft]
Non pris en charge.
[Microsoft Access] ne prend pas non plus en charge l'instruction between
[Microsoft SQL Server] peut être écrit comme ceci :
[date] entre @date1 et @date2
[4] Tableau de requête
[Microsoft SQL Serveur]
Il peut être interrogé en joignant trois tables ou plus, et
[Accès Microsoft]
Il semble que seules deux tables puissent être jointes pour une requête (à confirmer par l'autorité).
Et [Microsoft Sql Server] peut utiliser les connecteurs "*=" et "=*". [5] Problème de division par zéro
[Accès Microsoft]
Lorsque le diviseur est zéro, les enregistrements concernés sont automatiquement supprimés et
[Microsoft SQL Serveur]
Une erreur sera signalée et la requête sera terminée. Supprimer le code :
[Accès Microsoft]
Vous pouvez l'écrire comme ceci : delete * from [table]
[Microsoft SQL Serveur]
Cela ne peut être écrit que comme ceci : supprimer de [table]
Plusieurs fois, une erreur sera signalée
________________________________________
Date actuelle :
[Accès Microsoft]
Utiliser date()
[Microsoft SQL Serveur]
En utilisant getdate(), si la base de données peut changer le type, vous pouvez ajouter ceci au code ASP :
si inStr(constr,"Microsoft Access") > 0 alors
sqlstr=[Microsoft Access][code SQL]
autre
sqlstr=[Microsoft SQL Server][code SQL]
finir si
(constr--chaîne de connexion)
De cette façon, même si la base de données est modifiée, il n'est pas nécessaire de modifier la requête de la base de données ni le code de mise à jour.
De plus : il y a des enregistrements de champ vrais et faux dans l'accès, mais il n'y a que des petits entiers dans SQL. En conséquence, s'il y a "nom du champ = vrai" dans l'accès, il doit être remplacé par "nom du champ = 1" dans SQL.
La plupart des programmes ASP gratuits sur Internet utilisent la base de données Access. Cependant, la base de données Access, en tant que système de base de données autonome de petite et moyenne taille, est souvent dépassée lorsqu'elle est utilisée pour des applications de sites Web comportant de grandes quantités de visites et de données. On pense généralement que les performances d'une base de données d'accès commenceront à diminuer considérablement lorsqu'elle dépassera 50 Mo. Après avoir dépassé 100 Mo, les problèmes d'erreurs et de ralentissement de fonctionnement deviendront plus importants. Bien que nous puissions faire de notre mieux pour optimiser du point de vue du programme afin d’améliorer les performances comme nous l’avons fait après Dongwang 7.0, cela ne peut pas fondamentalement résoudre le problème.
À l'heure actuelle, l'utilisation de la base de données SQL Server de Microsoft est peut-être la méthode la plus probable. Bien sûr, vous pouvez également utiliser d'autres bases de données telles qu'Oracle, MySQL, etc., mais en guise de réécriture, puisqu'il s'agit de produits Microsoft, réécrivant dans SQL Server. devrait être le moyen le plus économique.
1. Conditions préalables à la réécriture :
SQL Server2000 a été installé sur le système et le correctif SP3 a été appliqué ; Access dans la suite Office a été installé ; il est recommandé d'utiliser un éditeur prenant en charge l'édition de texte brut et doté d'Ultra Edit, mais bien sûr, FrontPage2003 peut également être utilisé, mais l'affichage du numéro de ligne dans la version précédente n'était pas très simple à utiliser.
Exigences en matière de capacités personnelles : Être capable de comprendre la syntaxe ASP de base, d'accéder aux opérations de base de données et aux opérations de base de SQL Server Enterprise Manager.
2. D'une manière générale, il existe deux situations pour la préparation d'une base de données
:
1. Le programme fournit un format de base de données SQL : il existe un fichier MDF, ou un fichier script SQL (suffixe .sql) pour créer une base de données SQL est fourni.
S'il existe un fichier mdf, vous pouvez le joindre directement à l'aide d'Enterprise Manager. Si le fichier de script SQL est fourni, utilisez Enterprise Manager pour créer vous-même une base de données SQL, puis utilisez l'analyseur de requêtes dans Enterprise Manager pour exécuter le fichier. script pour créer la table de base de données.
La base de données ainsi créée n'a en principe pas besoin d'être réécrite.
2. La plupart d'entre eux ne fournissent pas de base de données SQL ou de fichiers de script. Pour le moment, vous devez le faire vous-même. C'est également le principal problème que notre article résout. Généralement, un tel programme fournira une base de données d'accès, vous pouvez donc utiliser Enterprise Manager pour importer la base de données d'accès. Après l'importation, vous devez réécrire les éléments suivants :
Par rapport à l'accès d'origine, réécrivez la partie suivante :
(1) Les tables de la base de données SQL n'ont pas de champs automatiques, donc les champs automatiques d'origine en accès sont convertis en champs ordinaires et doivent être modifiés manuellement en type d'identification, avec un incrément de 1.
(2) Pour tous les champs d'heure, si une valeur par défaut est définie, elle doit être now() et doit être remplacée par getdate()
(3) Les valeurs par défaut des champs d'origine ne sont généralement pas automatiquement introduites et doivent être ajoutées manuellement aux champs de la table d'origine.
(4) En raison des différentes bases de données, de nombreux types de champs d'accès et SQL changent après la conversion. Par exemple, le champ "si" d'origine sera converti en bit ou int, le champ mémo sera converti en texte long, le champ texte sera. converti en varchar, etc., d'une manière générale, cela n'affectera pas le fonctionnement du programme. S'il y a un problème, nous en discuterons dans la section de réécriture du programme ci-dessous.
(5) Si vous souhaitez utiliser un programme For SQL qui utilise des procédures stockées, vous devriez alors disposer d'un moyen de créer une base de données SQL dans le programme lui-même : disposer de son propre fichier de base de données SQL, ou sinon, utilisez l'importation ; La méthode de base de données Access ne peut pas créer de procédure stockée, vous feriez donc mieux d'abandonner cette version du programme For SQL, d'utiliser la même version du programme For Access, d'importer la base de données Access, puis d'utiliser la méthode de réécriture suivante pour la remplacer par la version SQL. programmez-vous.
3. Pour réécrire la chaîne de connexion,
veuillez vous référer à cette section de Dongwang, qui concerne respectivement l'accès et SQL.
DimConnStr
Si IsSqlDataBase = 1 Alors
Paramètres de connexion à la base de données SQL : nom de la base de données, mot de passe utilisateur, nom d'utilisateur, nom de connexion (utiliser localement localement, utiliser l'IP à l'étranger)
Dim SqlDatabaseName, SqlPassword, SqlUsername, SqlLocalName
SqlDatabaseName = "dvbbs7"
Mot de passe SQL = ""
Nom d'utilisateur SQL = "dvbbs"
NomLocalSql = "(local)"
ConnStr = "Provider = Sqloledb; ID utilisateur = " & SqlUsername & "; Mot de passe = " & SqlPassword & "; Catalogue initial = " & SqlDatabaseName & "; Source de données = " & SqlLocalName & ";"
Autre
'Pour les utilisateurs gratuits, veuillez modifier l'adresse et le nom de la base de données dans le répertoire de données en conséquence, par exemple, remplacez dvbbs6.mdb par dvbbs6.asp.
'http://www.downcodes.com/
Base de données = "data/fengerqingqing.mdb"
ConnStr = "Provider = Microsoft.Jet.OLEDB.4.0; Source de données = " & Server.MapPath(db)
Fin si
En cas d'erreur, reprendre ensuite
Définir conn = Server.CreateObject("ADODB.Connection")
conn.open ConnStr
Bien sûr, si vous utilisez SQL, l'instruction d'accès peut être supprimée, c'est-à-dire après et avant la reprise d'erreur suivante, cela devient comme ceci :
Dim ConnStr
'Paramètres de connexion à la base de données SQL : nom de la base de données, mot de passe utilisateur, nom d'utilisateur, nom de connexion (utiliser localement localement, utiliser l'IP à l'étranger)
Dim SqlDatabaseName, SqlPassword, SqlUsername, SqlLocalName
SqlDatabaseName = "dvbbs7"
Mot de passe SQL = ""
Nom d'utilisateur SQL = "dvbbs"
NomLocalSql = "(local)"
ConnStr = "Provider = Sqloledb; ID utilisateur = " & SqlUsername & "; Mot de passe = " & SqlPassword & "; Catalogue initial = " & SqlDatabaseName & "; Source de données = " & SqlLocalName & ";"
En cas d'erreur, reprendre ensuite
Définir conn = Server.CreateObject("ADODB.Connection")
conn.open ConnStr
peut également être plus concis et écrit comme ceci :
Définir conn = Server.CreateObject("ADODB.Connection")
conn.open "Fournisseur = Sqloledb ; ID utilisateur = sa ; Mot de passe = 1234567 ; Catalogue initial = dvbbs7 ; Source de données = (local) ;"
Réécrivez le nom de la base de données, la source de données, l'utilisateur et le mot de passe en fonction de votre situation réelle.
4. Réécriture de programme
Il existe deux situations :
1. Si vous avez de la chance et obtenez le programme For SQL, alors s'il n'y a aucun problème dans le processus de création de base de données ci-dessus, le programme peut essentiellement s'exécuter. S'il y a une erreur, il s'agit simplement d'un bug dans le programme lui-même. le modifier n’est pas abordé dans cet article. Le contenu ne sera pas décrit en détail.
2. Dans la plupart des cas, le programme lui-même est For Access. La différence avec le programme For SQL réside principalement dans les instructions de requête SQL utilisées dans le programme. Notez que les instructions de requête SQL sont un élément indispensable des applications de base de données. La syntaxe utilisée par les programmes, qu'il s'agisse de For SQL ou de For Aceess, est à peu près la même, mais il existe quelques différences subtiles qui rendent le programme non universel. ce dont nous avons besoin Le contenu principal de la modification. Les pièces qui doivent généralement être modifiées sont les suivantes :
(1) Le problème de la fonction heure : La fonction heure de la base de données SQL est différente de celle de l'accès. La fonction la plus courante consiste à obtenir l'heure actuelle. L'accès est maintenant() et SQL est getdate(). Par conséquent, partout où now() est utilisé dans la clause Where, il doit être remplacé par getdate(); notez que la fonction now() doit également être utilisée dans le programme asp lui-même. Toute fonction now() qui n'est pas utilisée dans la base de données. requêtes ou instructions d'exécution. Assurez-vous de ne pas le modifier.
(2) Fonction de comparaison temporelle : datediff('d','time1','time2') C'est le format utilisé pour les requêtes d'accès. Ces guillemets en SQL doivent être supprimés. En même temps, # peut être ajouté avant et. après le format de l'heure. Celui-ci doit également être supprimé. De même, cela fait également référence à l'instruction sql et l'instruction asp doit rester intacte.
(3) Représentation de la valeur nulle : lors de l'accès, le jugement de la valeur nulle est généralement exprimé par le fait que ="", mais cela se passe souvent mal en SQL. Si vous rencontrez un problème d'erreur ou si le programme ne s'exécute pas normalement, vous pouvez le modifier. Pour juger comme ça :where (name is null)
(4) Jugement de valeur vrai et faux : vous pouvez utiliser =true et =false pour juger de l'accès, mais cela entraînera une erreur dans SQL. Par conséquent, dans une requête SQL ou une instruction d'exécution, ce type de jugement doit être remplacé par =1. et =0 respectivement. Remarque : Bien que certains programmes écrivent = "true", à cause des guillemets, ce champ est de type caractère. Vous ne pouvez pas le modifier en =1, conservez-le simplement tel quel.
Les éléments ci-dessus sont les endroits les plus courants à réécrire, et certains le sont moins. Si vous les rencontrez, vous pouvez répondre ici pour en discuter.
5. Débogage du programme
Il est recommandé d'utiliser un éditeur avec des numéros de ligne car il est peu probable que la réécriture ci-dessus soit effectuée en recherchant directement le code source du programme et il est difficile de tout trouver.
La méthode que j'adopte est généralement la suivante : une fois la réécriture de la base de données terminée, le programme est débogué directement. Lorsqu'une erreur se produit, regardez le message d'erreur et trouvez la ligne de code du fichier correspondant. Cependant, la cause première n'est souvent pas la suivante. cette ligne. Par exemple, la déclaration d'erreur est : conn.execute(sql) , mais cette phrase elle-même n'est pas fausse. La cause de l'erreur est la chaîne SQL à l'intérieur. Recherchez ensuite comment la chaîne SQL est générée et modifiez-la en conséquence. à la méthode de modification de programme mentionnée ci-dessus.
Une fois la base de données importée, les champs ajoutés automatiquement doivent être réécrits et tous les types numériques doivent être augmentés en longueur. Il est préférable d'utiliser des valeurs décimales.
Toutes les valeurs par défaut sont perdues. Principalement des types numériques et des types de date.
Tout now(), time(), date() doit être remplacé par getdate().
Tous les datediff('d', time1, time2) doivent être remplacés par datediff(day, time1, time2).
Il est possible que certains types vrai/faux ne puissent pas être utilisés et doivent être remplacés par 1/0.
Le type de remarque doit être utilisé via cast(column as varchar).
CursorType doit être remplacé par 1, c'est-à-dire que le premier paramètre numérique doit être donné à 1 lors de l'ouverture de la base de données, sinon l'enregistrement risque de ne pas être affiché complètement.
Lors dela conversion de isnull(rowname) en rowname = null
, le type de numérotation automatique dans la base de données ACCESS n'est pas défini sur le type de numérotation automatique par SQL Server. Nous devons ajouter une identité à l'instruction de création SQL pour indiquer la numérotation automatique !
Lors de la conversion, SQL SERVER utilise par défaut le type smalldatetime pour les champs liés à la date. Il est préférable de le remplacer par le type datetime, car le type datetime a une plage plus grande que le type smalldatetime. Parfois, lors de l’utilisation du type smalldatetime, la conversion échoue, mais lors de l’utilisation du type datetime, la conversion réussit.
Les instructions SQL utilisées pour faire fonctionner les deux bases de données ne sont pas exactement les mêmes. Par exemple : lors de la suppression d'enregistrements dans la base de données ACCESS, utilisez : " delete * from user which id=10 ", tandis que lors de la suppression de la base de données SQL SERVER, utilisez : " delete user où id=10".
Les fonctions de date sont différentes. Lors du traitement de la base de données ACCESS, des fonctions telles que date() et time() peuvent être utilisées. Cependant, lors du traitement de la base de données SQL SERVER, seules des fonctions telles que datediff et dateadd peut être utilisé, mais pas date(), time() et d'autres fonctions.
Lors du traitement de la base de données ACCESS, certaines fonctions VB, telles que la fonction cstr(), peuvent être utilisées directement dans l'instruction SQL, mais lors du traitement de la base de données SQL SERVER, elles ne peuvent pas être utilisées.
Le tableau suivant compare une base de données Microsoft Access (base de données Microsoft Access : ensemble de données et d'objets, tels que des tables, des requêtes ou des formulaires, liés à un sujet ou à un objectif spécifique. Le moteur de base de données Microsoft Jet est utilisé pour gérer les données.) et un projet Microsoft Access (projet Microsoft Access : fichiers d'accès qui se connectent à une base de données Microsoft SQL Server et sont utilisés pour créer des applications client/serveur. Le fichier de projet ne contient aucune donnée ni aucun objet basé sur des données (tels que des tables ou des vues). Caractéristiques des champs des types de données. Les types de données incluent Booléen, Entier, Long, Devise, Simple, Double, Date, Chaîne et Variant (par défaut)).
Type de données Microsoft Access Type de données SQL Server Oui/Non (type de données Oui/Non : un type de données de champ utilisé pour les champs avec seulement deux valeurs possibles (telles que Oui ou Non, Vrai ou Faux). Les valeurs nulles ne sont pas autorisé.) bit (type de données bit : dans les projets Access, un type de données qui stocke une valeur de 1 ou 0. Accepte les valeurs entières autres que 1 et 0, mais les interprète toujours comme 1.)
Nombre (Type de données Nombre : type de données de champ dans les bases de données Microsoft Access utilisé pour les données numériques qui seront utilisées dans des opérations mathématiques. Cependant, si vous souhaitez afficher ou calculer des valeurs monétaires, vous devez utiliser le type de données Devise.) (octet) tinyint (type de données tinyint : un type de données sur un octet (8 bits) dans le projet Access, utilisé pour stocker des entiers allant de 0 à 255.)
Nombre (entier) smallint (type de données smallint : un type de données de 2 octets (16 bits) dans le projet Access, stockant des nombres entre -2^15(-32 768) et 2^15-1(32 767) .)
Number (entier long) int (type de données int : un type de données de 4 octets (32 bits) dans le projet Access, stockant des valeurs comprises entre -2^31(-2 147 483 648) et 2^31-1(2 147 483 647) nombre .)
Nombre (type à virgule flottante simple précision) réel (type de données réel : dans les projets Access, un type de données numérique approximatif avec une précision de 7 chiffres, des valeurs positives allant de 1,18E-38 à 3,40E+38, des valeurs négatives. la plage de valeurs va approximativement de -1,18E-38 à -3,40E+38, et peut également être 0).
(Aucun type de données équivalent) bigint (type de données bigint : un type de données de 8 octets (64 bits) dans le projet Access, stocké entre -2^63 (-9 223 372 036 854 775 808) et 2^63-1 (9 223 372 036 854 775 807) ).
Nombre (virgule flottante double précision) float (type de données float : dans les projets Access, un type de données numérique approximatif avec une précision de 15 chiffres. La plage de valeurs positives qu'il stocke est d'environ 2,23E-308 à 1,79E+ 308, la plage de valeurs négatives va approximativement de -2,23E-308 à -1,79E+308, elle peut également être 0).
monnaie (le type de données « monnaie » : un type de données dans les bases de données Microsoft Access utilisé pour les calculs liés aux devises ou les calculs à virgule fixe où la précision est extrêmement importante.) argent (type de données monétaire : dans les projets Access, utilisé pour stocker la monnaie Les données type de valeur, la plage de valeurs va de -922 337 203 685 477,5707 à 922 337 203 685 477,5807, la précision est d'un dix millième d'unité monétaire.)
smallmoney (type de données smallmoney : un type de données qui stocke les valeurs monétaires dans le projet Access, la plage de valeurs est compris entre - 214 748,3648 et 214 748,3647, avec une précision d'un dix millième d'unité monétaire. Lorsque les petites valeurs monétaires sont affichées, elles sont arrondies à deux décimales.)
Décimal/Numérique (type de données décimal (base de données Access) : type de données numérique exact utilisé pour stocker des valeurs de -10^38-1 à 10^38-1. La plage numérique (chiffres totaux maximum) et la précision (point décimal) peuvent être spécifié Nombre maximum de chiffres à droite).) décimal (type de données décimal (projet Access): type de données numérique exact utilisé pour stocker les valeurs de -10 ^ 38-1 à 10 ^ 38-1. Plage numérique (maximum nombre total) peut être spécifié nombre) et précision (le nombre maximum de chiffres à droite de la virgule décimale).)
numérique (type de données numérique : dans les projets Access, un type de données numérique précis avec des valeurs de -10 ^ 38 -1 à 10^38-1. Peut spécifier la plage numérique (nombre total maximum de chiffres) et la précision (nombre maximum de chiffres à droite de la virgule décimale).
Date/Heure (type de données "Date/Heure" : un type de données dans la base de données Access, utilisé pour stocker les informations de date et d'heure.) datetime (type de données datetime : dans les projets Access, le type de données de date et d'heure, allant de 1753 Du 1er janvier au 31 décembre 9999, la précision est de trois centièmes de seconde, soit 3,33 millisecondes)
smalldatetime (type de données smalldatetime : un type de données date et heure dans le projet Access, la précision n'est pas aussi bonne que datetime time. Données type. La plage de valeurs des données va du 1er janvier 1900 au 6 juin 2079, avec une précision d’une minute).
AutoNumber (type de données « AutoNumber » : type de données de champ dans une base de données Microsoft Access qui stocke automatiquement un numéro unique pour chaque enregistrement lorsqu'un nouvel enregistrement est ajouté à la table. Trois types peuvent être générés Nombre : numéro de séquence, nombre aléatoire et synchrone ID de réplication. ) (incrémentation) int (type de données int : un type de données de 4 octets (32 bits) dans le projet Access, stocké à -2^31 (-2 147 483 648) et 2 ^31-1(2 147 483 647)) ( l'attribut Identité est défini).
Texte (Type de données « Texte » : type de données de champ dans une base de données Microsoft Access. Le type de données « Texte » peut contenir jusqu'à 255 caractères, ou un nombre inférieur de caractères spécifié par la propriété FieldSize.) (n) varchar( n ) (type de données varchar(n) : type de données de longueur variable dans les projets Access avec une longueur maximale de 8 000 caractères ANSI.)
nvarchar(n) (type de données nvarchar(n) : dans les projets Access, une donnée de longueur variable type pouvant contenir jusqu’à 4 000 caractères Unicode. Les caractères Unicode occupent deux octets par caractère et prennent en charge tous les caractères internationaux.)
Remarques (type de données "Remarques" : un type de données de champ dans la base de données Microsoft Access. Le champ "Remarques" peut contenir jusqu'à 65 535 caractères.) texte (type de données texte : un type de données de longueur variable dans le projet Access, peut stocker jusqu'à 2 ^ 31-1 (2 147 483 647) caractères ; la longueur par défaut est 16).
Objet OLE (type de données "Objet OLE") : un des types de données pour les champs utilisés dans les objets créés dans d'autres applications qui peuvent être liés ou incorporés (insérés) dans une base de données Access.) image (type de données image : Dans Access Dans le projet , un type de données de longueur variable peut stocker jusqu'à 2 ^ 31-1 (2 147 483 647) octets de données binaires. Le type de données image est utilisé pour stocker des BLOB (grands objets binaires), tels que des images, des documents, des sons et des fichiers. code compilé.)
ID de réplication synchrone (alias Globally Unique Identifier (GUID) : dans les bases de données Access, un champ de 16 octets utilisé pour établir un identifiant unique pour la réplication synchrone. Les GUID sont utilisés pour identifier les réplicas, les jeux de réplicas, les tables, les enregistrements et d'autres objets. Dans Base de données Access, GUID fait référence à l'ID de réplication synchrone (GUID)) uniqueidentifier (type de données uniqueidentifier : dans les projets Access, identifiant global unique (GUID) de 16 octets.) (Applicable uniquement à SQL Server 7.0 ou version supérieure.)
hyperlien (type de données "lien hypertexte") : type de données du champ de base de données Access qui stocke les adresses de lien hypertexte. Les adresses peuvent contenir jusqu'à quatre parties et sont écrites dans le format de syntaxe suivant : displaytext#address#subaddress#.) char (type de données char : dans les projets In Access, un type de données de longueur fixe pouvant contenir jusqu'à 8 000 caractères ANSI. ),
nchar (type de données nchar : dans les projets Access, un type de données de longueur fixe pouvant contenir jusqu'à 4 000 caractères Unicode. Unicode Chacun caractère occupe deux octets et prend en charge tous les caractères internationaux), varchar, nvarchar (l'attribut Hyperlink est défini sur Oui).
(Aucun type de données équivalent) varbinary (type de données varbinary : type de données de longueur variable dans les projets Access pouvant stocker jusqu'à 8 000 octets de données binaires.)
(Aucun type de données équivalent) smallint (type de données smallint : un type de données de 2 octets (16 bits) dans le projet Access, stocké entre -2^15(-32 768) et 2^15-1(32 767) ).
(Aucun type de données équivalent) timestamp (type de données timestamp : dans les projets Access, un type de données qui est automatiquement mis à jour chaque fois qu'une ligne est insérée ou mise à jour. La valeur dans la colonne timestamp n'est pas une donnée datetime, mais binaire(8) ou varbinary (8), indiquant l'ordre de modification des données).
(pas de type de données équivalent) charnchar
(Aucun type de données équivalent) sql_variant (type de données sql_variant : un type de données dans le projet Access qui stocke les valeurs de plusieurs types de données autres que les types texte, ntext, image, timestamp et sql_variant. Dans les colonnes, paramètres, variables ou utilisé dans la valeur de retour d'une fonction définie par l'utilisateur).
(Aucun type de données équivalent) Défini par l'utilisateur (Type de données défini par l'utilisateur : dans une base de données Microsoft SQL Server, la définition du type des données contenues dans une colonne peut être définie par l'utilisateur à l'aide des définitions de types de données système existantes. Règles et les valeurs par défaut ne peuvent être liées qu'à Défini à un type de données défini par l'utilisateur. )
Remarque Dans un projet Access ou une base de données SQL Server, le préfixe « n » signifie « pays/région », ce qui signifie que ce type de données est activé pour Unicode. . Dans les bases de données Access, toutes les colonnes de texte sont compatibles Unicode par défaut.
Problèmes auxquels vous devez prêter attention lors de la conversion d'ACCESS en SQL
2006-2-13 16:01:20
De nombreux amis souhaitent utiliser les méthodes de programmation de bases de données SQL2000, mais ils souffrent du fait qu'ils apprennent ACCESS et n'ont qu'une petite compréhension de SQL. Ici, je vous fournis la référence suivante --- Méthodes et précautions pour convertir ACCESS en SQL2000. , Tout d'abord, je parle de la conversion entre ACCESS2000 et SQL2000. Je n'ai pas encore essayé les autres. J'espère que vous pourrez expérimenter davantage, et il doit y avoir un moyen ;
2. Méthode de conversion
1. Ouvrez « Source de base de données » dans « Outils d'administration » sous « Panneau de configuration » ;
2. Cliquez sur "Ajouter" pour ajouter une nouvelle source de données et sélectionnez "DriverdomicrosoftAccess" dans la colonne de sélection.
(*.mdb)", une boîte apparaîtra une fois terminé.
Entrez le nom que vous souhaitez écrire dans "Source de la base de données". Je l'ai nommé "ABC", indiquant qu'il n'est pas nécessaire de le remplir. Ensuite, appuyez sur la sélection ci-dessous pour trouver l'adresse et la sélection de votre base de données (remarque : veuillez d'abord sauvegarder votre base de données ACCESS), puis confirmer.
La source de données est créée ici et il ne reste plus que la conversion.
3. Ouvrez SQL2000 Enterprise Manager, entrez dans la base de données et créez une nouvelle base de données vide « ABC » ;
4. Sélectionnez la base de données nouvellement créée, cliquez avec le bouton droit de la souris, sélectionnez « Importer des données » sous « Toutes les tâches » et cliquez sur « Suivant » pour continuer ;
5. Sélectionnez « DriverdoMicrosoft Access (*.mdb) » dans la liste déroulante des sources de base de données. Dans « User/System DSN », sélectionnez le « ABC » que vous venez d'ajouter et cliquez sur « Next » ;
6. "Objectif" n'a pas besoin d'être modifié. Sélectionnez le serveur (généralement votre propre machine "locale", vous pouvez également sélectionner l'adresse du serveur ou l'adresse LAN pour déterminer si vos autorisations peuvent fonctionner), "Utiliser l'authentification WINDOWS" signifie utiliser. Pour votre propre opération d'identité d'administrateur système, « Utiliser la vérification des opérations d'identité SQL » peut être utilisée pour les opérations de site Web, et cette dernière est recommandée ;
7. Après avoir sélectionné « Utiliser la vérification de l'opération d'identité SQL », remplissez votre nom d'utilisateur et votre mot de passe. J'ai choisi les numéros par défaut du système « sa » et « **** ». Pour la base de données, sélectionnez le « ABC » nouvellement créé et appuyez sur. " Prochaine étape" ;
8. Il y a deux choix simples dans cette étape, « Copier les tables et les vues à partir de la source de données » et « Utiliser une commande de requête pour spécifier les données à transférer ». Sélectionnez le premier et cliquez sur « Suivant » pour continuer ;
9. Les tableaux de votre propre base de données ACCESS apparaîtront ici. Cliquez sur « Sélectionner tout » et passez à l'étape suivante ;
10. "Assistant d'importation/exportation DTS", vérifiez que "Exécuter maintenant" est sélectionné et cliquez sur "Suivant".
11. Appuyez sur « Terminer » pour continuer ;
12. Dans cette étape, vous verrez vos données importées dans SQL2000. Lorsque les mots « XXX tables ont été importées avec succès dans la base de données » apparaissent et qu'il y a des coches vertes devant toutes les tables, cela signifie que toutes les données ont été importées. importé avec succès. Si un problème survient pendant le processus ou s'il y a un * rouge devant le tableau, cela signifie que le tableau n'a pas été importé avec succès. À ce stade, vous devez revenir en arrière et vérifier si votre opération est correcte
. Modification des données
1. Puisqu'il n'y a pas de « numérotation automatique » dans SQL2000, les champs que vous définissez avec « numérotation automatique » deviendront des champs non vides. Dans ce cas, vous devez modifier manuellement ces champs et sélectionner « Oui » pour « Marquer ». la graine est "1", l'incrément est "1",
2. De plus, après avoir converti ACCESS2000 en SQL2000, les champs avec l'attribut d'origine « oui/non » seront convertis en « bit » non vide. À ce moment, vous devez le modifier avec l'attribut souhaité ;
3. De plus, tout le monde doit prêter attention à la compréhension des fonctions temporelles. Il existe de nombreuses différences entre ACCESS et SQL.
4. Questions de terrain liées
1. Lors de la conversion du type de numérotation automatique dans la base de données ACCESS, sqlserver ne l'a pas défini sur le type de numérotation automatique. Nous devons ajouter une identité à l'instruction de création SQL pour indiquer la numérotation automatique !
2. Lors de la conversion, SQLSERVER utilise par défaut le type smalldatetime pour les champs liés à la date. Il est préférable de le remplacer par le type datetime, car le type datetime a une plage plus grande que le type smalldatetime. J'ai rencontré cette situation. Lors de l'utilisation du type smalldatetime, la conversion a échoué, mais lors de l'utilisation du type datetime, la conversion a réussi.
3. Les instructions SQL utilisées pour faire fonctionner les deux bases de données ne sont pas exactement les mêmes. Par exemple : lors de la suppression d'enregistrements dans la base de données ACCESS, utilisez : "delete*fromuserwhereid=10", mais lors de la suppression de la base de données SQLSERVER, utilisez : "deleteuserwhereid= 10".
4. Les fonctions de date sont différentes. Lors du traitement de la base de données ACCESS, des fonctions telles que date() et time() peuvent être utilisées. Cependant, lors du traitement de la base de données SQLSERVER, seules les fonctions telles que datediff et dateadd peuvent être utilisées, mais pas date. (), time( ) et d'autres fonctions.
5. Lors du traitement de la base de données ACCESS, certaines fonctions VB, telles que la fonction cstr(), peuvent être utilisées directement dans l'instruction SQL, mais lors du traitement de la base de données SQLSERVER, elles ne peuvent pas être utilisées.
5. Les problèmes de déclaration associés, l'ajout automatique de champs doivent être réécrits. Le champ de numérotation automatique qui est souvent utilisé dans l'accès n'est pas un entier à incrémentation automatique après son importation dans mssql. Il doit être défini manuellement. Remplacez le « non » du champ de numérotation automatique importé par « oui » et « graine ». . et "montant de l'incrément" sont tous deux "1" pour devenir un nombre automatique.
Toutes les valeurs par défaut sont perdues. Principalement des types numériques et des types de date
Tous now(), time() et date() doivent être remplacés par getdate()
Tous les datediff('d',time1,time2) doivent être remplacés par datediff(day,time1,time2)
Tous les datediff('ww',time1,time2) doivent être remplacés par datediff(week,time1,time2)
Tous les datediff('d',time1,time2) doivent être remplacés par datediff(day,time1,time2)
Dans mssqlserver, de nombreux mots réservés ne sont pas disponibles en accès. Lorsque vous importez des données dans mssql, des problèmes surviennent. Lorsque mssql est importé, il ajoutera automatiquement "[nom du champ]" à ces champs (y compris les noms de tables dans la base de données). Par conséquent, vous devez modifier votre script et ajouter les noms de champs correspondants (ou les noms de tables, ou changer). le nom du champ à un mot réservé qui n'est pas mssql
Lors de l'utilisation de l'accès au temps d'utilisation, tout le monde aime utiliser des instructions SQL telles que "select*fromaaaawhiletime="&now()". Cependant, il n'y a pas de fonction "now()" dans mssql, mais "getdate()" est utilisé, donc , "now()" dans toutes les instructions SQL doit être remplacé par "getdate()".
Les fonctions de date sont différentes. Lors du traitement de la base de données ACCESS, des fonctions telles que date() et time() peuvent être utilisées, mais pour
Dans le traitement de la base de données SQLSERVER, seules les fonctions telles que datediff et dateadd peuvent être utilisées, mais les fonctions telles que date() et time() ne peuvent pas être utilisées.
Lors de la conversion, SQLSERVER utilise par défaut le type smalldatetime pour les champs liés à la date. Nous ferions mieux de le changer en type datetime.