AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 222696
Accepted
Craig Efrein
Craig Efrein
Asked: 2018-11-16 22:04:08 +0800 CST2018-11-16 22:04:08 +0800 CST 2018-11-16 22:04:08 +0800 CST

Não é possível criar banco de dados no volume montado como pasta (Mensagem de erro 5123 e 1802)

  • 772

SQL Server 2016 SP1 + CU8 Instalado no Windows Server 2016 Standard Edition.

Tudo estava funcionando bem por um tempo e eu consegui criar bancos de dados até que, por algum motivo sem que eu soubesse, um problema de permissões apareceu nos meus volumes montados.

Msg 5123, Level 16, State 1, Line 1
CREATE FILE encountered operating system error 5(Access is denied.) 
while attempting to open or create the physical file 
'D:\MSSQL13.MSSQLSERVER\MSSQL\Data\UserDB\test.mdf'.
Msg 1802, Level 16, State 4, Line 1
CREATE DATABASE failed. Some file names listed could not be created. 
Check related errors.

A pasta D:\MSSQL13.MSSQLSERVER\MSSQL\Data\UserDB é na verdade um volume montado como uma pasta dentro do diretório D:\MSSQL13.MSSQLSERVER\MSSQL\Data.

insira a descrição da imagem aqui

Eu pesquisei por horas e todos os links continuaram falando sobre propriedade e icacls e takecontrol, mas esse não é o problema aqui. Quero deixar claro que a conta de serviço que executa o SQL Server nesta instância tem CONTROLE TOTAL sobre este volume montado e o que está acima dele também.

Verifiquei o Acesso Efetivo para a conta de serviço e ela concedeu explicitamente o controle TOTAL.

Minha suspeita é que tenha algo a ver com a concessão de permissões para uma pasta montada como um volume em vez de um disco. Isso porque em meus testes, consigo criar um banco de dados com seus arquivos na raiz de D:\ sem problemas. D:\ também é um volume que usa o mesmo tipo de armazenamento.

Além disso, meu próprio usuário tem controle total, mas quando tento criar um arquivo, recebo esse aviso.

insira a descrição da imagem aqui

Curiosamente, posso adicionar uma pasta à pasta/volume do UserDB sem dificuldade.

Como faço para que este volume, montado como uma pasta na unidade D:\ seja gravável para a conta MSSQL?

sql-server permissions
  • 2 2 respostas
  • 1661 Views

2 respostas

  • Voted
  1. Best Answer
    AMtwo
    2018-11-17T04:15:53+08:002018-11-17T04:15:53+08:00

    A criação de arquivos de dados do SQL Server na raiz de um volume é problemática devido a problemas de permissões. Eu sempre recomendo criar uma pasta na raiz do volume e depois colocar os arquivos de dados dentro dessa pasta (essa também é uma recomendação da Microsoft). Definir e verificar permissões na raiz da unidade nem sempre funciona da mesma forma que definir permissões no nível da pasta.

    Ao montar o volume como uma unidade com letras, isso significa que seus arquivos de dados nunca entrariam diretamente, D:\mas sim em D:\SomeFolder\. No seu caso, você está usando um ponto de montagem onde UserDbé a raiz do volume. Eu sugiro criar uma pasta adicional dentro do seu ponto de montagem: D:\...\Data\UserDb\SomeFolder\. Em seguida, defina permissões para garantir que a conta de serviço do SQL Server tenha controle total sobre o SomeFolderdiretório.

    Observe que esta orientação da Microsoft ainda é verdadeira:

    Não instale o SQL Server no diretório raiz de um ponto de montagem, sempre especifique um subdiretório para todos os arquivos. Isso tem a ver com a forma como as permissões são concedidas. Se você precisar colocar arquivos na raiz do ponto de montagem, deverá gerenciar manualmente as ACLs/permissões.

    E também este conselho mais explícito para arquivos de banco de dados especificamente:

    Aviso: o SQL Server não oferece suporte ao uso de diretórios raiz de volume de montagem/ponto de montagem para bancos de dados SQL Server.

    Colocar arquivos diretamente na raiz do ponto de montagem significa que você terá que gerenciar permissões diretamente em cada arquivo para garantir que estejam corretos. No caso de criar um novo banco de dados (de backup ou de modelo), isso pode ser problemático. Como resultado, é uma prática recomendada nunca colocar arquivos na raiz do ponto de montagem ou da unidade. Você pode fazê-lo funcionar, mas não é suportado e não é uma boa ideia.

    • 7
  2. Avalon
    2019-02-16T03:31:41+08:002019-02-16T03:31:41+08:00

    Esteja ciente de que o SQL Server 2016 relata que as unidades montadas não têm espaço suficiente ao propagar um banco de dados AlwaysOn - mas funciona bem, se você continuar!

    • 3

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve