Banco de dados de back-end:
[Microsoft Access]
e
[Microsoft SQL Server]
Após a substituição, o código ASP deve ficar atento a alguns locais que precisam ser modificados:
[1] Problemas de conexão (exemplo)
[Microsoft Access]
constr = "DBQ=c:dataclwz.mdb; DRIVER={Driver Microsoft Access (*.mdb)}"
[Microsoft SQL Server]
constr = "DRIVER={SQL Server};SERVER=host;DATABASE=mydata;uid=sa;pwd="
[2] Funções semelhantes (exemplo)
[1]DATEDIFF(datepart, startdate, enddate)
As opções do parâmetro "datepart" são as seguintes:
Descrição da configuração————————
[Microsoft Access]
anoaaaa
trimestre q
mês m
número de dias no ano y
dia
Dias da semana w
Zhou ww
horas h
minutos
segundos
[Microsoft SQL Server]
ano aa, aaaa
trimestre qq, q
mês mm, m
dia do ano, dy, y
dia dd, d
semana sem, ww
hora hh
minuto mi, n
segundo ss, s
milissegundo ms
----------------------
É basicamente a mesma coisa, mas preste atenção ao escrever,
[Microsoft Access] Adicione aspas, como: datediff('d',enddate,'2004/08/01')
[Microsoft Sql Server] não é necessário, como: datediff(d,enddate,'2004/08/01')
[2][Microsoft Access] pode usar funções de conversão de tipo de dados, como cstr e
No [Microsoft Sql Server], use a função convert ou cast, como:
converter(varchar,[quantidade]) etc.
[3][Microsoft Sql Server]
Para obter a hora atual, use getdate, etc...
[3] Declarações
[Microsoft SQL Server]
disponível
CASO
QUANDO ENTÃO
QUANDO ENTÃO
...
OUTRO
FIM
declaração, enquanto
[Microsoft Access]
Não suportado.
[Microsoft Access] também não oferece suporte à instrução entre
[Microsoft Sql Server] pode ser escrito assim:
[data] entre @data1 e @data2
[4] Tabela de consulta
[Microsoft SQL Server]
Pode ser consultado juntando três ou mais tabelas, e
[Microsoft Access]
Parece que apenas duas tabelas podem ser unidas para consulta (a confirmar pela autoridade).
E [Microsoft Sql Server] pode usar conectores "*=" e "=*". [5] Problema de divisão por zero
[Microsoft Access]
Quando o divisor é zero, os registros relevantes são automaticamente descartados e
[Microsoft SQL Server]
Um erro será relatado e a consulta será encerrada. Excluir código:
[Microsoft Access]
Você pode escrever assim: delete * from [table]
[Microsoft SQL Server]
Só pode ser escrito assim: delete from [table]
Muitas vezes um erro será relatado
________________________________________
Data atual:
[Microsoft Access]
Usar data()
[Microsoft SQL Server]
Usando getdate(), se o banco de dados puder alterar o tipo, você poderá adicionar isto ao código ASP:
se inStr(constr,"Microsoft Access") > 0 então
sqlstr=[Microsoft Access][código sql]
outro
sqlstr=[Microsoft Sql Server][código sql]
terminar se
(constr--string de conexão)
Dessa forma, mesmo que o banco de dados seja alterado, não há necessidade de alterar a consulta do banco de dados e atualizar o código.
Além disso: existem registros de campo verdadeiros e falsos no acesso, mas existem apenas smallint no sql. Da mesma forma, se houver "nome do campo = verdadeiro" no acesso, ele deve ser alterado para "nome do campo = 1" no sql.
A maioria dos programas ASP gratuitos na Internet usa o banco de dados de acesso. No entanto, o banco de dados de acesso, como um sistema de banco de dados independente de pequeno e médio porte, costuma ficar sobrecarregado quando usado para aplicativos de sites com grandes quantidades de visitas e dados. Geralmente, acredita-se que o desempenho de um banco de dados de acesso começará a diminuir significativamente quando exceder 50M. Depois de exceder 100M, os problemas de erros e operação lenta se tornarão mais proeminentes. Embora possamos tentar o nosso melhor para otimizar do ponto de vista do programa para melhorar o desempenho, como fizemos após o Dongwang 7.0, isso não pode resolver o problema fundamentalmente.
Neste momento, talvez usar o banco de dados SQL Server da Microsoft seja a maneira mais provável. Claro, você também pode usar outros bancos de dados como Oracle, MySQL, etc., mas como uma reescrita, já que ambos são produtos da Microsoft, reescrevendo no SQL Server. deve ser a maneira mais econômica.
1. Pré-requisitos para reescrita:
SQL Server2000 foi instalado no sistema e o patch SP3 foi aplicado; o Access no pacote Office foi instalado; é claro que o FrontPage2003 também pode ser usado, mas a exibição do número da linha na versão anterior não era muito fácil de usar.
Requisitos de habilidade pessoal: Ser capaz de compreender a sintaxe ASP básica, acessar operações de banco de dados e operações básicas do SQL Server Enterprise Manager.
2. De modo geral, existem duas situações para preparação de banco de dados
:
1. O programa fornece um formato de banco de dados SQL: há um arquivo MDF ou é fornecido um arquivo de script SQL (sufixo .sql) para criar um banco de dados SQL.
Se houver um arquivo mdf, você poderá anexá-lo diretamente usando o Enterprise Manager. Se o arquivo de script sql for fornecido, use o Enterprise Manager para criar você mesmo um banco de dados sql e, em seguida, use o analisador de consulta no Enterprise Manager para executar o arquivo. script para criar a tabela do banco de dados.
O banco de dados estabelecido desta forma basicamente não precisa ser reescrito.
2. A maioria deles não fornece banco de dados SQL ou arquivos de script. No momento, você mesmo precisa fazer isso. Este também é o principal problema que nossa postagem resolve. Geralmente, esse programa fornecerá um banco de dados de acesso, então você pode usar o Enterprise Manager para importar o banco de dados de acesso. Após a importação, você precisa reescrever o seguinte:
Comparado com o acesso original, reescreva a seguinte parte:
(1) As tabelas do banco de dados SQL não possuem campos automáticos, portanto os campos automáticos originais no acesso são convertidos em campos comuns e precisam ser alterados manualmente para o tipo de identificação, com incremento de 1.
(2) Para todos os campos de hora, se um valor padrão for definido, ele deve ser now() e precisa ser alterado para getdate()
(3) Os valores padrão dos campos originais geralmente não são introduzidos automaticamente e precisam ser adicionados manualmente aos campos da tabela original.
(4) Devido a diferentes bancos de dados, muitos tipos de campo de acesso e sql mudam após a conversão. Por exemplo, o campo "se" original será convertido em bit ou int, o campo memo será convertido em texto longo, o campo de texto será. convertido para varchar, etc., de modo geral, não afetará a operação do programa. Se houver um problema, discutiremos isso na seção de reescrita do programa abaixo.
(5) Se você deseja usar um programa For SQL que usa procedimentos armazenados, então você deve ter uma maneira de criar um banco de dados SQL no próprio programa: tenha seu próprio arquivo de banco de dados SQL ou script sql, caso contrário, use import O; O método de banco de dados de acesso não pode criar um procedimento armazenado, então é melhor abandonar esta versão do programa For SQL, usar a mesma versão do programa For Access, importar o banco de dados de acesso e, em seguida, usar o seguinte método de reescrita para alterá-lo para a versão SQL programe-se.
3. Para reescrever a string de conexão,
consulte esta seção do Dongwang, que é para acesso e SQL, respectivamente.
DimConnStr
Se IsSqlDataBase = 1 Então
'parâmetros de conexão do banco de dados sql: nome do banco de dados, senha do usuário, nome do usuário, nome da conexão (use local localmente, use IP no exterior)
Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName
SqlDatabaseName = "dvbbs7"
SQLPassword = ""
SqlUsername = "dvbbs"
SqlLocalName = "(local)"
ConnStr = "Provider = Sqloledb; ID do usuário = " & SqlUsername & "; Senha = " & SqlPassword & "; Catálogo inicial = " & SqlDatabaseName & "; Fonte de dados = " & SqlLocalName & ";"
Outro
'Para usuários gratuitos, modifique o endereço do banco de dados e o nome do banco de dados no diretório de dados de acordo, por exemplo, altere dvbbs6.mdb para dvbbs6.asp
'http://www.downcodes.com/
Db = "dados/fengerqingqing.mdb"
ConnStr = "Provider = Microsoft.Jet.OLEDB.4.0; Fonte de dados = " & Server.MapPath (db)
Terminar se
Em caso de erro, retomar o próximo
Definir conexão = Server.CreateObject("ADODB.Connection")
conn.open ConnStr
Claro, se você usar SQL, a instrução de acesso pode ser deletada, ou seja, depois do else e antes do erro continuar próximo, fica assim:
Dim ConnStr
'parâmetros de conexão do banco de dados sql: nome do banco de dados, senha do usuário, nome do usuário, nome da conexão (use local localmente, use IP no exterior)
Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName
SqlDatabaseName = "dvbbs7"
SQLPassword = ""
SqlUsername = "dvbbs"
SqlLocalName = "(local)"
ConnStr = "Provider = Sqloledb; ID do usuário = " & SqlUsername & "; Senha = " & SqlPassword & "; Catálogo inicial = " & SqlDatabaseName & "; Fonte de dados = " & SqlLocalName & ";"
Em caso de erro, retomar o próximo
Definir conexão = Server.CreateObject("ADODB.Connection")
conn.open ConnStr
também pode ser mais conciso e escrito assim:
Definir conexão = Server.CreateObject("ADODB.Connection")
conn.open "Provedor = Sqloledb; ID do usuário = sa; Senha = 1234567; Catálogo inicial = dvbbs7; Fonte de dados = (local);"
Reescreva o nome do banco de dados, a fonte de dados, o usuário e a senha de acordo com sua situação real.
4. Reescrita do programa
Existem duas situações:
1. Se você tiver sorte e obtiver o programa For SQL, se não houver problemas no processo de criação do banco de dados acima, o programa poderá basicamente ser executado. Se houver um erro, é apenas um bug no próprio programa. modificá-lo não é discutido neste post. O conteúdo não será descrito em detalhes.
2. Na maioria dos casos, o próprio programa é For Access. A diferença do programa For SQL são principalmente as instruções de consulta SQL usadas no programa. Observe que as instruções de consulta SQL são uma parte indispensável dos aplicativos de banco de dados. A sintaxe usada pelos programas, seja para SQL ou para Aceess, é praticamente a mesma, mas existem algumas diferenças sutis. o que precisamos O conteúdo principal da modificação. As partes que geralmente precisam ser modificadas são as seguintes:
(1) O problema da função de tempo: A função de tempo do banco de dados SQL é diferente daquela de acesso. A função mais comum é obter a hora atual. O acesso é agora () e o SQL é getdate (). Portanto, sempre que now() for usado na cláusula where, ele deverá ser alterado para getdate(); observe que a função now() também deve ser usada no próprio programa asp. Qualquer função now() que não seja usada no banco de dados. consultas ou instruções de execução Certifique-se de não alterá-las.
(2) Função de comparação de tempo: datediff('d','time1','time2') Este é o formato usado para consultas de acesso. Essas aspas no SQL devem ser removidas. após o formato da hora. Isso também precisa ser removido. Da mesma forma, isso também se refere à instrução sql, e a instrução asp deve permanecer intacta.
(3) Representação do valor nulo: No acesso, o julgamento do valor nulo geralmente é expresso por se = "", mas isso geralmente dá errado no SQL. Se você encontrar um problema de erro ou o programa não funcionar normalmente, você pode alterá-lo. julgar assim: onde (nome é nulo)
(4) Julgamento de valor verdadeiro e falso: Você pode usar =true e =false para julgar o acesso, mas ocorrerá um erro no SQL. Portanto, na consulta SQL ou na instrução de execução, esse tipo de julgamento deve ser alterado para =1. e =0 respectivamente. Nota: Embora alguns programas escrevam = "true", devido às aspas, este campo é do tipo caractere. Você não pode alterá-lo para =1, apenas mantenha-o como está.
Os itens acima são os lugares mais comuns para reescrever e há alguns que são menos comuns. Se você os encontrar, poderá responder aqui para discuti-los.
5. Depuração do programa
Recomenda-se usar um editor com números de linha porque é improvável que a reescrita acima seja feita pesquisando diretamente o código-fonte do programa e é difícil encontrar tudo.
O método que adoto é geralmente o seguinte: após a conclusão da reescrita do banco de dados, o programa é depurado diretamente. Após a ocorrência de um erro, observe a mensagem de erro e encontre a linha de código do arquivo correspondente. essa linha. Por exemplo, a instrução de erro é: conn.execute(sql) , mas esta frase em si não está errada. A causa do erro é a string sql dentro. ao método de modificação do programa mencionado acima.
Após a importação do banco de dados, os campos adicionados automaticamente precisam ser reescritos e o comprimento de todos os tipos numéricos precisa ser aumentado. É melhor usar decimal.
Todos os valores padrão são perdidos. Principalmente tipos numéricos e tipos de data.
Todos now(), time(), date() devem ser alterados para getdate().
Todos os datediff('d', time1, time2) devem ser alterados para datediff(day, time1, time2).
É possível que alguns tipos verdadeiro/falso não possam ser usados e devam ser alterados para 1/0.
O tipo de observação deve ser usado por meio de cast (coluna como varchar).
CursorType precisa ser alterado para 1, ou seja, o primeiro parâmetro numérico deve ser dado como 1 ao abrir o banco de dados, caso contrário o registro poderá não ser exibido por completo.
Aoconverter isnull(rowname) para rowname = null
, o tipo de numeração automática no banco de dados ACCESS não é definido como o tipo de numeração automática pelo SQL Server. Precisamos adicionar identidade à instrução de criação SQL para indicar a numeração automática!
Durante a conversão, o padrão do SQL SERVER é o tipo smalldatetime para campos relacionados a data. É melhor alterá-lo para o tipo datetime, porque o tipo datetime tem um intervalo maior que o tipo smalldatetime. Às vezes, ao usar o tipo smalldatetime, a conversão falha, mas ao usar o tipo datetime, a conversão é bem-sucedida.
As instruções SQL utilizadas para operar os dois bancos de dados não são exatamente iguais. Por exemplo: ao excluir registros no banco de dados ACCESS, use: "delete * from user where id=10", enquanto ao excluir o banco de dados SQL SERVER, use: ". delete user where id=10".
As funções de data são diferentes. Ao processar o banco de dados ACCESS, funções como date() e time() podem ser usadas. No entanto, ao processar o banco de dados SQL SERVER, apenas funções como datediff e dateadd pode ser usado, mas não date(), time() e outras funções.
Ao processar o banco de dados ACCESS, algumas funções VB, como a função cstr(), podem ser usadas diretamente na instrução sql, mas ao processar o banco de dados SQL SERVER, elas não podem ser usadas.
A tabela a seguir compara um banco de dados Microsoft Access (banco de dados Microsoft Access: uma coleção de dados e objetos, como tabelas, consultas ou formulários, relacionados a um tópico ou propósito específico. O mecanismo de banco de dados Microsoft Jet é usado para gerenciar dados.) e um projeto do Microsoft Access (projeto do Microsoft Access: arquivos de acesso que se conectam a um banco de dados do Microsoft SQL Server e são usados para criar aplicativos cliente/servidor. O arquivo de projeto não contém dados ou objetos baseados em dados (como tabelas ou exibições). As características de campo dos tipos de dados incluem Booleano, Inteiro, Longo, Moeda, Único, Duplo, Data, String e Variante (padrão)).
Tipo de dados do Microsoft Access Tipo de dados do SQL Server Sim/Não (tipo de dados Sim/Não: um tipo de dados de campo usado para campos com apenas dois valores possíveis (como Sim ou Não, Verdadeiro ou Falso). Valores nulos não são permitido.) bit (tipo de dados bit: em projetos do Access, um tipo de dados que armazena um valor de 1 ou 0. Aceita valores inteiros diferentes de 1 e 0, mas sempre os interpreta como 1.)
Número (Tipo de dados numérico: um tipo de dados de campo nos bancos de dados do Microsoft Access usado para dados numéricos que serão usados em operações matemáticas. No entanto, se desejar exibir ou calcular valores monetários, você deverá usar o tipo de dados Moeda.) (byte) tinyint (tipo de dados tinyint: um tipo de dados de um byte (8 bits) no projeto Access, usado para armazenar números inteiros variando de 0 a 255.)
Número (inteiro) smallint (tipo de dados smallint: um tipo de dados de 2 bytes (16 bits) no projeto Access, armazenando números entre -2^15(-32,768) e 2^15-1(32,767) .)
Número (inteiro longo) int (tipo de dados int: um tipo de dados de 4 bytes (32 bits) no projeto Access, armazenando valores entre -2^31(-2.147.483.648) e 2^31-1(2.147.483.647) número .)
Número (tipo de ponto flutuante de precisão simples) real (tipo de dados real: em projetos do Access, um tipo de dados numérico aproximado com precisão de 7 dígitos, valores positivos variando de 1,18E-38 a 3,40E+38, valores negativos O o intervalo de valores é aproximadamente de -1,18E-38 a -3,40E+38 e também pode ser 0).
(Nenhum tipo de dados equivalente) bigint (tipo de dados bigint: um tipo de dados de 8 bytes (64 bits) no projeto do Access, armazenado entre -2^63 (-9.223.372.036.854.775.808) e 2^63-1 (9.223.372.036.854.775.807) ).
Número (ponto flutuante de precisão dupla) float (tipo de dados float: em projetos do Access, um tipo de dados numérico aproximado com precisão de 15 dígitos. O intervalo de valores positivos que ele armazena é aproximadamente de 2,23E-308 a 1,79E+ 308, o intervalo de valores negativos é aproximadamente de -2,23E-308 a -1,79E+308, também pode ser 0).
moeda (o tipo de dados "moeda": um tipo de dados nos bancos de dados do Microsoft Access usado para cálculos relacionados a moeda ou cálculos de ponto fixo onde a precisão é extremamente importante.) dinheiro (tipo de dados dinheiro: em projetos do Access, usado para armazenar moeda Os dados tipo de valor, o intervalo de valor é de -922.337.203.685.477,5707 a 922.337.203.685.477.5807, a precisão é um décimo milésimo de uma unidade monetária.)
smallmoney (tipo de dados smallmoney: um tipo de dados que armazena valores de moeda no projeto Access, o intervalo de valores é de -214.748,3648 a 214.748,3647, com precisão de um décimo milésimo de unidade monetária. Quando valores pequenos em dinheiro são exibidos, eles são arredondados para duas casas decimais.)
Decimal/Numérico (tipo de dados decimal (banco de dados Access): Tipo de dados numérico exato usado para armazenar valores de -10^38-1 a 10^38-1. Faixa numérica (total máximo de dígitos) e precisão (ponto decimal) podem ser especificado Número máximo de dígitos à direita) decimal (tipo de dados decimal (projeto Access): Tipo de dados numérico exato usado para armazenar valores de -10 ^ 38-1 a 10 ^ 38-1. Faixa numérica (máximo). total de dígitos) pode ser especificado número) e precisão (o número máximo de dígitos à direita do ponto decimal).)
numérico (tipo de dados numéricos: em projetos do Access, um tipo de dados numérico preciso com valores de -10 ^ 38 -1 a 10 ^ 38-1 Pode especificar o intervalo numérico (número total máximo de dígitos) e a precisão (número máximo de dígitos à direita do ponto decimal).
Data/Hora (tipo de dados "Data/Hora": um tipo de dados no banco de dados do Access, usado para armazenar informações de data e hora.) datetime (tipo de dados datetime: em projetos do Access, o tipo de dados de data e hora, variando de 1753 De 1º de janeiro a 31 de dezembro de 9999, a precisão é de três centésimos de segundo, ou 3,33 milissegundos)
smalldatetime (tipo de dados smalldatetime: um tipo de dados de data e hora no projeto Access, a precisão não é tão boa quanto a data e hora. Dados tipo O intervalo de valores dos dados é de 1º de janeiro de 1900 a 6 de junho de 2079, com precisão de um minuto).
AutoNumber (tipo de dados "AutoNumber": um tipo de dados de campo em um banco de dados Microsoft Access que armazena automaticamente um número exclusivo para cada registro quando um novo registro é adicionado à tabela. Três tipos podem ser gerados Número: número de sequência, número aleatório e síncrono ID de replicação. ) (incrementando) int (tipo de dados int: um tipo de dados de 4 bytes (32 bits) no projeto do Access, armazenado em -2^31 (-2.147.483.648) e 2 ^31-1(2.147.483.647)) ( o atributo Identidade é definido).
Texto (tipo de dados "Texto": um tipo de dados de campo em um banco de dados Microsoft Access. O tipo de dados "Texto" pode conter até 255 caracteres ou um número menor de caracteres especificado pela propriedade FieldSize.) (n) varchar( n ) (tipo de dados varchar(n): um tipo de dados de comprimento variável em projetos do Access com comprimento máximo de 8.000 caracteres ANSI.)
nvarchar(n) (tipo de dados nvarchar(n): em projetos do Access, um tipo de dados de comprimento variável tipo que pode conter até 4.000 caracteres Unicode. Os caracteres Unicode ocupam dois bytes por caractere e suportam todos os caracteres internacionais.)
Comentários (Tipo de dados "Observações": um tipo de dados de campo no banco de dados Microsoft Access. O campo "Comentários" pode conter até 65.535 caracteres.) texto (tipo de dados de texto: um tipo de dados de comprimento variável no projeto Access, pode armazenar até 2 ^ 31-1 (2.147.483.647) caracteres; o comprimento padrão é 16).
Objeto OLE (Tipo de dados "Objeto OLE": um dos tipos de dados para campos usados em objetos criados em outros aplicativos que podem ser vinculados ou incorporados (inseridos) em um banco de dados Access.) imagem (tipo de dados de imagem: No Access No projeto , um tipo de dados de comprimento variável pode armazenar até 2 ^ 31-1 (2.147.483.647) bytes de dados binários. O tipo de dados de imagem é usado para armazenar BLOB (objetos binários grandes), como imagens, documentos, sons e arquivos. código compilado.)
ID de replicação síncrona (também conhecido como identificador exclusivo global (GUID): em bancos de dados do Access, um campo de 16 bytes usado para estabelecer um identificador exclusivo para replicação síncrona. GUIDs são usados para identificar réplicas, conjuntos de réplicas, tabelas, registros e outros objetos. Em Banco de dados do Access, GUID refere-se ao ID de replicação síncrona (GUID)) identificador exclusivo (tipo de dados identificador exclusivo: em projetos do Access, identificador exclusivo global (GUID) de 16 bytes.) (Aplicável apenas ao SQL Server 7.0 ou superior. versão superior)
hiperlink (tipo de dados "hiperlink": o tipo de dados do campo do banco de dados Access que armazena endereços de hiperlink. Os endereços podem conter até quatro partes e são escritos no seguinte formato de sintaxe: displaytext#address#subaddress#.) char (tipo de dados char : em projetos do Access, um tipo de dados de comprimento fixo que pode conter até 8.000 caracteres ANSI),
nchar (tipo de dados nchar: em projetos do Access, um tipo de dados de comprimento fixo que pode conter até 4.000 caracteres Unicode. Unicode Cada. ocupa dois bytes e suporta todos os caracteres internacionais), varchar, nvarchar (o atributo Hyperlink está definido como Sim).
(Nenhum tipo de dados equivalente) varbinary (tipo de dados varbinary: um tipo de dados de comprimento variável em projetos do Access que pode armazenar até 8.000 bytes de dados binários.)
(Nenhum tipo de dados equivalente) smallint (tipo de dados smallint: um tipo de dados de 2 bytes (16 bits) no projeto do Access, armazenado entre -2^15(-32,768) e 2^15-1(32,767) ).
(Nenhum tipo de dados equivalente) timestamp (tipo de dados timestamp: em projetos do Access, um tipo de dados que é atualizado automaticamente sempre que uma linha é inserida ou atualizada. O valor na coluna timestamp não são dados de data e hora, mas binários(8) ou varbinary (8), indicando a ordem de modificação dos dados).
(sem tipo de dados equivalente) charnchar
(Sem tipo de dados equivalente) sql_variant (tipo de dados sql_variant: um tipo de dados no projeto Access que armazena valores de vários tipos de dados diferentes dos tipos text, ntext, image, timestamp e sql_variant. Em colunas, parâmetros, variáveis ou usados em o valor de retorno de uma função definida pelo usuário).
(Nenhum tipo de dados equivalente) Definido pelo usuário (Tipo de dados definido pelo usuário: em um banco de dados Microsoft SQL Server, a definição de tipo dos dados contidos em uma coluna pode ser definida pelo usuário usando definições de tipo de dados do sistema existentes. Regras e os valores padrão só podem ser vinculados a Definido para um tipo de dados definido pelo usuário)
Nota Em um projeto do Access ou banco de dados do SQL Server, o prefixo "n" significa "país/região", o que significa que esse tipo de dados é habilitado para Unicode. . Nos bancos de dados do Access, todas as colunas de texto são habilitadas para Unicode por padrão.
Problemas aos quais você precisa prestar atenção ao converter ACCESS para SQL
13/02/2006 16:01:20
Muitos amigos desejam usar métodos de programação de banco de dados SQL2000, mas sofrem com o fato de estarem aprendendo ACCESS e terem apenas um pouco de conhecimento de SQL. Aqui forneço a seguinte referência --- Métodos e precauções para converter ACCESS em SQL2000. , Em primeiro lugar, estou falando sobre a conversão entre ACCESS2000 e SQL2000. Ainda não experimentei os outros, espero que você possa experimentar mais, e deve haver uma maneira;
2. Método de conversão
1. Abra “Fonte do Banco de Dados” em “Ferramentas Administrativas” em “Painel de Controle”;
2. Clique em “Adicionar” para adicionar uma nova fonte de dados e selecione “DriverdomicrosoftAccess” na coluna de seleção.
(*.mdb)", uma caixa aparecerá após a conclusão.
Digite o nome que deseja escrever em "Fonte do Banco de Dados". Nomeei-o como "ABC", indicando que não há necessidade de preenchimento. Em seguida, pressione a seleção abaixo para encontrar o endereço e a seleção do seu banco de dados (observe, primeiro faça backup do seu banco de dados ACCESS) e depois confirme.
A fonte de dados é criada aqui e tudo o que resta é a conversão.
3. Abra o SQL2000 Enterprise Manager, entre no banco de dados e crie um novo banco de dados vazio "ABC";
4. Selecione o banco de dados recém-criado, clique com o botão direito do mouse, selecione “Importar Dados” em “Todas as Tarefas” e clique em “Avançar” para continuar;
5. Selecione "DriverdoMicrosoft Access (*.mdb)" na lista suspensa de origem do banco de dados Em "Usuário/DSN do Sistema", selecione o "ABC" que você acabou de adicionar e clique em "Avançar";
6. "Objetivo" não precisa ser modificado. Selecione o servidor (geralmente sua própria máquina "local", você também pode selecionar o endereço do servidor ou endereço LAN para determinar se suas permissões podem operar), "Usar autenticação WINDOWS" significa usar. Para sua própria operação de identidade de administrador de sistema, "Usar verificação de operação de identidade SQL" pode ser usado para operações de site, e o último é recomendado;
7. Após selecionar “Usar verificação de operação de identidade SQL”, preencha seu nome de usuário e senha. Escolhi os números padrão do sistema “sa” e “****”. Para o banco de dados, selecione o recém-criado “ABC” e pressione. “Próximo passo”;
8. Existem duas opções únicas nesta etapa, “Copiar tabelas e visualizações da fonte de dados” e “Usar um comando de consulta para especificar os dados a serem transferidos”. Selecione a primeira e clique em “Avançar” para continuar;
9. Aqui aparecerão as tabelas do seu próprio banco de dados ACCESS. Clique em “Selecionar tudo” e vá para o próximo passo;
10. "DTS Import/Export Wizard", veja se "Run Now" está selecionado e clique em "Next".
11. Pressione “Concluir” para continuar;
12. Nesta etapa, você verá seus dados sendo importados para o SQL2000. Quando as palavras “XXX tabelas foram importadas com sucesso para o banco de dados” aparecerem e houver marcas verdes na frente de todas as tabelas, significa que todos os dados foram.
.
Neste momento, você precisa voltar e verificar se sua operação está correta.
Modificação de dados
1. Como não existe "numeração automática" no SQL2000, os campos definidos com "numeração automática" se tornarão campos não vazios. Nesse caso, você deve modificar manualmente esses campos e selecionar "Sim" para "Marcar". a semente é "1", o incremento é "1",
2. Além disso, após a conversão de ACCESS2000 para SQL2000, os campos com o atributo original "sim/não" serão convertidos em "bit" não vazio. Neste momento, você deve modificá-lo para o atributo desejado;
3. Além disso, todos devem prestar atenção à compreensão das funções de tempo. Existem muitas diferenças entre ACCESS e SQL.
4. Questões de campo relacionadas
1. Ao converter o tipo de numeração automática no banco de dados ACCESS, o sqlserver não o configurou para o tipo de numeração automática. Precisamos adicionar identidade à instrução de criação SQL para indicar a numeração automática!
2. Durante a conversão, o SQLSERVER usa como padrão o tipo smalldatetime para campos relacionados a data. É melhor alterá-lo para o tipo datetime, porque o tipo datetime tem um intervalo maior que o tipo smalldatetime. Encontrei esta situação ao usar o tipo smalldatetime, a conversão falhou, mas ao usar o tipo datetime, a conversão foi bem-sucedida.
3. As instruções SQL utilizadas para operar os dois bancos de dados não são exatamente iguais. Por exemplo: ao excluir registros no banco de dados ACCESS, use: "delete*fromuserwhereid=10", mas ao excluir o banco de dados SQLSERVER, use: "deleteuserwhereid=. 10".
4. As funções de data são diferentes. Ao processar o banco de dados ACCESS, funções como date() e time() podem ser usadas, mas não date. (), time() e outras funções.
5. Ao processar o banco de dados ACCESS, algumas funções VB, como a função cstr(), podem ser usadas diretamente na instrução sql, mas ao processar o banco de dados SQLSERVER, elas não podem ser usadas.
5. Problemas de declaração relacionados, adição automática de campos precisam ser reescritos. O campo de numeração automática frequentemente usado no acesso não é um int de incremento automático após ser importado para o mssql. Ele precisa ser definido manualmente. . e "valor do incremento" são ambos "1" para se tornarem um número automático.
Todos os valores padrão são perdidos. Principalmente tipos numéricos e tipos de data
Todos now(), time() e date() devem ser alterados para getdate()
Todos datediff('d',time1,time2) devem ser alterados para datediff(day,time1,time2)
Todos datediff('ww',time1,time2) devem ser alterados para datediff(week,time1,time2)
Todos datediff('d',time1,time2) devem ser alterados para datediff(day,time1,time2)
No mssqlserver, existem muitas palavras reservadas que não estão disponíveis no acesso. Quando você importa dados para o mssql, surgem problemas. Quando o mssql é importado, ele adiciona automaticamente "[nome do campo]" a esses campos (incluindo nomes de tabelas no banco de dados). Portanto, você deve modificar seu script e adicionar os nomes dos campos correspondentes (ou colchetes). o nome do campo para uma palavra reservada que não seja mssql
Ao usar o acesso para usar o tempo, todo mundo gosta de usar instruções SQL como "select*fromaaaawhiletime="&now()". No entanto, não há função "now()" no mssql, mas "getdate()" é usado, então , "now()" em todas as instruções SQL deve ser substituído por "getdate()".
As funções de data são diferentes. No processamento do banco de dados ACCESS, funções como data() e hora() podem ser usadas, mas para
No processamento do banco de dados SQLSERVER, apenas funções como datediff e dateadd podem ser usadas, mas funções como date() e time() não podem ser usadas.
Durante a conversão, o padrão do SQLSERVER é o tipo smalldatetime para campos relacionados à data. É melhor alterá-lo para o tipo datetime.