Estou usando o SQL Server Express 2008 R2. A propriedade de fechamento automático de um banco de dados recém-criado será definida com o mesmo valor do modelo db. No meu caso, configurei o fechamento automático como falso para o modelo, para que, quando eu criar um novo banco de dados, ele também tenha o fechamento automático definido como falso.
Se eu desanexar um banco de dados com o fechamento automático definido como falso e, em seguida, anexá-lo, o fechamento automático será definido como verdadeiro. Eu esperava que o fechamento automático fosse falso, pois herdará suas propriedades do banco de dados do modelo. No meu caso, desanexar e anexar um banco de dados resulta na definição da propriedade autoclose como verdadeira.
Por que é tão? Existe alguma solução para este problema?
Anexar um banco de dados não envolve nenhum modelo, portanto, não há uma maneira automática de impor que suas configurações de banco de dados de modelo sejam aplicadas a qualquer banco de dados que você anexar posteriormente. Isso é usado apenas para bancos de dados que você
CREATE
, e ainda mais restritivos, bancos de dados que você cria semFOR ATTACH
ouFOR ATTACH_REBUILD_LOG
.No Express, os bancos de dados anexados são anexados automaticamente como
AutoClose = true
, portanto, não há nada que você possa fazer com o modelo ou com o próprio processo de anexação para defini-lo como falso. Você precisa defini-lo manualmente como falso após anexar ou suponho que você possa configurar um trabalho periódico que verifique se essa configuração está ativada em qualquer banco de dados que foi criado desde a última vez que o trabalho foi executado (ou sem um filtro em all) e defina-o como falso para você.Por que o Express funciona dessa maneira? Como o Express é amplamente projetado para desenvolvimento local e para conservar recursos na estação de trabalho de um desenvolvedor (que normalmente não tem muitos recursos de sobra, em comparação com servidores de produção), ele mantém apenas bancos de dados abertos que estão sendo usados ativamente. Este tópico nos Manuais Online ajuda a explicar , embora não declare explicitamente que qualquer banco de dados anexado ao Express define esta propriedade como true.
Se você não quiser lidar com isso (e outras limitações do Express), você sempre pode usar a Developer Edition.