Criei uma conta no SQL Server que uso em uma string de conexão para o aplicativo ac#.
Estou tentando exportar dados do meu banco de dados c# programaticamente,
INSERT INTO OpenRowSet(
'Microsoft.ACE.OLEDB.12.0'
, 'Excel 12.0;Database=C:\Temp\TestExcel.xlsx;'
, 'SELECT * FROM [categoryData$]'
)
SELECT * FROM categoryData;
Quando eu faço isso recebo um erro
Não é possível inicializar o objeto de fonte de dados do provedor OLE DB "Microsoft.ACE.OLEDB.12.0" para o servidor vinculado "(null)".
Então fiz algumas pesquisas e me deparei com o seguinte guia:
https://visakhm.blogspot.co.uk/2013/12/how-to-solve-microsoftaceoledb120-error.html
Estou na etapa 2 onde tenho que adicionar permissões para a pasta Temp na conta que está acessando o banco de dados.
Isso é necessário porque o provedor usa a pasta temporária ao recuperar os dados. A pasta pode ser uma das seguintes, dependendo se você usa uma conta de sistema local ou uma conta de domínio de rede.
Para contas de rede, a pasta é
:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp
Aqui está minha string de conexão (embrulhada para facilitar a leitura):
SqlConnection con = new SqlConnection("Fonte de dados=xxxx,1433; Biblioteca de rede=DBMSSOCN; Catálogo Inicial=footfall; ID do usuário=acesso; Senha=pw;tempo limite de conexão=0; ");
Estou correto ao assumir que a conta de usuário para a qual preciso adicionar permissões é "acesso" - que é um login que eu mesmo configurei. Em caso afirmativo, como adicionar esta conta, pois não consigo encontrá-la na caixa de diálogo de segurança.
Editar: Usando a resposta abaixo de Max Vernon, completei a ETAPA 2 do guia, mas a ETAPA 3 não posso, pois estou usando uma versão de 64 bits do SQL Server. Alguém mais sabe como contornar esse erro, pois eu realmente gostaria de poder exportar meus dados para o Excel.
Não é possível inicializar o objeto de fonte de dados do provedor OLE DB "Microsoft.ACE.OLEDB.12.0" para o servidor vinculado "(null)".
EDIT: Consegui fazer isso funcionar ontem adicionando uma conta de administrador de domínio como a conta de login para o serviço do servidor sql e, em seguida, enviando o arquivo para uma unidade de rede. Eu ainda não consigo fazê-lo funcionar localmente. Eu posso fazer com que ele escreva linhas na planilha editando manualmente os títulos das colunas para corresponder aos da tabela. Eu escrevi um novo código para criar a planilha usando System.Runtime.InteropServices; & Microsoft.Office.Interop.Excel; Então eu posso exportar os dados.