Como configurar o SQL Server 2012 para que ele possa restaurar e ver arquivos na minha conta de usuário?

10

Eu tenho uma instância do SQL Server 2012 em execução como um serviço no meu computador e, de acordo com a página de serviço, ela faz logon como conta "NT Service \ MSSQLSERVER". No entanto, não consigo ver esse nome de conta em nenhum outro lugar, inclusive na área "Usuários e grupos locais" na tela de gerenciamento do computador, porque, como um link abaixo diz, isso não é uma conta de usuário, é um nome de serviço, nessa caixa que A Microsoft rotulou tão útil "conta". Nesse ponto, vejo muitas pessoas confusas.

A tarefa que estou tentando realizar é restaurar arquivos usando a caixa de diálogo SSMS "Locate Backup File", que usa uma caixa de diálogo completamente diferente de qualquer caixa de diálogo padrão de abertura de arquivo do Windows, provavelmente porque está executando um trabalho "remoto" e operando a partir do contexto de segurança do servidor SQL, outra fonte rica de confusão do usuário final, que espero que essa pergunta possa ajudar a esclarecer.

Até o momento, se eu quiser restaurar um arquivo .mdf / .bak de backup que eu tenho em uma das minhas pastas, preciso defini-la como legível por Todos, caso contrário não consigo entrar lá com o SQL Server "Locate Backup Arquivo ". Acho que você está usando uma interface gráfica do usuário conversando com um serviço que possui contas e direitos de usuário diferentes dos seus, que ninguém na Microsoft se importou em deixar claro para você, muito confuso mesmo quando tenho anos de experiência em administração de sistemas Windows .

Espero ter perdido algumas páginas de documentação do SQL Server que informam, após a instalação de uma nova instância do SQL Server, como você pode configurar a segurança.

Postagens em fóruns como essa têm até funcionários da Microsoft dizendo "isso é complicado" e que "mudou novamente" em Denali. Como isso funciona agora no SQL Server 2012 e como posso adicionar permissão para ler arquivos pertencentes a Usuários à segurança do mecanismo do Banco de Dados SQL SID.

Warren P
fonte
O motivo pelo qual o SQL não usa a caixa de diálogo padrão é que você não pode escolher um arquivo do qual o SQL não possa ler. Quanto à configuração da segurança, você está aberto a alterar a conta na qual o SQL é executado ou deseja deixá-la como está agora? Se a alteração da conta de serviço estiver correta, é fácil cuidar disso. Como usamos contas nomeadas, não posso fazer testes com a conta MSSQLSERVER genérica para ajudar nisso.
Cfradenburg
Se todos mudarem seus SQL Servers para executarem com um ID de usuário comum durante o desenvolvimento, essa poderá ser a "melhor prática". Só estou me perguntando se isso é uma boa ideia ou não. Se adicionar manualmente "NT Service \ MSSQLSERVER" às pastas às quais preciso adicionar é a idéia padrão, acho que essa seria a correção mínima mais lógica, certo? O que eu desejo é que a interface do SSMS do servidor SQL seja um pouco mais fácil de conectar-se a esse ID de conta oculto "NT Server \ xxx".
Warren P

Respostas:

5

Para referência, "Denali" é o SQL Server 2012. No que diz respeito à "confusão do usuário final", não estou preocupado com o fato de um usuário final estar confuso ou não com o SSMS. A Microsoft não desenvolveu essa ferramenta para o usuário final normal, mas para o administrador do banco de dados e / ou um usuário que precisava gerenciar um banco de dados. Portanto, haverá uma curva de aprendizado com as ferramentas fornecidas e como elas funcionam. A caixa de diálogo de arquivo tem sido assim no SSMS desde que o SSMS foi lançado com o SQL Server 2005. É por isso que você verá a maioria das instruções T-SQL para fazer backup, restaurar ou anexar um banco de dados que o utiliza desde então. .

Para configurar as permissões do sistema de arquivos com o SQL Server, você pode seguir as instruções do MSDN aqui .

