Array
(
)

Problemas com Linked Server

Adriano
   - 12 set 2014

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
   - 16 set 2014

Ninguém?

Faabiianooc
   - 16 set 2014

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.

Adriano
   - 16 set 2014

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

Faabiianooc
   - 17 set 2014

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.

Adriano
   - 17 set 2014

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?

Adriano
   - 24 set 2014

Ninguém mais?