Acabei de descobrir que na documentação do MSDN do SQL Server 2012 para tipos binary e varbinary, eles mencionam o seguinte no final do artigo :
Não há garantia de que as conversões entre qualquer tipo de dados e os tipos de dados binários sejam as mesmas entre as versões do SQL Server.
Percebi que isso não existe nas versões anteriores do artigo para 2005, 2008 e 2008 R2. Pesquisei online, mas não encontrei nenhuma explicação exata que satisfizesse minha pergunta de "POR QUÊ?". (Qual é a pergunta que tenho aqui.)
O projeto em que estou trabalhando precisa armazenar dados como varbinary(max), mas com base nesta pequena observação, receio que, se precisar mover os dados binários e convertê-los em outra versão do SQL Server, eles não corresponderão ao original dados convertidos em binário, portanto, responder a essa pergunta com mais profundidade seria uma grande ajuda.
Obrigado!
A Microsoft reserva-se o direito de alterar a representação binária dos tipos de dados integrados, como
DATETIME
. Então se você fizer ume então você atualiza o SQL Server ou até mesmo aplica um SP
pode obter uma data diferente da originalmente armazenada.
No entanto, se você armazenar seus próprios dados binários gerados fora do SQL Server (por exemplo, um arquivo pdf), esses dados não serão afetados por essa alteração.
Aliás, isso não é novo. A Microsoft sempre disse que poderia mudar a representação binária a qualquer momento. Eles podem ter tornado isso mais óbvio na nova versão do BOL.
Dito isso, ainda é muito improvável que a Microsoft mude a representação binária de, digamos, um número inteiro. No entanto, algo como um geoespacial, que é implementado como um tipo CLR, provavelmente mudará entre as versões.
De acordo com o comentário de Paul: O SQL Server realmente garante que você pode converter um tipo de dados integrado em binário e vice-versa na mesma instrução. Para estender isso para a mesma sessão ao armazenar o valor intermediário em tempdb, no entanto, eu já consideraria arriscado - um risco muito pequeno, mas um risco. Armazenar o valor intermediário em uma tabela real para recuperá-lo posteriormente é definitivamente um não-não.