Convertir la base de datos ACCESS a una base de datos SQL
Muchos amigos quieren usar los métodos de programación de bases de datos SQL2000, pero están aprendiendo ACCESS y solo saben un poco sobre SQL. Aquí les daré una referencia de la siguiente manera: -Métodos y precauciones para convertir ACCESS a SQL2000
1. En primer lugar, estoy hablando de convertir entre ACCESS2000 y SQL2000. No he probado los otros, espero que todos prueben más y debe haberlos. una manera. ;
2. Método de conversión
1. Abra "Herramientas de administración" en "Panel de control" y "Fuente de base de datos" en "Herramientas de administración";
2. Presione "Agregar" para agregar una nueva fuente de datos y seleccione "Controlador de Microsoft Access
(*.mdb)" en el campo de selección. Aparecerá un cuadro después de completar. >
Ingrese el nombre que desea escribir en "Fuente de la base de datos", lo llamé "ABC", no es necesario completar la descripción, luego, de acuerdo con la selección a continuación, busque la dirección de su base de datos y selecciónela ( nota, haga una copia de seguridad de su primera base de datos de ACCESS) y luego Aceptar.
La fuente de datos se construye aquí y el resto es conversión.
3. Abra SQL2000 Enterprise Manager, ingrese a la base de datos y cree una nueva base de datos vacía "ABC"
4. y seleccione "Todas las tareas" "Importar datos" en "Importar datos", haga clic en "Siguiente" para continuar;
5. Seleccione "Controlador de Microsoft Access (*.mdb)" en el menú desplegable de origen de la base de datos y seleccione "Usuario/DSN del sistema". Para el "ABC" que acaba de agregar, haga clic en "Siguiente";
6. No es necesario cambiar el "Propósito". No es necesario cambiar el "propósito", seleccione el servidor (generalmente su propio "local", también puede seleccionar la dirección del servidor o la dirección LAN para determinar si sus permisos pueden operar), "Usar autenticación WINDOWS" significa usar su propio sistema Para las operaciones de identidad del administrador, se puede utilizar "Usar autenticación de operación de identidad SQL" para las operaciones del sitio web, y se recomienda utilizar este último
7. Seleccione "Usar autenticación de operación de identidad SQL" y complete el usuario; nombre y contraseña. Elegí Los números predeterminados de su propio sistema son "sa" y "****". Para la base de datos, seleccione el "ABC" recién creado y haga clic en "Siguiente"; Para las dos selecciones individuales en este paso, "Desde la fuente de datos copiar tablas y vistas" y "Usar consulta para especificar los datos que se transferirán", seleccione la primera y haga clic en "Siguiente" para continuar;
9. Su propia tabla de base de datos de ACCESS aparecerá aquí, haga clic en "Selección completa "Siguiente paso";
10. Haga clic en "Importar/Ver DTS" y en "Asistente de importación/exportación DTS". Cuando esté en "Ejecutar ahora". seleccionado, haga clic en "Siguiente".
11. Presione "Finalizar".
11. Presione "Finalizar" para continuar;
12. En este paso, verá que sus datos se importan a SQL2000 cuando las palabras "La tabla de la base de datos XXX se haya importado correctamente". " aparece, y hay marcas verdes delante de todas las tablas, significa que todos los datos se han importado correctamente. Si hay un problema en el medio o aparece una cruz roja delante de la tabla, significa que la tabla no se ha importado correctamente. En este momento, debe regresar y verificar si sus operaciones son correctas.
3. Modificación de datos
1. Dado que SQL2000 no tiene "numeración automática", el campo establecido por su "numeración automática" se convertirá en un campo no vacío, que debe estar modificar manualmente estos campos y "etiquetar" los campos.
Seleccione "Sí" para su "Anotación", la semilla es "1", el incremento es "1",
2. Además, después de convertir ACCESS2000 a SQL2000, el atributo original es "Sí/No " El campo se convertirá en un "bit" no vacío y deberá modificar los atributos que desee;
3. Preste atención a "Sí", "1", "1", " Incrementos de 1", " 1". Además, también debemos prestar atención a la comprensión de la función del tiempo. Hay muchas diferencias entre ACCESS y SQL.
¿A qué debe prestar atención al convertir ACCESS a SQL?
Después de importar la base de datos, los campos agregados automáticamente deben reescribirse y todos los tipos numéricos deben aumentarse en longitud. Lo mejor es utilizar decimales.
Se perderán todos los valores predeterminados. Principalmente números y tipos de fechas.
Todos ahora(), hora() y fecha() deben cambiarse a getdate().
Todo dateiff('d', time1, time2) debe cambiarse a dateiff(day, time1, time2)
Algunos tipos verdadero/falso no se pueden usar y deben cambiarse a 1/0.
El tipo de nota se utilizará mediante cast(columna como varchar).
CursorType debe cambiarse a 1, es decir, al abrir la base de datos, el primer parámetro numérico debe establecerse en 1; de lo contrario, es posible que el registro no se muestre por completo.
isnull(rowname) debe cambiarse a rowname = null
Al convertir el tipo de numeración automática de la base de datos ACCESS, el servidor SQL no lo configurará al tipo de numeración automática. Necesito crearlo en SQL. ¡Agregue una bandera a la declaración para indicar la numeración automática!
Al convertir campos relacionados con fechas, SQL SERVER usa el tipo de fecha y hora pequeña de forma predeterminada. Será mejor que lo cambiemos al tipo de fecha y hora porque el tipo de fecha y hora tiene un rango mayor que el tipo de fecha y hora pequeña. A veces, la conversión falla cuando se usa el tipo de fecha y hora pequeña, pero tiene éxito cuando se usa el tipo de fecha y hora.
Las operaciones de declaración SQL de las dos bases de datos son diferentes. Por ejemplo: la declaración para eliminar registros en la base de datos ACCESS es "eliminar * del usuario donde id=10", mientras que la declaración utilizada para eliminar registros en. la base de datos de SQL SERVER es: "eliminar usuario donde id=10": "eliminar usuario donde id=10".
Las funciones de fecha también son diferentes Al procesar la base de datos ACCESS, se pueden usar funciones como date() y time() Sin embargo, al procesar la base de datos SQL SERVER, solo funciones como dateiff y dateadd. se puede utilizar, pero no Fecha(), hora() y otras funciones.
En el procesamiento de bases de datos ACCESS, las declaraciones SQL pueden usar directamente ciertas funciones de VB, como la función cstr(), pero en el procesamiento de bases de datos SQL SERVER, no se pueden usar.
Experiencia en la conversión de ACCESS a base de datos SQL SERVER
1. Al convertir el tipo de numeración automática de la base de datos ACCESS, SQL Server no lo configuró en el tipo de numeración automática. crear Agregue identificación a la declaración SQL, es decir, numeración automática.
2. Al convertir campos relacionados con fechas, SQL SERVER utiliza de forma predeterminada el tipo de fecha y hora pequeña. Será mejor que lo cambiemos al tipo de fecha y hora porque el tipo de fecha y hora tiene un rango mayor que el tipo de fecha y hora pequeña. Me encontré con esta situación, cuando usé el tipo de fecha y hora pequeña, la conversión falló, pero cuando usé el tipo de fecha y hora, la conversión se realizó correctamente.
3. Las operaciones de declaración SQL de las dos bases de datos son diferentes. Por ejemplo: la declaración para eliminar registros en la base de datos ACCESS es "eliminar * del usuario donde id=10", mientras que cuando se elimina en SQL. Base de datos del SERVIDOR Lo que se utiliza es: "eliminar usuario donde id=10": "eliminar usuario donde id=10".
4. Las funciones de fecha son diferentes cuando se trata de la base de datos ACCESS, se pueden usar funciones como fecha() y hora(). Sin embargo, cuando se trata de la base de datos SQL SERVER, solo funciones como. Se pueden usar dateiff y dateadd, pero no Use funciones como date() y time().
5. En el procesamiento de la base de datos ACCESS, algunas funciones de VB, como la función cstr(), se pueden usar directamente en declaraciones SQL, pero en el procesamiento de la base de datos SQL SERVER, no se pueden usar.
Cosas a tener en cuenta al convertir el acceso a mssql
Los campos agregados automáticamente deben reescribirse. El campo de numeración automática que se usa a menudo en el acceso no incrementa automáticamente int después de importarlo a mssql y debe configurarse manualmente. Después de la importación, la identificación del campo de numeración automática cambia de "no" a "sí", ". semilla" y "sí". "Semilla" e "Incremento" son ambos "1" para habilitar la numeración automática
Se perderán todos los valores predeterminados. Principalmente tipos numéricos y de fecha
Todos now(), time(), date() se cambiarán a getdate()
Todos dateiff('d', time1, time2) se cambiarán Cambiar a dateiff(día, hora1, hora2)
Todo dateiff('ww', hora1, hora2) cambiará a dateiff(semana, hora1, hora2)
Todo dateiff(' d', hora1, hora2) se cambiarán a dateiff(día, hora1, hora2)
En el servidor mssql, hay muchas palabras reservadas que no están disponibles en el acceso. Al importar, mssql agregará automáticamente "[nombre de campo]" a estos campos (incluidos los nombres de las tablas en la base de datos), por lo que debe modificar el script para agregar corchetes a los nombres de los campos correspondientes (o nombres de tablas), o reemplazar los campos con El nombre se cambió a una palabra reservada que no es de mssql
Cuando se utiliza el uso del tiempo en el acceso, a las personas les gusta usar declaraciones SQL como "select * from aaaa while time="&now()". Sin embargo, en No existe la función "now()" en mssql, pero se utiliza "getdate()". Por lo tanto, "now()" en todas las declaraciones SQL debe reemplazarse por "getdate()" en todas las declaraciones SQL.
Las funciones de fecha son diferentes al procesar la base de datos ACCESS, se pueden usar funciones como date() y time() Sin embargo, al procesar
base de datos SQL SERVER, solo funciones como dateiff y dateadd. se puede usar, pero no Use funciones como fecha () y hora ().
Al convertir campos relacionados con fechas, SQL SERVER usa el tipo de fecha y hora pequeña de forma predeterminada. Será mejor que lo cambiemos a fecha y hora. escriba porque el tipo de fecha y hora tiene un rango más amplio que el tipo de fecha y hora pequeña Grande. A veces, cuando usamos el tipo de fecha y hora pequeña, la conversión falla y cuando usamos el tipo de fecha y hora, la conversión tiene éxito.
isnull(rowname) debe cambiarse a rowname = null
CursorType debe cambiarse a 1, es decir, al abrir la base de datos, el primer parámetro numérico debe establecerse en 1, De lo contrario, el registro puede
aparecer incompleto. p>
Visualización incompleta
El tipo de comentarios debe usar cast(columna como varchar)
El tipo verdadero/falso no se puede usar y debe cambiarse a 1/0
Las sentencias SQL para estas dos operaciones de base de datos son diferentes. Por ejemplo: al eliminar registros en la base de datos ACCESS, use: "eliminar * del usuario donde id=10", mientras que para la base de datos SQL SERVER, use. : "eliminar usuario donde id=10".
Al procesar la base de datos ACCESS, la declaración SQL puede usar directamente algunas funciones de VB, como la función cstr (), pero al procesar la base de datos SQL SERVER, no se puede usar
El ASP original "DELETE * FROM..." debe cambiarse a "DELETE FROM....". "
Es posible que rs.update falle, cámbielo para actualizar el nombre de la tabla set field='value', para que pueda pasar (encontrado, mensaje:
Microsoft OLE Error del proveedor de base de datos para SQL Server '80040e38'
Error en la comprobación de simultaneidad optimista La fila se modificó fuera de este cursor
/Admin_ClassOrder.asp, línea 164)
p>La división puede usar "\" o "/" dentro de Access, pero solo "/" puede usarse dentro de MSSQL
1. Es necesario reescribir el campo de incremento automático. El campo de numeración automática se usa a menudo en el acceso. Después de importarlo a mssql, no incrementa automáticamente int y debe configurarse manualmente. Después de la importación, la identificación del campo de numeración automática se cambia de "no" a "sí". , "semilla" y "/". Tanto "semilla" como "incremento" deben ser "1" para numerarse automáticamente.
2. Faltan todos los valores predeterminados, principalmente tipos numéricos y tipos de fecha.
3, todos. now() , time(), date() deben cambiarse a getdate()
4, todo dateiff('d', time1, time2) debe cambiarse a dateiff(day, time1, time2)
5. Todo fechado('ww', hora1, hora2) debe cambiarse a fechado(semana, hora1, hora2)
6. time2) debe cambiarse a dateiff (día, hora1, hora2)
7. En el servidor mssql, hay muchas palabras reservadas que no están disponibles en el acceso. Surgen problemas al importar datos a mssql.
Al importar, mssql agregará automáticamente "[nombre de campo]" a estos campos (incluidos los nombres de las tablas en la base de datos), por lo que debe modificar el script para agregar corchetes a los nombres de los campos correspondientes (o nombres de tablas), o reemplazar los campos con El nombre se cambia a una palabra reservada que no es de mssql
8. Cuando usamos el acceso relacionado con el tiempo, nos gusta usar declaraciones SQL como "select * from aaaa while time="&now()". Sin embargo, , No existe la función "now()" en mssql, pero se usa "getdate()", por lo que "now()" en todas las declaraciones SQL debe reemplazarse por "getdate()" en todas las declaraciones SQL. >
9. Las funciones de fecha son diferentes en el procesamiento de la base de datos ACCESS, se pueden usar funciones como date() y time(), pero en el procesamiento de la base de datos SQL SERVER, solo se pueden usar funciones como dateiff y dateadd. del uso de fecha(), hora() y otras funciones.
10. Al realizar la conversión, SQL SERVER utiliza de forma predeterminada el tipo de fecha y hora pequeña para los campos relacionados con la fecha. El rango del tipo de fecha y hora es mayor que el del tipo de fecha y hora pequeña. A veces, cuando usamos el tipo de fecha y hora pequeña, la conversión falla, pero cuando usamos el tipo de fecha y hora, la conversión se realiza correctamente.
11, isnull(rowname) debe ser. cambiado a nombre de fila = null
12, CursorType debe cambiarse a 1, es decir, al abrir la base de datos, el primer parámetro numérico debe establecerse en 1; de lo contrario, es posible que el registro no se muestre por completo
13. El tipo de comentario debe usar conversión general (listado como varchar)
14 El tipo verdadero/falso no se puede usar como declaración SQL 1/0. funcionamiento de dos bases de datos No son iguales, por ejemplo: para eliminar registros en la base de datos ACCESS: "Eliminar registros:" "Eliminar registros:" "Eliminar registros:" "Eliminar registros:" 14. Dos bases de datos La sintaxis es diferente, por ejemplo: en la base de datos ACCESS, "eliminar * del usuario donde id=10" se usa para eliminar registros en la base de datos ACCESS, mientras que "eliminar usuario donde id=10" se usa para eliminar registros en la base de datos SQL SERVER
16 Al procesar la base de datos ACCESS, la declaración SQL puede usar directamente algunas funciones de VB, como la función cstr (), pero al procesar la base de datos SQL SERVER, no se puede usar
17. Cuando utilizamos consultas de variables de tiempo en declaraciones SQL de acceso, generalmente usamos "select * from aaaa while time=###################". fromaaaa y time=#"&nombre de variable& "#" no están disponibles en mssql. Su sintaxis es "select * from aaaaa and time='"&nombre de variable&"'"".
(Lo que significa que puede utilizar variables de fecha y hora como cadenas)
18 Cambie "BORRAR * DE..." en el ASP original a "BORRAR DE..."
19. Es posible que rs.update falle. Cámbielo para actualizar el nombre de la tabla set field='value' y pasará.
20 Puede usar "\" para acceder a las ramas internas. "/", MSSQL solo puede usar "/"
21 Cree una clave principal en SqlServer
22 Si aún hay problemas, use: rs.open sql,conn,. 3, 2 intentos
****************************** ********* ************************************************* **
Algunas experiencias en el ACCESO a la base de datos SQL SERVER
Algunas experiencias en el ACCESO a la base de datos SQL SERVER
1. Tipo de numeración automática en la base de datos. Durante la conversión, SQL Server no configuró el tipo de numeración automática en la base de datos ACCESS como tipo de numeración automática. ¡Necesitamos agregar un identificador a la declaración de creación de SQL para representar la numeración automática!
2. Al convertir campos relacionados con fechas, SQL SERVER utiliza de forma predeterminada el tipo de fecha y hora pequeña. Será mejor que lo cambiemos al tipo de fecha y hora porque el tipo de fecha y hora tiene un rango mayor que el tipo de fecha y hora pequeña. Me encontré con esta situación: cuando usé el tipo de fecha y hora pequeña, la conversión falló, pero cuando usé el tipo de fecha y hora, la conversión se realizó correctamente.
3. Las operaciones de declaración SQL de las dos bases de datos son diferentes. Por ejemplo: la declaración para eliminar registros en la base de datos ACCESS es la siguiente: %22delete * del usuario donde id=10%22, mientras que en. la base de datos SQL SERVER La declaración para eliminar registros es%22delete user donde id=10%22.10%22.
4. La función de fecha es diferente al procesar la base de datos ACCESS, funciones como date() y. Se puede usar time(), mientras que en Al procesar la base de datos SQL SERVER, solo se pueden usar funciones como dateiff y dateadd, pero no se pueden usar funciones como date() y time().
5. Cuando se trata de la base de datos ACCESS, algunas funciones de VB, como la función cstr(), se pueden usar directamente en la instrucción SQL, pero cuando se trata de la base de datos SQL SERVER, no se pueden usar. . 1. Para el campo de fecha
el acceso se expresa como: #1981-28-12#
SQLSERVER2000 se expresa como: ''1981-02-12''
2. La diferencia entre las declaraciones SQL Select y Update son similares cuando se opera una sola tabla.
Pero la diferencia entre las declaraciones UPDATE de ACCESS y SQLSERVER cuando se operan varias tablas:
ACTUALIZACIÓN de SQLSERVER La diferencia entre declaraciones al actualizar varias tablas:
ACTUALIZAR Tab1
SET a.Name = b.Name1. Al acceder a la base de datos SQL, debe crear la base de datos SQL. palabra clave y parte de configuración incremental de la tabla. El tipo de datos debe redefinirse
2. La función now() es aceptable, pero getdate() debe usarse durante el proceso de comparación de fechas
3. Se deben agregar palabras reservadas []
4. Las comillas simples y dobles deben convertirse
5 Siga el nombre de campo SQL estándar SQL20000 y debe agregarse. [nombre] de lo contrario se producirá un error
Reconfiguración de la palabra de conexión de la base de datos
p>.
5. Siga la definición de SQL estándar (la más crítica)
Mire la serie en línea MSSQLServer.
1. ACCESS tiene un tipo de numeración automática en la base de datos durante la conversión, pero SQL Server no lo configura como un tipo de numeración automática. ¡Necesitamos agregar identidad a la declaración de creación de SQL para representar la numeración automática!
2. Al convertir campos relacionados con fechas, SQL SERVER utiliza de forma predeterminada el tipo de fecha y hora pequeña. Será mejor que lo cambiemos al tipo de fecha y hora porque el tipo de fecha y hora tiene un rango mayor que el tipo de fecha y hora pequeña. Me encontré con esta situación, cuando usé el tipo de fecha y hora pequeña, la conversión falló, pero cuando usé el tipo de fecha y hora, la conversión se realizó correctamente.
3. Las operaciones de declaración SQL de las dos bases de datos son diferentes. Por ejemplo: la declaración para eliminar registros en la base de datos ACCESS es la siguiente: %22delete * del usuario donde id=10%22, mientras que en. la base de datos SQL SERVER La declaración para eliminar registros es%22delete user donde id=10%22.10%22.
4. La función de fecha es diferente al procesar la base de datos ACCESS, funciones como date() y. Se puede usar time(), mientras que en
Al procesar la base de datos de SQL SERVER, solo se pueden usar funciones como dateiff y dateadd, pero no se pueden usar funciones como date() y time().
5. En el procesamiento de la base de datos ACCESS, algunas funciones de VB, como la función cstr(), se pueden usar directamente en declaraciones SQL, pero en el procesamiento de la base de datos SQL SERVER, no se pueden usar.