Problemas com Linked Server

12/09/2014

0

Boa tarde, estou com um problema com uso de um Linked Server entre o SQL Server 2012 e uma Base de Dados em Access 2010.
O arquivo accdb é um modelo com tabelas já criadas porém sem dados e com uma senha no arquivo.

Seguem as configurações que utilizei.

exec sp_addlinkedserver @server = 'TempAccess'
, @provider = 'Microsoft.ACE.OLEDB.12.0'
, @srvproduct = 'Access 2007'
, @datasrc = 'C:\Users\Ti\Desktop\Dados.accdb'
, @provstr= ';PWD=PasswordDoAccess'

exec sp_addlinkedsrvlogin
, @rmtsrvname='TempAccess'
, @useself='False'
, @locallogin=NULL
, @rmtuser=NULL
, @rmtpassword=NULL

Ai vem o problema, tenho um usuário por Windows Authentication e outro usuário por SQL Server Authentication. Eu consigo criar o link utilizando qualquer um dos 2 porém só consigo fazer alguma coisa tipo Select ou Insert com o usuário que tem Windows Authentication, quando tento fazer qualquer coisa pelo usuário do SQL Server ele da o seguinte erro:

OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "TempAccess" returned message "O mecanismo de banco de dados do Microsoft Access não pode abrir ou gravar o arquivo 'C:\Users\TI\Desktop\Dados.accdb'. Ele já foi aberto em modo exclusivo por outro usuário, ou você precisa de permissão para exibir e gravar os dados.".
Mensagem 7303, Nível 16, Estado 1, Procedimento sp_tables_ex, Linha 41
Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "TempAccess".

E a situação é que o que eu preciso mesmo é que o usuário por SQL Server Authentication faça esses Inserts pois ele é utilizado para logar um Sistema VB.NET ao Access e fazer a atualização da Base.
Adriano Gomes

Adriano Gomes

Responder

Posts

16/09/2014

Adriano Gomes

Ninguém?
Responder

16/09/2014

Fabiano Carvalho

Você já tentou mudar o usuário que utuliza o link ? Dar permissao de leitura/escrita na pasta ?
O usuario que executa o serviço precisa ter a permissão.
Responder

16/09/2014

Adriano Gomes

Então, e como eu poderia dar permissão de acesso a a uma pasta do windows para um Login do SQL? Pois a única permissão que consigo mexer é na 'NT SERVICE\MSSQLSERVER' não sei como dar permissão a um login.

E a ideia principal é que o usuário do sistema (VB. NET) selecione uma pasta em uma caixa de seleção e nesta pasta será copiado o accdb modelo e nele inserido os dados via linked server do banco de dados SQL de acordo com a Empresa selecionada no VB
O sistema VB.Net que utilizara esse login que esta me deixando louco xD
Responder

17/09/2014

Fabiano Carvalho

O usuário SQL não acessa a pasta e sim o usuário que executa o serviço, lá no services.msc, esse usuário precisa da permissão.
Responder

17/09/2014

Adriano Gomes

Cara sou meio leigo nesse negócio de permissões, pelo que entendi existe 1 usuário no services.msc que é responsável por todos os logins do SQL Server? eu até tentei dar permissões para o serviço 'SQL Server' que utiliza o usuário 'NT Service\MSSQLSERVER' em uma pasta para testar mas não adiantou de nada e se for isto da permissão do usuário que executa o serviço, deveria funcionar igual tanto para Windows Authentication quanto para SQL Authentication estou certo?
Responder

24/09/2014

Adriano Gomes

Ninguém mais?
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar