Sintomas
Durante a startup Microsoft SQL Server 2016 e 2017, se um utilizador tentar para ligar a uma base de dados antes de ser iniciado, a sessão do utilizador pode causar base de dados a ser auto-iniciado. Quando isto ocorre, se a base de dados contiver um FileTable e tem FILESTREAM non_transacted_access ativado, em seguida, o nível de base de dados O diretório filetable é inacessível após o arranque da base de dados. Se tentar aceder à pasta através do Explorador de Ficheiros, pode indicar que a pasta é indisponível. Quando executar um comando "dir" a partir do comando do Comando, retorna "O sistema não consegue encontrar o ficheiro especificado."
Além disso, pode ver os seguintes erros no registo de erros que indicam que uma sessão de utilizador desencadeou a base de dados para iniciar automaticamente:
DateTime Erro de logon: 18456, Severidade: 14, Estado: 38.
DateTime O Início de Sessão falhou no 'UserName' doutilizador . Razão: Não abrimos a base de dados explicitamente especificada «Data de dados». [CLIENTE: IPNumber]
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".
Resolução
Esta emissão é corrigida nas seguintes atualizações cumulativas para o SQL Server:
Sobre as atualizações cumulativas para o SQL Server:
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança que foram incluídas com a atualização cumulativa anterior. Confira as últimas atualizações cumulativas do SQL Server:
Solução
A solução para esta questão é desativar e reativar o FILESTREAM non_transacted_access da base de dados.
ALTER DATABASE[Base de dadosName] DEFINIR SINGLE_USER COM ROLLBACK IMEDIATO
ALTER DATABASE [Base de dadosName] SET FILESTREAM (NON_TRANSACTED_ACCESS = OFF )
ALTER DATABASE[DatabaseName] SET FILESTREAM (NON_TRANSACTED_ACCESS = FULL )
ALTER DATABASE[Base de dadosName] DEFINIR MULTI_USER COM ROLLBACK IMEDIATO
Referências
Conheça o terminologia que a Microsoft usa para descrever atualizações de software.