Eu quero permitir que determinado usuário crie/modifique objetos em um banco de dados (tabelas, exibições, sp's, funções, esquemas etc) e não quero dar db_owner.
Eu pensei que poderia fazer isso com a função db_ddladmin, mas de alguma forma isso não funcionou como esperado. As mensagens de erro que recebo são as seguintes:
Your are not loggend on as the database owner or system administrator.
You might not beable to sache changes to tables that you do not own.
Table dbo.MyTable is set to read only,
user doesn't have enough right on this table.
etc
Alguma ideia de como posso atingir meu objetivo?
EDITAR:
Eu reli sua pergunta e posso ter errado antes. Parece que você está executando os scripts usando SSMS em vez de usar scripts T-SQL. Verifiquei que funciona ao usar scripts T-SQL e não funciona ao usar SSMS GUI. Para contornar esse problema, convém usar scripts T-SQL.
Este é um problema conhecido e parece que foi corrigido no DENALI CTP3 e posso confirmar isso.
Ref: https://connect.microsoft.com/SQLServer/feedback/details/467582/db-ddladmin-role-doesnt-allow-use-of-design-functions-in-ssms
Acabei de verificar se o comportamento (correto) também funciona no SQL Server 2008 R2. Infelizmente, não tenho uma instância do SQL Server 2008 para verificar.
Há uma solução alternativa descrita no Link de Sankar.
Isso funciona com SQLSever 2008 e 2008 R2.