Se eu quiser transferir a propriedade do esquema para outro esquema, sei que preciso usar algo como:
ALTER SCHEMA destinationschema TRANSFER sourceschema.objectname;
Mas como é diferente de:
ALTER AUTHORIZATION ON OBJECT::sourceschema.objectname TO destinationschema ;
Desde já, obrigado!
Neste caso especial que você destacou, eles fazem a mesma coisa, não há diferença.
Acho que ALTER SCHEMA foi adicionado para completar (por exemplo, há CREATE e DROP, por que não ALTER) ou em preparação para outros recursos (como renomear um SCHEMA, digamos)
Primeiro tente DROP SCHEMA schema_name
Por quê?
Eu estava tentando transferir um esquema que existia em uma conta de usuário que veio quando um banco de dados foi movido. Eu precisava excluir o usuário, mas estava travando o esquema que o acompanhava. O esquema correspondia ao nome de usuário.
Eu tentei a solução neste Q&A, bem como em Como transferir a propriedade do esquema dbo no SQL Server 2012 e Alterar tabelas de um usuário para outro Nada estava funcionando. Não consegui descobrir qual era o problema, os erros eram, algo como "não consigo encontrar" não tinha certeza do que não conseguia encontrar, a conta ou o esquema, mas não fazia sentido. Tanto o usuário antigo quanto o novo usuário existiam, eu já havia transferido db_owner e tudo mais, exceto o esquema para a nova conta.
Usei as perguntas em Listar nomes e proprietários do esquema no SQL Server 2012 e pude ver que a conta antiga ainda tinha o esquema com o mesmo nome, não importa o que eu fizesse.
Procurei uma maneira de descobrir exatamente a que o esquema estava anexado. Quando descobri que DROP SCHEMA só cai se não houver objetos.
O esquema caiu e consegui excluir o usuário antigo.