A maneira como as contas de serviço são tratadas não foi fornecida ou, devido ao SQL Server, ocorreu devido à alteração no nível do sistema operacional. O Windows Server 2008 R2 coloca um pouco mais de uma camada de segurança nas contas de serviço. A vantagem que você tem é que a conta de serviço pode acessar mais facilmente os recursos em um domínio, mesmo se instalado com as configurações padrão. Este link fornece uma visão bastante detalhada de como as permissões de conta de serviço são tratadas com o SQL Server 2012. O trecho do link está abaixo nas Contas Virtuais usadas por padrão no SQL Server 2012. Há também um link fornecido no artigo que explica mais discussão sobre o conceito de conta de serviço com o Windows, aqui. É do Window Server 2008 R2, mas acredito que ainda seja válido no Window Server 2012 e provavelmente no Windows Server 2012 R2.

Contas virtuais

As contas virtuais no Windows Server 2008 R2 e Windows 7 são contas locais gerenciadas que fornecem os seguintes recursos para simplificar a administração do serviço. A conta virtual é gerenciada automaticamente e pode acessar a rede em um ambiente de domínio. Se o valor padrão for usado para as contas de serviço durante a instalação do SQL Server no Windows Server 2008 R2 ou Windows 7, será usada uma conta virtual usando o nome da instância como o nome do serviço, no formato NT SERVICE \. Os serviços executados como contas virtuais acessam os recursos de rede usando as credenciais da conta do computador no formato \ $. Ao especificar uma conta virtual para iniciar o SQL Server, deixe a senha em branco. Se a conta virtual falhar ao registrar o SPN (Nome Principal do Serviço), registre-o manualmente. Para obter mais informações sobre como registrar um SPN manualmente, consulte Registrar um nome principal de serviço para conexões Kerberos. Observação Observação As contas virtuais não podem ser usadas para a Instância de cluster de failover do SQL Server, porque a conta virtual não teria o mesmo SID em cada nó do cluster.

A tabela a seguir lista exemplos de nomes de contas virtuais.

Instância padrão do serviço Mecanismo de Banco de Dados: NT SERVICE \ MSSQLSERVER Instância nomeada de um serviço Mecanismo de Banco de Dados chamado PAYROLL: NT SERVICE \ MSSQL $ PAYROLL Serviço SQL Server Agent na instância padrão do SQL Server: NT SERVICE \ SQLSERVERAGENT Serviço SQL Server Agent em um instância do SQL Server chamada PAYROLL: NT SERVICE \ SQLAGENT $ PAYROLL


fonte
3
Por usuário final, quero dizer qualquer uma das dezenas de categorias de pessoas, algumas bastante profissionais e tecnicamente competentes em várias disciplinas, mas que NÃO podem ser DBAs. Pessoalmente, acho que até os DBAs achariam que a interface do usuário nessa ferramenta poderia ser aprimorada. O robusto mercado de ferramentas de terceiros é outro indicador de que o SSMS, embora gratuito, vale totalmente o preço.
Warren P
11
Em 2017, não ficou melhor. Portanto, a resposta curta é "nunca vai melhorar, aprenda como funciona, por pior que seja a interface do usuário".
Warren P
2

Para ver / acessar os arquivos em outra pasta, dê NT SERVICE\MSSQLSERVERpermissões na pasta. Veja minha resposta publicada no arquivo .bak não visível em nenhum diretório do SSMS para capturas de tela e as etapas envolvidas. (Um pouco diferente de adicionar permissões normais de usuário / grupo a uma pasta.)

Espero que ajude!

AdamsTips
fonte
1

De fato, se você tentar fazer uma restauração via SSMS e estiver conectado via Autenticação do Windows (!), Será a SUA conta do Windows (e não "todo mundo também) que precisa de permissões para isso - NÃO o Serviço do SQL Server Espero que isso elimine a confusão. A conta de serviço tem outras necessidades. Por exemplo, se você efetuou login por meio de uma conta autenticada SQL - quais permissões o sistema operacional deve solicitar? - Será a conta de serviço do SQL Server neste apenas caso! Isso não mudou desde o SQL Server 7.0 e provavelmente nem antes disso :)

Andreas Wolter
fonte
11
Não se esqueça das credenciais .
Remus Rusanu 27/08
Não tenho certeza se isso limpa a confusão ... Se você estiver conectado via WA, sua conta do SQL Server precisará de permissões para restaurar (no que diz respeito ao SQL Server), mas a conta de serviço do SQL Server precisará das permissões de leitura no sistema de arquivos para abrir o .bakarquivo (que geralmente não terá se estiver no diretório de usuários, a menos que seja explicitamente concedido).
Bruno