Como lidar com as diferenças de propriedade de objeto após a atualização
As versões 4.6 e posteriores e 5.2 e posteriores do Babelfish incluem uma alteração no tratamento de propriedade de objeto por meio do endpoint TDS. Agora, ao criar objetos por meio do endpoint TDS, eles pertencem ao proprietário do esquema em vez do usuário atual. Essa alteração de propriedade pode afetar o comportamento das permissões de novos objetos em comparação aos objetos existentes ao atualizar de versões anteriores à 4.6 ou 5.2.
Para resolver essas diferenças de propriedade, o Babelfish oferece a função sys.generate_alter_ownership_statements(). Essa função gera instruções SQL que alinham a propriedade do objeto à propriedade do esquema.
Lembre-se das seguintes limitações ao lidar com a propriedade de objeto:
-
Os usuários com permissões CREATE concedidas por meio do endpoint do PostgreSQL não podem criar objetos por meio do endpoint TDS nesses esquemas.
-
A modificação de permissões em objetos T-SQL por meio do endpoint do PostgreSQL não é recomendada e pode fazer com que o T-SQL tenha um comportamento incorreto.
-
As permissões de acesso podem diferir entre objetos antigos e novos devido à incompatibilidade entre propriedades. Por exemplo, considere um esquema pertencente a
sch_ownque inclua objetos pertencentes adbo. Nesse caso, objetos de propriedade dedboque foram criados antes da atualização podem ter permissões de acesso diferentes em comparação aos objetos de propriedade desch_ownque foram criados após a atualização. Isso pode afetar operações como SELECT e INSERT.
Se o cluster de banco de dados incluir objetos criados nas versões do Babelfish anteriores à 4.6 ou 5.2, considere a possibilidade de alinhar a propriedade desses objetos.
Como resolver diferenças de propriedade de objeto
-
Conecte-se ao banco de dados
babelfish_dbem seu cluster de banco de dados usando o endpoint do PostgreSQL. -
Execute o seguinte comando:
SELECT * from sys.generate_alter_ownership_statements();Isso gera uma lista de instruções SQL destinadas a padronizar a propriedade entre os objetos.
-
Primeiro, execute as instruções geradas em um ambiente de teste para validar o respectivo efeito antes de aplicá-las no ambiente de produção.
Recomendamos que você execute essas instruções para obter um modelo consistente de propriedade de objeto em seu banco de dados.