Recentemente, tive que recriar um usuário várias vezes.
Para facilitar a criação do usuário, eu clicaria com o botão direito no usuário e escolheria script login as
, create to
, New Query Editor Window
.
No entanto, depois de fazer isso, recebo um erro de sintaxe:
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'ROLE'.
O que está acontecendo aqui?
Você precisa ter certeza de que suas opções de script estão definidas para direcionar a versão correta. Você pode fazer isso em Ferramentas/Opções/Pesquisador de Objetos/Scripts/Script para versão do servidor. No seu caso, você deve escolher 2008 (é o guarda-chuva para 2008 e 2008 R2), embora 2005 provavelmente também funcione.
O desafio é que, se você mudar para a versão SQL Server 2016 do SSMS, parte dessa compatibilidade com versões anteriores será quebrada (e na verdade também pode ser quebrada na versão que você está usando agora, não testei recentemente, mas se então, é menos provável que seja corrigido):
A principal razão pela qual você não pode fazer o script dessa função de login específica para 2008 é que
CREATE SERVER ROLE
- na verdade, a capacidade de criar uma função de servidor definida pelo usuário em primeiro lugar - foi introduzida no SQL Server 2012. Portanto, você terá que fazer o script do login sem a função se você deseja implantar em alguma versão < 2012.ATUALIZAÇÃO : A Microsoft acabou de adicionar um comentário ao item Connect , indicando que não será corrigido e o motivo: