Copia de segurança
-
segunda-feira, 30 de abril de 2012 08:46
ola
Queria saber se existe alguma comando sql que faça a copia e update de dados de um mdb para tabela sql server através de um caminho de rede.
O objectivo é especificar o caminho de rede do mdb e fazer a copia dos dados para uma tabela no sql server.
Tem que ser através de caminho de rede pois são vários ficheiros.
Este código é para interagir com o vb.net.
Visual Basic 2008 Express Edition SQL Server Management Studio
- Editado Jonas São Paulo segunda-feira, 30 de abril de 2012 08:47
Todas as Respostas
-
segunda-feira, 30 de abril de 2012 13:20Moderador
Bom Dia,
Você pode utilizar o OPENROWSET combinado com o MERGE.
[ ]s,
Gustavo Maia Aguiar
Blog: http://gustavomaiaaguiar.wordpress.com
Vídeos:http://www.youtube.com/user/gmasqlClassifique as respostas. O seu feedback é imprescindível
-
segunda-feira, 30 de abril de 2012 13:24
como faço isso?
tenho andado á procura na net mas não encontro nada. Aparece muita coisa de importar de mdb para sql, mas é de ficheiro a ficheiro. MAs não quero isso.
quero especificar o caminho na rede (C:\caimnho.mdb) e actualizar a info na tabela sql.
Obrigado
Visual Basic 2008 Express Edition SQL Server Management Studio
-
segunda-feira, 30 de abril de 2012 23:42
estou a experimentar este código mas da-me erro:
SELECT nome
Msg 7308, Level 16, State 1, Line 1
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'caminho\teste.mdb';
'admin';'',teste)
OLE DB provider 'Microsoft.Jet.OLEDB.4.0' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode.
Visual Basic 2008 Express Edition SQL Server Management Studio
-
terça-feira, 1 de maio de 2012 02:16Moderador
Jonas,
uma dica: procure por "mdb" no fórum que encontrará vários assuntos sobre isso. Acredito que encontrará o que precisa.
Roberson Ferreira - Database Developer
Acesse: www.robersonferreira.com.br
Email: contato@robersonferreira.com.brSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta. -
terça-feira, 1 de maio de 2012 12:58
a unica sintaxe que encontrei foi esta:
EXEC sp_addlinkedserver
@server = 'MDBSERVER', -- Nome do Linked Server
@provider = 'Microsoft.Jet.OLEDB.4.0', -- Provider da conexão
@srvproduct = 'OLE DB Provider for Jet', -- Descrição do provider
@datasrc = 'C:\\teste.mdb' -- Nome do arquivo
GO
Select * from [MDBSERVER]...teste -- Select para acesso aos dadosMAs continua a dar erro:
Msg 15028, Level 16, State 1, Procedure sp_addlinkedserver, Line 82
The server 'MDBSERVER' already exists.
Msg 7308, Level 16, State 1, Line 2
OLE DB provider 'Microsoft.Jet.OLEDB.4.0' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode.Qual sintaxe devo usar? ou o que estou a fazer de mal?
Obirgado
Visual Basic 2008 Express Edition SQL Server Management Studio
-
quarta-feira, 2 de maio de 2012 18:46
Jonas conseguiu resolver o problema?
Estou com a mesma dúvida...
Como fazer um backup via comando SQL..
Desde já obrigado
Att
Equipe PS Vita Jogos.com.br
-
quarta-feira, 2 de maio de 2012 19:42
Olá Jonas
o erro parece ser por causa da opção 'AD HOC DISTRIBUTED QUERIES'
tente executar este comando
--Habilita Opções Avançadas SP_CONFIGURE 'SHOW ADVANCED OPTION',1 RECONFIGURE WITH OVERRIDE; GO -- Habilita 'AD HOC DISTRIBUTED QUERIES' SP_CONFIGURE 'AD HOC DISTRIBUTED QUERIES',1 RECONFIGURE WITH OVERRIDE; GO
Att.
Lukas Baldan -
quarta-feira, 2 de maio de 2012 22:22
Lukas o erro continua o mesmo:
Msg 15028, Level 16, State 1, Procedure sp_addlinkedserver, Line 82
The server 'MDBSERVER' already exists.
Msg 7308, Level 16, State 1, Line 2
OLE DB provider 'Microsoft.Jet.OLEDB.4.0' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode.
Estou faz dias á procura de uma solução :/
tá dificil
vá seguindo este tópico
Visual Basic 2008 Express Edition SQL Server Management Studio
-
quinta-feira, 3 de maio de 2012 12:43
Olá Jonas,
tente executar nesta ordem
--Deleta o servidor já criado sp_dropserver 'MDBSERVER', 'droplogins' GO --Habilita Opções Avançadas SP_CONFIGURE 'SHOW ADVANCED OPTION',1 RECONFIGURE WITH OVERRIDE; GO -- Habilita 'AD HOC DISTRIBUTED QUERIES' SP_CONFIGURE 'AD HOC DISTRIBUTED QUERIES',1 RECONFIGURE WITH OVERRIDE; GO
depois tente criar novamente o linked server
Att.
Lukas Baldan- Sugerido como Resposta Lukas BaldanMicrosoft Community Contributor quinta-feira, 3 de maio de 2012 15:58
-
quinta-feira, 3 de maio de 2012 15:28
Lukas me desculpe. mas não estou a enteder.
que código devo usar para copiar os dados do mdb para tabela sql server? via o caminho de rede.
Se poder poste um exemplo, agradecido
Visual Basic 2008 Express Edition SQL Server Management Studio
-
quinta-feira, 3 de maio de 2012 15:31
depois de executar o codigo acima tente novamente o codigo que você postou
EXEC sp_addlinkedserver @server = 'MDBSERVER', -- Nome do Linked Server @provider = 'Microsoft.Jet.OLEDB.4.0', -- Provider da conexão @srvproduct = 'OLE DB Provider for Jet', -- Descrição do provider @datasrc = 'C:\\teste.mdb' -- Nome do arquivo GO Select * from [MDBSERVER]...teste -- Select para acesso aos dados
Att.
Lukas Baldan- Sugerido como Resposta Lukas BaldanMicrosoft Community Contributor quinta-feira, 3 de maio de 2012 15:58
-
quinta-feira, 3 de maio de 2012 15:51
beleza :)
Agora tenho que fazer o insert into né?
Neste momento estou a fazer uma consulta ao mdb e a mostrar no sql server né?
valeu
Visual Basic 2008 Express Edition SQL Server Management Studio
-
quinta-feira, 3 de maio de 2012 15:57
Exato
Att.
Lukas Baldan -
quinta-feira, 3 de maio de 2012 16:03
tenho que fazer o insert coluna a coluna ?
ou posso copiar logo tudo de uma vez?
Esta consulta que estou a ver não fica guardada em lado nenhum né?
Como faço
Select * from [MDBSERVER]...teste
Pensei que o sql cria-se a tabela MDBSERVER
valeu
Visual Basic 2008 Express Edition SQL Server Management Studio
-
quinta-feira, 3 de maio de 2012 16:10
Você tem duas alternativas
Criar a tabela MDBSERVER primeiro e depois inserir
ou fazer o seguinte
Select * into MDBSERVER from [MDBSERVER]...teste
este comando ja cria a tabela MDBSERVER com os dados do Select
Att.
Lukas Baldan- Editado Lukas BaldanMicrosoft Community Contributor quinta-feira, 3 de maio de 2012 16:10
-
quinta-feira, 3 de maio de 2012 16:14
humm eu preferia fazer logo o update na tabela teste.
Vou explicar.
o ficheiro mdb vai sofrer muitas alterações. Eu preciso de que cada vez executar este sintaxe ele ir ao mdb e copiar as alterações para a tabela teste no sql.
Mas isto levanta-me um problema. Na primeira vez que fizer o update não terei valores na tabela teste do ficheiro dados.mdb. Terei que fazer um if na sintaxe do sql server.
Na primeira vez ele copia e na segunda e seguintes ele actualiza. entendeu?
Valeu
Visual Basic 2008 Express Edition SQL Server Management Studio
-
quinta-feira, 3 de maio de 2012 16:21
Sim,
da para fazer desta forma com
IF (select count(*) from teste) = 0 BEGIN --Insere END ELSE BEGIN --ATUALIZA END
ou voce pode tentar usar o Merge
Att.
Lukas Baldan- Editado Lukas BaldanMicrosoft Community Contributor quinta-feira, 3 de maio de 2012 16:21
-
quinta-feira, 3 de maio de 2012 16:39
Então ficaria:
IF (select count(*) from teste) = 0 BEGIN Select * into MDBSERVER from [MDBSERVER]...teste END ELSE BEGIN update MDBSERVER set * END
No select eu não queria criar a tabela. Pois a tabela já existe. É a tabela teste.
No update dá para fazer update a tudo? sem ter que especificar colunas?
Valeu
Visual Basic 2008 Express Edition SQL Server Management Studio
-
quinta-feira, 3 de maio de 2012 16:52
IF (select count(*) from teste) = 0 BEGIN INERT INTO TESTE Select * from [MDBSERVER]...teste END ELSE BEGIN update TESTE set CAMPO1 = B.campo1 from TESTE a inner join [MDBSERVER]...teste b on a.codigo = b.codigo --codigo seria o campo chave primaria da sua tabela END
não da teria que especificar as colunas.
Att.
Lukas Baldan- Editado Lukas BaldanMicrosoft Community Contributor quinta-feira, 3 de maio de 2012 16:53
-
sábado, 5 de maio de 2012 20:22
Lukas estive a tentar executar o código novamente e lá apareceu novamente os erros: :/
O meu objectivo é copiar o conteúdo de uma tabela access para uma tabela SQL. Isto deve ser feito através do caminho de rede do access.
Esqueça a parte de actualizar. isso eu faço com outra tabela, é melhor.
Obrigado
Erro:
Configuration option 'show advanced options' changed from 1 to 1. Run the RECONFIGURE statement to install. Configuration option 'Ad Hoc Distributed Queries' changed from 1 to 1. Run the RECONFIGURE statement to install. Msg 7308, Level 16, State 1, Line 2 OLE DB provider 'Microsoft.Jet.OLEDB.4.0' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode.
código:
--Deleta o servidor já criado sp_dropserver 'MDBSERVER', 'droplogins' GO --Habilita Opções Avançadas SP_CONFIGURE 'SHOW ADVANCED OPTION',1 RECONFIGURE WITH OVERRIDE; GO -- Habilita 'AD HOC DISTRIBUTED QUERIES' SP_CONFIGURE 'AD HOC DISTRIBUTED QUERIES',1 RECONFIGURE WITH OVERRIDE; GO EXEC sp_addlinkedserver @server = 'MDBSERVER', -- Nome do Linked Server @provider = 'Microsoft.Jet.OLEDB.4.0', -- Provider da conexão @srvproduct = 'OLE DB Provider for Jet', -- Descrição do provider @datasrc = 'C\teste.mdb' -- Nome do arquivo GO Select * from [MDBSERVER]...teste -- Select para acesso aos dados
Visual Basic 2008 Express Edition SQL Server Management Studio
-
segunda-feira, 7 de maio de 2012 12:21Qual a versão do windows e do sql???
Att.
Lukas Baldan -
segunda-feira, 7 de maio de 2012 12:46win xp e sql server 2008
Visual Basic 2008 Express Edition SQL Server Management Studio
-
terça-feira, 8 de maio de 2012 12:54
Bem vamos tentar de outra forma,
faça o download de http://www.microsoft.com/en-us/download/details.aspx?id=13255
pegue a primeira versão AccessDatabaseEngine.exe que é x86 e instale.
após a instalação tente executar este script
--Deleta o servidor já criado sp_dropserver 'MDBSERVER', 'droplogins' GO --Habilita Opções Avançadas SP_CONFIGURE 'SHOW ADVANCED OPTION',1 RECONFIGURE WITH OVERRIDE; GO -- Habilita 'AD HOC DISTRIBUTED QUERIES' SP_CONFIGURE 'AD HOC DISTRIBUTED QUERIES',1 RECONFIGURE WITH OVERRIDE; GO exec sp_addlinkedserver @server = 'MDBSERVER', @provider = 'Microsoft.ACE.OLEDB.12.0', @srvproduct = 'OLE DB Provider for ACE', @datasrc = 'C:\teste.MDB' GO Select * from [MDBSERVER]...teste -- Select para acesso aos dados
ou siga os passos deste link
Add MSAccess 2007 to SQL2008 server via Linked Server and access all MS Access table information from SQL
Att.
Lukas Baldan
- Editado Lukas BaldanMicrosoft Community Contributor terça-feira, 8 de maio de 2012 13:01
- Editado Lukas BaldanMicrosoft Community Contributor terça-feira, 8 de maio de 2012 13:01
- Sugerido como Resposta Heloisa PiresModerator quarta-feira, 6 de junho de 2012 14:05
- Marcado como Resposta Heloisa PiresModerator terça-feira, 10 de julho de 2012 15:15
-
quarta-feira, 6 de junho de 2012 14:06Moderador
Olá Jonas,
Conseguiu resolver essa questão?
Se sim, marque como resposta ou poste a maneira utilizada para deixarmos arquivado no fórum. :)
Obrigada,
Heloisa Pires | LATAM Forum Support Engineer | Microsoft Corporation

