Como posso saber qual conta de usuário está sendo usada para executar uma ação (no contexto do SQL Server)?

Como posso saber qual conta de usuário está sendo usada para executar uma ação (no contexto do SQL Server)?

Por exemplo, ao instalar o SQL Server 2008, tive que escolher uma conta para o mecanismo de banco de dados ser executado.

Quando anexei um arquivo de banco de dados de 2005 com o SQL Server Management Studio, ocorreu um erro de permissão que impediu a atualização do banco de dados. Verifiquei os arquivos do banco de dados e a conta "SQLServerMSSQLUser$ComputerName$MSSQLSERVER" tem permissões completas no arquivo.

Então imaginei que o SQL Server Management Studio estava sendo executado com meu nome de usuário, que não tinha permissões de gravação para atualizar o arquivo de banco de dados. Então, adicionei permissões completas ao meu nome de usuário e funcionou.

Esse incidente foi o que me levou a fazer essa pergunta. Como posso saber com certeza em qual conta uma ação está sendo executada? Achei que o mecanismo de banco de dados estaria lidando com a anexação de um banco de dados, mas aparentemente não!

Além disso, uma vez anexado o banco de dados, parece que meu nome de usuário foi removido da lista de segurança! Então imagino que se eu desanexar o banco de dados, terei que redefinir minhas permissões nos arquivos mais uma vez antes de poder anexar novamente o banco de dados.

Responder1

Parece que o SSMS está causando essa confusão. Meu palpite é que ter que selecionar os arquivos em uma caixa de diálogo significa que a conta em que o SSMS está sendo executado também precisa de permissões para o arquivo.

Contanto que a conta de serviço tenha permissão para o arquivo, você poderá anexar o banco de dados usando t-sql.

Tente usar osp_ anexar _dbVocê precisará fazer login como sa ou usardefinir usuário ou use oCRIAR BANCO DE DADOS... PARA ANEXAR

Se você realmentedeveuse SSMS e a ideia de T-SQL faz você querer vomitar e, em seguida, criar uma conta de usuário para o serviço sql server ser executado e, em seguida, usar essa conta para iniciar o SSMS.

Responder2

Se você souber o nome do arquivo executável, a guia Processos do Gerenciador de Tarefas mostrará o nome de usuário que está executando esse arquivo.

Responder3

Encontrei a resposta aqui:
http://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/SQL-Server-2005/Q_22785783.html

A documentação relevante do SQL Server está aqui:
http://msdn2.microsoft.com/en-us/library/ms189128.aspx
"Quando você desanexa ou anexa um banco de dados, o Mecanismo de Banco de Dados tenta representar a conta do Windows da conexão que executa a operação para garantir que a conta tenha permissão para acessar o banco de dados e os arquivos de log. Para contas de segurança mistas que usam logins do SQL Server, a representação pode falhar."

Além disso, afirma claramente: "As permissões de acesso a arquivos são definidas durante qualquer uma das seguintes operações de banco de dados: criação, anexação, desanexação, modificação para adicionar um novo arquivo, backup ou restauração."

Obviamente, preciso de RTFM, haha.

informação relacionada