Base de datos de fondo:
[Acceso a Microsoft]
y
[Servidor Microsoft SQL]
Después del reemplazo, el código ASP debe prestar atención a algunos lugares que deben modificarse:
[1] Problemas de conexión (ejemplo)
[Acceso a Microsoft]
constr = "DBQ=c:dataclwz.mdb; CONDUCTOR={Controlador de Microsoft Access (*.mdb)}"
[Servidor Microsoft SQL]
constr = "DRIVER={SQL Server};SERVER=host;DATABASE=mydata;uid=sa;pwd="
[2] Funciones similares (ejemplo)
[1]DATEDIFF(datepart, startdate, enddate)
Las opciones del parámetro "datepart" son las siguientes:
Descripción de configuración————————————
[Acceso a Microsoft]
añoaaaa
cuarto q
mes m
número de días en el año y
día
Días de la semana w
Zhou ww
horas h
minutos
segundos
[Servidor Microsoft Sql]
año aa, aaaa
cuarto qq, q
mes mm, m
día del año dy, y
día dd, d
semana semana, ww
hora hh
minuto mi, norte
segundo ss, s
milisegundo ms
----------------------
Es básicamente lo mismo, pero preste atención al escribir,
[Microsoft Access] Agregue comillas, como: dateiff('d',enddate,'2004/08/01')
[Microsoft Sql Server] no es necesario, como por ejemplo: dateiff(d,enddate,'2004/08/01')
[2][Microsoft Access] puede usar funciones de conversión de tipos de datos como cstr y
En [Microsoft Sql Server], utilice la función de conversión o transmisión, como por ejemplo:
convertir (varchar, [cantidad]), etc.
[3][Servidor Microsoft SQL]
Para obtener la hora actual, utilice getdate, etc...
[3] Declaraciones
[Servidor Microsoft SQL]
disponible
CASO
CUANDO ENTONCES
CUANDO ENTONCES
...
DEMÁS
FIN
declaración, mientras
[Acceso a Microsoft]
No compatible.
[Microsoft Access] tampoco admite la declaración entre
[Microsoft Sql Server] se puede escribir así:
[fecha] entre @fecha1 y @fecha2
[4] Tabla de consultas
[Servidor Microsoft SQL]
Se puede consultar uniendo tres o más tablas, y
[Acceso a Microsoft]
Parece que solo se pueden unir dos mesas para consulta (a confirmar por la autoridad).
Y [Microsoft Sql Server] puede usar conectores "*=" y "=*". [5] Problema de dividir por cero
[Acceso a Microsoft]
Cuando el divisor es cero, los registros relevantes se descartan automáticamente y
[Servidor Microsoft SQL]
Se informará un error y se finalizará la consulta. Eliminar código:
[Acceso a Microsoft]
Puedes escribirlo así: eliminar * de [tabla]
[Servidor Microsoft SQL]
Solo se puede escribir así: eliminar de [tabla]
Muchas veces se informará un error.
________________________________________
Fecha actual:
[Acceso a Microsoft]
Usar fecha()
[Servidor Microsoft SQL]
Usando getdate(), si la base de datos puede cambiar el tipo, puede agregar esto al código ASP:
si inStr(constr,"Microsoft Access") > 0 entonces
sqlstr=[Microsoft Access][código sql]
demás
sqlstr=[Microsoft Sql Server][código sql]
terminar si
(constr--cadena de conexión)
De esta manera, incluso si se cambia la base de datos, no es necesario cambiar la consulta de la base de datos ni actualizar el código.
Además: hay registros de campo verdaderos y falsos en el acceso, pero solo hay Smallint en SQL. En consecuencia, si hay "nombre de campo = verdadero" en el acceso, debe cambiarse a "nombre de campo = 1" en SQL.
La mayoría de los programas ASP gratuitos en Internet utilizan la base de datos de acceso. Sin embargo, la base de datos de acceso, como sistema de base de datos independiente de tamaño pequeño y mediano, a menudo se ve abrumada cuando se utiliza para aplicaciones de sitios web con grandes cantidades de visitas y datos. En general, se cree que el rendimiento de una base de datos de acceso comenzará a disminuir significativamente cuando supere los 50 M. Después de superar los 100 M, los problemas de errores y funcionamiento lento se volverán más prominentes. Aunque podemos hacer todo lo posible para optimizar desde la perspectiva del programa para mejorar el rendimiento como lo hicimos después de Dongwang 7.0, fundamentalmente no puede resolver el problema.
En este momento, quizás usar la base de datos SQL Server de Microsoft sea la forma más probable. Por supuesto, también puede usar otras bases de datos como Oracle, MySQL, etc., pero como reescritura, ya que ambas son productos de Microsoft, reescribiéndolas en SQL Server. debería ser la forma que más ahorro de mano de obra.
1. Requisitos previos para la reescritura:
se ha instalado SQL Server2000 en el sistema y se ha aplicado el parche SP3; se ha instalado Access en la suite Office; se recomienda utilizar un editor que admita la edición de texto sin formato y muestre el número de línea. Por supuesto, también se puede utilizar FrontPage2003, pero la visualización del número de línea en la versión anterior no era muy fácil de usar.
Requisitos de capacidad personal: ser capaz de comprender la sintaxis básica de ASP, acceder a operaciones de bases de datos y operaciones básicas de SQL Server Enterprise Manager.
2. En términos generales, existen dos situaciones para la preparación de la base de datos
:
1. El programa proporciona un formato de base de datos SQL: hay un archivo MDF o se proporciona un archivo de script SQL (sufijo .sql) para crear una base de datos SQL.
Si hay un archivo mdf, puede adjuntarlo directamente usando Enterprise Manager. Si se proporciona el archivo de script SQL, use Enterprise Manager para crear una base de datos SQL usted mismo y luego use el analizador de consultas en Enterprise Manager para ejecutarlo. script para crear la tabla de base de datos.
Básicamente, no es necesario reescribir la base de datos creada de esta manera.
2. La mayoría de ellos no proporcionan bases de datos SQL ni archivos de script. En este momento, debe hacerlo usted mismo. Este es también el principal problema que resuelve nuestra publicación. Generalmente, dicho programa proporcionará una base de datos de acceso, por lo que puede usar Enterprise Manager para importar la base de datos de acceso. Después de importar, debe reescribir lo siguiente:
En comparación con el acceso original, reescriba la siguiente parte:
(1) Las tablas de la base de datos SQL no tienen campos automáticos, por lo que los campos automáticos originales en el acceso se convierten en campos ordinarios y deben cambiarse manualmente al tipo de identificación, con un incremento de 1.
(2) Para todos los campos de hora, si se define un valor predeterminado, debe ser ahora() y debe cambiarse a getdate()
(3) Los valores predeterminados de los campos originales generalmente no se introducen automáticamente y deben agregarse manualmente a los campos de la tabla original.
(4) Debido a las diferentes bases de datos, muchos tipos de campos de acceso y SQL cambian después de la conversión. Por ejemplo, el campo "si" original se convertirá a bit o int, el campo de nota se convertirá a texto largo y el campo de texto. convertido a varchar, etc., en términos generales, no afectará el funcionamiento del programa. Si hay un problema, lo discutiremos en la sección de reescritura del programa a continuación.
(5) Si desea utilizar un programa For SQL que utilice procedimientos almacenados, entonces debe tener una forma de crear una base de datos SQL en el propio programa: tenga su propio archivo de base de datos SQL o, de lo contrario, utilice import; El método de base de datos de acceso no puede crear un procedimiento almacenado, por lo que será mejor que abandone esto. Para la versión del programa SQL, use la misma versión del programa Para Access, importe la base de datos de acceso y luego use el siguiente método de reescritura para cambiarla a la versión SQL. prográmate tú mismo.
3. Para reescribir la cadena de conexión,
consulte esta sección de Dongwang, que es para acceso y SQL respectivamente.
DimConnStr
Si IsSqlDataBase = 1 Entonces
'Parámetros de conexión de la base de datos SQL: nombre de la base de datos, contraseña de usuario, nombre de usuario, nombre de la conexión (use local localmente, use IP en el extranjero)
Dim Nombre de base de datos Sql, Contraseña Sql, Nombre de usuario Sql, Nombre local Sql
SqlDatabaseName = "dvbbs7"
SqlContraseña = ""
Nombre de usuario Sql = "dvbbs"
SqlLocalName = "(local)"
ConnStr = "Proveedor = Sqloledb; ID de usuario = " & SqlUsername & "; Contraseña = " & SqlPassword & "; Catálogo inicial = " & SqlDatabaseName & "; Fuente de datos = " & SqlLocalName & ";"
Demás
'Para usuarios gratuitos, modifique la dirección de la base de datos y el nombre de la base de datos en el directorio de datos en consecuencia, por ejemplo, cambie dvbbs6.mdb a dvbbs6.asp
'http://www.downcodes.com/
Db = "datos/fengerqingqing.mdb"
ConnStr = "Proveedor = Microsoft.Jet.OLEDB.4.0; Fuente de datos = " & Server.MapPath(db)
Terminar si
En caso de error Continuar siguiente
Establecer conexión = Server.CreateObject("ADODB.Connection")
conn.open ConnStr
Por supuesto, si usa SQL, la declaración de acceso se puede eliminar, es decir, después de lo contrario y antes de reanudar el error a continuación, se vuelve así:
Dim ConnStr
'Parámetros de conexión de la base de datos SQL: nombre de la base de datos, contraseña de usuario, nombre de usuario, nombre de la conexión (use local localmente, use IP en el extranjero)
Dim Nombre de base de datos Sql, Contraseña Sql, Nombre de usuario Sql, Nombre local Sql
SqlDatabaseName = "dvbbs7"
SqlContraseña = ""
Nombre de usuario Sql = "dvbbs"
SqlLocalName = "(local)"
ConnStr = "Proveedor = Sqloledb; ID de usuario = " & SqlUsername & "; Contraseña = " & SqlPassword & "; Catálogo inicial = " & SqlDatabaseName & "; Fuente de datos = " & SqlLocalName & ";"
En caso de error Continuar siguiente
Establecer conexión = Server.CreateObject("ADODB.Connection")
conn.open ConnStr
también puede ser más conciso y escribirse así:
Establecer conexión = Server.CreateObject("ADODB.Connection")
conn.open "Proveedor = Sqloledb; ID de usuario = sa; Contraseña = 1234567; Catálogo inicial = dvbbs7; Fuente de datos = (local);"
Vuelva a escribir el nombre de la base de datos, la fuente de datos, el usuario y la contraseña de acuerdo con su situación real.
4. Reescritura del programa
Hay dos situaciones:
1. Si tiene suerte y obtiene el programa For SQL, si no hay problemas en el proceso de creación de la base de datos anterior, el programa básicamente puede ejecutarse. Si hay un error, es solo un error en el programa en sí. modificarlo no se trata en esta publicación. El contenido no se describirá en detalle.
2. En la mayoría de los casos, el programa en sí es For Access. La diferencia con el programa For SQL son principalmente las declaraciones de consulta SQL utilizadas en el programa. Tenga en cuenta que las declaraciones de consulta SQL son una parte indispensable de las aplicaciones de bases de datos. La sintaxis utilizada por los programas, ya sea para SQL o para Aceess, es aproximadamente la misma, pero existen algunas diferencias sutiles que hacen que el programa no sea universal. lo que necesitamos El contenido principal de la modificación. Las partes que generalmente necesitan ser modificadas son las siguientes:
(1) El problema de la función de tiempo: la función de tiempo de la base de datos SQL es diferente de la de acceso. La función más común es obtener la hora actual. El acceso es ahora () y SQL es getdate (). Por lo tanto, siempre que se use now() en la cláusula donde, debe cambiarse a getdate(); tenga en cuenta que la función now() también debe usarse en el propio programa asp. Cualquier función now() que no se use en la base de datos. consultas o declaraciones de ejecución Asegúrese de no cambiarlo.
(2) Función de comparación de tiempo: dateiff('d','time1','time2') Este es el formato utilizado para las consultas de acceso. Estas comillas en SQl deben eliminarse. Al mismo tiempo, se puede agregar # antes y. después del formato de hora. Esto también debe eliminarse. De manera similar, esto también se refiere a la declaración SQL, y la declaración ASP debe permanecer intacta.
(3) Representación del valor nulo: en el acceso, juzgar el valor nulo generalmente se expresa mediante si ="", pero esto a menudo falla en SQL. Si encuentra un problema de error o el programa no se ejecuta normalmente, puede cambiarlo. para juzgar así: donde (el nombre es nulo)
(4) Juicio de valor verdadero y falso: puede usar = verdadero y = falso para juzgar en el acceso, pero se producirá un error en SQL. Por lo tanto, en consultas SQL o declaraciones de ejecución, este tipo de juicio debe cambiarse a = 1. y =0 respectivamente. Nota: Aunque algunos programas escriben = "true", debido a las comillas, este campo es de tipo carácter. No puedes cambiarlo a =1, simplemente mantenlo como está.
Los anteriores son los lugares más comunes para reescribir, y hay algunos que son menos comunes. Si los encuentra, puede responder aquí para discutirlos.
5. Depuración del programa
Se recomienda utilizar un editor con números de línea porque es poco probable que la reescritura anterior se realice buscando directamente el código fuente del programa y es difícil encontrarlo todo.
El método que utilizo es generalmente el siguiente: una vez completada la reescritura de la base de datos, el programa se depura directamente después de que ocurre un error, mira el mensaje de error y busca la línea de código del archivo correspondiente. Sin embargo, la causa raíz a menudo no es la siguiente. esa línea. Por ejemplo, la declaración de error es: conn.execute(sql) , pero esta oración en sí no es incorrecta. La causa del error es la cadena sql interna. Luego busque cómo se genera la cadena sql y modifíquela de acuerdo. al método de modificación del programa mencionado anteriormente.
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. Es mejor usar decimales.
Todos los valores predeterminados se pierden. Principalmente tipos numéricos y tipos de fecha.
Todo ahora(), hora(), fecha() deben cambiarse a getdate().
Todo dateiff('d', time1, time2) debe cambiarse a dateiff(day, time1, time2).
Es posible que algunos tipos verdadero/falso no se puedan utilizar y deban cambiarse a 1/0.
El tipo de comentario debe usarse mediante cast (columna como varchar).
CursorType debe cambiarse a 1, es decir, el primer parámetro numérico debe indicarse como 1 al abrir la base de datos; de lo contrario, es posible que el registro no se muestre por completo.
Alconvertir isnull(rowname) a rowname = null
, SQL Server no establece el tipo de numeración automática en la base de datos ACCESS. ¡Necesitamos agregar identidad a la declaración de creación de SQL para indicar la numeración automática!
Durante la conversión, SQL SERVER utiliza de forma predeterminada el tipo de fecha y hora pequeña para los campos relacionados con la fecha. Es mejor cambiarlo 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, cuando se utiliza el tipo de fecha y hora pequeña, la conversión falla, pero cuando se utiliza el tipo de fecha y hora, la conversión se realiza correctamente.
Las declaraciones SQL utilizadas para operar las dos bases de datos no son exactamente iguales. Por ejemplo: al eliminar registros en la base de datos ACCESS, use: "delete * from user where id=10", mientras que al eliminar la base de datos SQL SERVER, use: ". eliminar usuario donde id=10".
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 la base de datos SQL SERVER, solo funciones como dateiff y dateadd Se puede utilizar, pero no fecha(), hora() y otras funciones.
Al procesar la base de datos ACCESS, algunas funciones de VB, como la función cstr (), se pueden usar directamente en la declaración SQL, pero al procesar la base de datos SQL SERVER, no se pueden usar.
La siguiente tabla compara una base de datos de Microsoft Access (base de datos de Microsoft Access: una colección de datos y objetos, como tablas, consultas o formularios, relacionados con un tema o propósito específico. El motor de base de datos Microsoft Jet se utiliza para administrar datos). un proyecto de Microsoft Access (proyecto de Microsoft Access: archivos de acceso que se conectan a una base de datos de Microsoft SQL Server y se utilizan para crear aplicaciones cliente/servidor. El archivo del proyecto no contiene datos ni objetos basados en datos (como tablas o vistas). Las características de campo de los tipos de datos incluyen booleano, entero, largo, moneda, simple, doble, fecha, cadena y variante (predeterminado).
Tipo de datos de Microsoft Access Tipo de datos de SQL Server Sí/No (tipo de datos Sí/No: un tipo de datos de campo utilizado para campos con solo dos valores posibles (como Sí o No, Verdadero o Falso). Los valores nulos no son permitido.) bit (tipo de datos de bit: en proyectos de Access, un tipo de datos que almacena un valor de 1 o 0. Acepta valores enteros distintos de 1 y 0, pero siempre los interpreta como 1).
Número (tipo de datos numéricos: un tipo de datos de campo en las bases de datos de Microsoft Access que se utilizan para datos numéricos que se usarán en operaciones matemáticas. Sin embargo, si desea mostrar o calcular valores monetarios, debe usar el tipo de datos Moneda). (byte) tinyint (tipo de datos tinyint: un tipo de datos de un byte (8 bits) en el proyecto de Access, utilizado para almacenar números enteros que van de 0 a 255).
Número (entero) Smallint (tipo de datos Smallint: un tipo de datos de 2 bytes (16 bits) en el proyecto de Access, que almacena números entre -2^15(-32,768) y 2^15-1(32,767).)
Número (entero largo) int (tipo de datos int: un tipo de datos de 4 bytes (32 bits) en el proyecto de Access, que almacena valores entre -2^31(-2,147,483,648) y 2^31-1(2,147,483,647) número .)
Número (tipo de coma flotante de precisión simple) real (tipo de datos reales: en proyectos de Access, un tipo de datos numérico aproximado con una precisión de 7 dígitos, valores positivos que van desde 1,18E-38 a 3,40E+38, valores negativos El El rango de valores es aproximadamente de -1,18E-38 a -3,40E+38, y también puede ser 0).
(No hay tipo de datos equivalente) bigint (tipo de datos bigint: un tipo de datos de 8 bytes (64 bits) en el proyecto de Access, almacenado entre -2^63 (-9,223,372,036,854,775,808) y 2^63-1 (9,223,372,036,854,775,807)).
Número (coma flotante de doble precisión) float (tipo de datos flotantes: en proyectos de Access, un tipo de datos numérico aproximado con una precisión de 15 dígitos. El rango de valores positivos que almacena es aproximadamente de 2.23E-308 a 1.79E+ 308, el rango de valores negativos es aproximadamente de -2,23E-308 a -1,79E+308, también puede ser 0).
moneda (el tipo de datos "moneda": un tipo de datos en las bases de datos de Microsoft Access que se utilizan para cálculos relacionados con monedas o cálculos de punto fijo donde la precisión es extremadamente importante). dinero (tipo de datos dinero: en proyectos de Access, se usa para almacenar moneda Los datos tipo del valor, el rango de valores es de -922,337,203,685,477.5707 a 922,337,203,685,477.5807, la precisión es una diezmilésima parte de una unidad monetaria)
. es de - 214.748,3648 a 214.748,3647, con una precisión de una diezmilésima de unidad monetaria. Cuando se muestran los valores de moneda pequeña, se redondean a dos decimales).
Decimal/Numérico (tipo de datos decimales (base de datos de Access): tipo de datos numéricos exactos que se utilizan para almacenar valores de -10^38-1 a 10^38-1. El rango numérico (dígitos totales máximos) y la precisión (punto decimal) pueden especificarse Número máximo de dígitos a la derecha). decimal (tipo de datos decimales (proyecto de Access): tipo de datos numéricos exactos utilizados para almacenar valores de -10^38-1 a 10^38-1. Rango numérico (máximo). dígitos totales) se puede especificar número) y precisión (el número máximo de dígitos a la derecha del punto decimal).)
numérico (tipo de datos numéricos: en proyectos de Access, un tipo de datos numéricos precisos con valores de -10^38 -1 a 10^38-1 Puede especificar el rango numérico (número total máximo de dígitos) y la precisión (número máximo de dígitos a la derecha del punto decimal).
Fecha/Hora (tipo de datos "Fecha/Hora": un tipo de datos en la base de datos de Access, utilizado para almacenar información de fecha y hora). datetime (tipo de datos de fecha y hora: en proyectos de Access, el tipo de datos de fecha y hora, que van desde 1753 Del 1 de enero al 31 de diciembre de 9999, la precisión es de tres centésimas de segundo, o 3,33 milisegundos)
Smalldatetime (tipo de datos Smalldatetime: un tipo de datos de fecha y hora en el proyecto de Access, la precisión no es tan buena como la fecha y hora. Datos tipo El rango de valores de los datos es del 1 de enero de 1900 al 6 de junio de 2079, con una precisión de un minuto).
Autonumérico (tipo de datos "Autonumérico": un tipo de datos de campo en una base de datos de Microsoft Access que almacena automáticamente un número único para cada registro cuando se agrega un nuevo registro a la tabla. Se pueden generar tres tipos Número: número de secuencia, número aleatorio y sincrónico ID de replicación. ) (incrementando) int (tipo de datos int: un tipo de datos de 4 bytes (32 bits) en el proyecto de Access, almacenado en -2^31 (-2,147,483,648) y 2 ^31-1(2,147,483,647)) ( el atributo Identidad está definido).
Texto (tipo de datos "Texto": un tipo de datos de campo en una base de datos de Microsoft Access. El tipo de datos "Texto" puede contener hasta 255 caracteres, o una cantidad menor de caracteres especificados por la propiedad FieldSize). (n) varchar( n ) (tipo de datos varchar(n): un tipo de datos de longitud variable en proyectos de Access con una longitud máxima de 8000 caracteres ANSI.)
nvarchar(n) (tipo de datos nvarchar(n): en proyectos de Access, un tipo de datos de longitud variable tipo que puede contener hasta 4000 caracteres Unicode. Los caracteres Unicode ocupan dos bytes por carácter y admiten todos los caracteres internacionales).
Comentarios (tipo de datos "Observaciones": un tipo de datos de campo en la base de datos de Microsoft Access. El campo "Observaciones" puede contener hasta 65,535 caracteres). texto (tipo de datos de texto: un tipo de datos de longitud variable en el proyecto de Access, puede almacenar hasta 2^31-1(2,147,483,647) caracteres; la longitud predeterminada es 16).
Objeto OLE (tipo de datos "Objeto OLE": uno de los tipos de datos para campos utilizados en objetos creados en otras aplicaciones que se pueden vincular o incrustar (insertar) en una base de datos de Access). imagen (tipo de datos de imagen: en Access en el proyecto , un tipo de datos de longitud variable puede almacenar hasta 2^31-1 (2,147,483,647) bytes de datos binarios. El tipo de datos de imagen se utiliza para almacenar BLOB (objetos binarios grandes), como imágenes, documentos, sonidos y archivos. código compilado.)
ID de replicación sincrónica (también conocido como Identificador único global (GUID): en las bases de datos de Access, un campo de 16 bytes se usa para establecer un identificador único para la replicación sincrónica. Los GUID se usan para identificar réplicas, conjuntos de réplicas, tablas, registros y otros objetos. Base de datos de Access, GUID se refiere al ID de replicación sincrónica (GUID)) identificador único (tipo de datos de identificador único: en proyectos de Access, identificador único global (GUID) de 16 bytes). (Aplicable solo a SQL Server 7.0 o superior. Versión superior)
hipervínculo (tipo de datos "hipervínculo": el tipo de datos del campo de la base de datos de Access que almacena direcciones de hipervínculo. Las direcciones pueden contener hasta cuatro partes y están escritas en el siguiente formato de sintaxis: texto de visualización#dirección#subdirección#.) char (tipo de datos char : en proyectos de Access, un tipo de datos de longitud fija que puede contener hasta 8000 caracteres ANSI ),
nchar (tipo de datos nchar: en proyectos de Access, un tipo de datos de longitud fija que puede contener hasta 4000 caracteres Unicode. Unicode Cada El carácter ocupa dos bytes y admite todos los caracteres internacionales), varchar, nvarchar (el atributo Hipervínculo está establecido en Sí).
(Sin tipo de datos equivalente) varbinary (tipo de datos varbinary: un tipo de datos de longitud variable en proyectos de Access que puede almacenar hasta 8000 bytes de datos binarios).
(No hay tipo de datos equivalente) Smallint (tipo de datos Smallint: un tipo de datos de 2 bytes (16 bits) en el proyecto de Access, almacenado entre -2^15(-32,768) y 2^15-1(32,767)).
(No hay tipo de datos equivalente) marca de tiempo (tipo de datos de marca de tiempo: en proyectos de Access, un tipo de datos que se actualiza automáticamente cada vez que se inserta o actualiza una fila. El valor en la columna de marca de tiempo no son datos de fecha y hora, sino binario(8) o varbinary (8), indicando el orden de modificación de los datos).
(sin tipo de datos equivalente) charnchar
(Sin tipo de datos equivalente) sql_variant (tipo de datos sql_variant: un tipo de datos en el proyecto de Access que almacena valores de múltiples tipos de datos distintos de los tipos text, ntext, image, timestamp y sql_variant. En columnas, parámetros, variables o utilizados en el valor de retorno de una función definida por el usuario).
(Sin tipo de datos equivalente) Definido por el usuario (Tipo de datos definido por el usuario: en una base de datos de Microsoft SQL Server, el usuario puede definir la definición de tipo de los datos contenidos en una columna utilizando definiciones de tipos de datos existentes en el sistema. Reglas y los valores predeterminados solo se pueden vincular a Definido a un tipo de datos definido por el usuario)
Nota En un proyecto de Access o una base de datos de SQL Server, el prefijo "n" significa "país/región", lo que significa que este tipo de datos está habilitado para Unicode. . En las bases de datos de Access, todas las columnas de texto están habilitadas para Unicode de forma predeterminada.
Problemas a los que debe prestar atención al convertir ACCESS a SQL
2006-2-13 16:01:20
Muchos amigos quieren utilizar los métodos de programación de bases de datos SQL2000, pero sufren porque están aprendiendo ACCESS y solo tienen un poco de comprensión de SQL. Aquí les proporciono la siguiente referencia: Métodos y precauciones para convertir ACCESS a SQL2000. En primer lugar, estoy hablando de convertir entre ACCESS2000 y SQL2000. Aún no he probado los otros. Espero que puedas experimentar más, y debe haber una manera;
2. Método de conversión
1. Abra "Fuente de base de datos" en "Herramientas administrativas" en "Panel de control";
2. Haga clic en "Agregar" para agregar una nueva fuente de datos y seleccione "DriverdomicrosoftAccess" en la columna de selección.
(*.mdb)", aparecerá un cuadro después de completar.
Ingrese el nombre que desea escribir en "Fuente de la base de datos". Lo llamé "ABC", lo que indica que no es necesario completarlo. Luego, presione la selección a continuación para encontrar la dirección y selección de su base de datos (tenga en cuenta que primero haga una copia de seguridad de su base de datos de ACCESS) y luego confirme.
La fuente de datos se crea aquí y lo único que queda es la conversión.
3. Abra SQL2000 Enterprise Manager, ingrese a la base de datos y cree una nueva base de datos vacía "ABC";
4. Seleccione la base de datos recién creada, haga clic con el botón derecho del mouse, seleccione "Importar datos" en "Todas las tareas" y haga clic en "Siguiente" para continuar;
5. Seleccione "DriverdoMicrosoft Access (*.mdb)" en la lista desplegable de origen de la base de datos. En "Usuario/DSN del sistema", seleccione el "ABC" que acaba de agregar y haga clic en "Siguiente".
6. No es necesario modificar el "Propósito" Seleccione el servidor (generalmente su propia máquina "local", también puede seleccionar la dirección del servidor o la dirección LAN para determinar si sus permisos pueden funcionar), "Usar autenticación de WINDOWS" significa usar. Para la operación de identidad del administrador de su propio sistema, se puede utilizar "Usar verificación de operación de identidad SQL" para las operaciones del sitio web, y se recomienda lo último;
7. Después de seleccionar "Usar verificación de operación de identidad SQL", complete su nombre de usuario y contraseña. Elegí los números predeterminados del sistema "sa" y "****" Para la base de datos, seleccione el "ABC" recién creado y presione. " Siguiente paso";
8. Hay dos opciones únicas en este paso, "Copiar tablas y vistas de la fuente de datos" y "Usar un comando de consulta para especificar los datos que se transferirán". Seleccione la primera y haga clic en "Siguiente" para continuar;
9. Las tablas de su propia base de datos de ACCESS aparecerán aquí. Haga clic en "Seleccionar todo" y vaya al siguiente paso;
10. "Asistente de importación/exportación DTS", vea que "Ejecutar ahora" esté seleccionado y haga clic en "Siguiente".
11. Presione "Finalizar" para continuar;
12. En este paso, verá que sus datos se importan a SQL2000. Cuando aparezcan las palabras "XXX tablas se han importado exitosamente a la base de datos" y hay marcas verdes delante de todas las tablas, significa que todos los datos se han importado.
.
En este momento, debe regresar y verificar si su operación es correcta.
Modificación de datos.
1. Dado que no existe una "numeración automática" en SQL2000, los campos que establezca con "numeración automática" se convertirán en campos no vacíos. En este caso, deberá modificar estos campos manualmente y seleccionar "Sí" para "Marcar". la semilla es "1", el incremento es "1",
2. Además, después de convertir ACCESS2000 a SQL2000, los campos con el atributo original "sí/no" se convertirán en un "bit" no vacío. En este momento, deberá modificarlo al atributo que desee;
3. Además, todos deben prestar atención a la comprensión de las funciones de tiempo. Existen muchas diferencias entre ACCESS y SQL.
4. Cuestiones de campo relacionadas
1. Al convertir el tipo de numeración automática en la base de datos ACCESS, sqlserver no lo configuró en el tipo de numeración automática. ¡Necesitamos agregar identidad a la declaración de creación de SQL para indicar la numeración automática!
2. Durante la conversión, SQLSERVER utiliza de forma predeterminada el tipo de fecha y hora pequeña para los campos relacionados con la fecha. Es mejor cambiarlo 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. Encontré 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 fue exitosa.
3. Las declaraciones SQL utilizadas para operar las dos bases de datos no son exactamente iguales. Por ejemplo: cuando elimine registros en la base de datos ACCESS, use: "delete*fromuserwhereid=10", pero cuando elimine la base de datos SQLSERVER, use: "deleteuserwhereid=. 10".
4. Las funciones de fecha son diferentes cuando se procesa la base de datos ACCESS, se pueden usar funciones como date() y time() Sin embargo, cuando se procesa la base de datos SQLSERVER, solo se pueden usar funciones como dateiff y dateadd, pero no date. (), tiempo () y otras funciones.
5. Al procesar la base de datos ACCESS, algunas funciones de VB, como la función cstr (), se pueden usar directamente en la instrucción SQL, pero al procesar la base de datos SQLSERVER, no se pueden usar.
5. Es necesario reescribir los problemas relacionados con las declaraciones y los campos que se agregan automáticamente. El campo de numeración automática que se usa a menudo en el acceso no es un int de incremento automático después de importarlo a mssql. Debe configurarse manualmente. Cambie el "no" del campo de numeración automática importado a "sí" y "semilla". . y "cantidad de incremento" son ambos "1" para convertirse en un número automático.
Todos los valores predeterminados se pierden. Principalmente tipos numéricos y tipos de fecha.
Todo ahora(), hora() y fecha() deben cambiarse a getdate()
Todo dateiff('d',time1,time2) debe cambiarse a dateiff(day,time1,time2)
Todo dateiff('ww',time1,time2) debe cambiarse a dateiff(week,time1,time2)
Todo dateiff('d',time1,time2) debe cambiarse a dateiff(day,time1,time2)
En mssqlserver, hay muchas palabras reservadas que no están disponibles en el acceso. Cuando importa datos a mssql, surgen problemas. Cuando se importa mssql, agregará automáticamente "[nombre de campo]" a estos campos (incluidos los nombres de las tablas en la base de datos). Por lo tanto, debe modificar su secuencia de comandos y agregar los nombres de los campos correspondientes (o nombres de tablas, o cambiarlos). el nombre del campo a una palabra reservada que no sea mssql
Cuando se usa el acceso para usar el tiempo, a todos les gusta usar declaraciones SQL como "select*fromaaaa whiletime="&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()".
Las funciones de fecha son diferentes al procesar la base de datos ACCESS, se pueden usar funciones como fecha() y hora(), pero para.
En el procesamiento de bases de datos SQLSERVER, solo se pueden usar funciones como dateiff y dateadd, pero no se pueden usar funciones como date() y time().
Durante la conversión, SQLSERVER utiliza de forma predeterminada el tipo de fecha y hora pequeña para los campos relacionados con la fecha. Será mejor que lo cambiemos al tipo de fecha y hora.