Azarado que sou, instalei o SQL Server Denali CTP 3 ontem por duas vezes, mas o serviço do SQL Server não quis iniciar. Assim corri para o Event Viewer (Windows Logs\Application) e identifiquei as seguintes mensagens de erro na inicialização do SQL Server:
FileMgr::StartLogFiles: Operating system error 2(The system cannot find the file specified.) occurred while creating or opening file ‘e:\sql11_main_t.obj.x86fre\sql\mkmastr\databases\objfre\i386\modellog.ldf’. Diagnose and correct the operating system error, and retry the operation.
FCB::Open failed: Could not open file e:\sql11_main_t.obj.x86fre\sql\mkmastr\databases\objfre\i386\model.mdf for file number 1. OS error: 3(The system cannot find the path specified.).
FileMgr::StartLogFiles: Operating system error 2(The system cannot find the file specified.) occurred while creating or opening file ‘e:\sql11_main_t.obj.x86fre\sql\mkmastr\databases\objfre\i386\MSDBLog.ldf’. Diagnose and correct the operating system error, and retry the operation.
FCB::Open failed: Could not open file e:\sql11_main_t.obj.x86fre\sql\mkmastr\databases\objfre\i386\MSDBData.mdf for file number 1. OS error: 3(The system cannot find the path specified.).
Bom, já tinha visto algo parecido com este problema uma vez quando moveram os bancos de dados de sistema (msdb, model e tempdb) para outro disco, então resolvi tentar solucionar este problema da mesma forma.
Identifico onde foram parar os bancos de dados de sistema:
(Este é um print screen após ter sido ajustado, pois o tempdb ainda não tinha sido criado pelo SQL Server quando tive o problema).
No meu caso, eles estavam na pasta:
C:\Program Files\Microsoft SQL Server\MSSQL11.DENALI\MSSQL\DATA
Abri o prompt de comando (CMD) como administrador e iniciei manualmente o serviço do SQL Server com “/f /T3608”, para ser possível ajustar os bancos de dados de sistema:
NET START MSSQL$ NomeDaInstancia /f /T3608
Agora, iniciar o prompt do SQL Server:
SQLCMD -S NomeDoComputado\NomeDaInstancia -E
Seguido dos comandos para ajustar os bancos de dados de sistema para pasta correta:
ALTER DATABASE model MODIFY FILE (NAME = modeldev, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.DENALI\MSSQL\DATA\model.mdf')
ALTER DATABASE model MODIFY FILE (NAME = modellog, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.DENALI\MSSQL\DATA\modellog.ldf')
ALTER DATABASE msdb MODIFY FILE (NAME = msdbdata, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.DENALI\MSSQL\DATA\msdbdata.mdf')
ALTER DATABASE msdb MODIFY FILE (NAME = msdblog, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.DENALI\MSSQL\DATA\msdblog.ldf')
ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.DENALI\MSSQL\DATA\tempdb.mdf')
ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.DENALI\MSSQL\DATA\templog.ldf')
GO
Saí do SQLCMD (pelo comando EXIT), e parei o SQL Server:
NET STOP MSSQL$ NomeDaInstancia
Iniciei o serviço do SQL Server pelo Configuration Manager, e até ai, tudo ocorreu como esperado:
Ao tentar logar com no SQL Server Management Studio tive a seguinte mensagem:
Login failed for user ‘NomeDoComputador\NomeDoUsuario’. (Microsoft SQL Server, Error: 18456)
E a mesma resposta pelo SQLCMD:
Bom, então vou ter parar o SQL Server de novo, iniciar naquele modo emergencial e criar meu usuário como sysadmin:
NET STOP MSSQL$ NomeDaInstancia
NET START MSSQL$ NomeDaInstancia /f /T3608
Iniciar o prompt do SQL Server:
SQLCMD -S NomeDoComputado\NomeDaInstancia -E
Executar os seguintes comandos SQL:
CREATE LOGIN [NomeDoComputado\NomeDoUsuário] FROM WINDOWS;
GO
sp_addsrvrolemember 'NomeDoComputado\NomeDoUsuário', 'sysadmin'
GO
E parar o serviço do SQL Server:
NET STOP MSSQL$NomeDaInstancia
Novamente inicio o SQL Server pelo Configuration Manager, e feito isso, consegui me logar com o Management Studio sem maiores problemas:
Visto que se trata de uma versão de Preview, é até comum que ocorra problemas, mas fico no aguardo de uma solução.