Estou lendo sobre a opção de configuração do servidor de encadeamento de propriedade de banco de dados cruzado
Ele fala sobre como e por que usar (ou não) essa opção e diz
Definir o encadeamento de propriedade entre bancos de dados como 1 não é recomendado, a menos que todos os bancos de dados hospedados pela instância do SQL Server devam participar do encadeamento de propriedade entre bancos de dados e você esteja ciente das implicações de segurança dessa configuração.
Ele também oferece este código para verificar.
SELECT is_db_chaining_on, name FROM sys.databases;
De acordo com as opções de configuração do servidor (SQL Server) , o valor padrão para 'encadeamento de propriedade de banco de dados cruzado' é 0 (zero)
Quando eu o executo em meus servidores, antigo, novo ou o que quer que pareça, ele está habilitado no master, tempdb e msdb. Verifiquei alguns do SQL 2012 ao SQL 2017, edições Enterprise e Standard.
Eu descobri que ele está definido como padrão, mas não por quê.
- configurações do tempdb Não podem ser alteradas
- configurações principais Não podem ser alteradas
- configurações do msdb Podem ser alteradas
Se estiver ruim, por que está ativado por padrão nos bancos de dados do sistema?
Por que não estou encontrando nada falando sobre por que está ativado por padrão nos bancos de dados do sistema?
Eu continuei a procurar o raciocínio por trás disso. Tudo que eu encontro é alguma versão de
Claramente os bancos de dados do sistema; master, tempdb e msdb são interdependentes. Presumivelmente no início do desenvolvimento do SQL, alguns desenvolvedores da Microsoft optaram por usar o encadeamento entre bancos de dados para resolver problemas de acesso, e isso nunca foi atualizado.
Outra dessas coisas que a Microsoft recomenda que não sejam usadas, mas são dependentes disso.