Qual é o nível de exclusividade de object_id no SQL Server? Quer dizer, esse valor é único por banco de dados, por instância, por servidor,... Além disso, o que acontece quando eu restauro o banco de dados em outro servidor ou instância? E o que acontece com o object_id se eu criar o banco de dados a partir de um script em vez de um backup?
relate perguntas
-
SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado
-
Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?
-
Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?
-
Quais são as principais causas de deadlocks e podem ser evitadas?
-
Como determinar se um Índice é necessário ou necessário
A coluna object_id é exclusiva por banco de dados. Dois objetos em bancos de dados separados podem ter o mesmo object_id, porém objetos separados no mesmo banco de dados sempre têm valores de object_id diferentes.
Toda vez que você solta e cria um objeto, um novo valor de object_id é atribuído automaticamente e não há como influenciar qual valor é escolhido. No entanto, se você alterar um objeto usando a
ALTER
instrução, o object_id permanecerá o mesmo.Como não há como influenciar o valor escolhido para object_id, também não há como criar um script de banco de dados preservando o object_id, portanto, se você recriar um banco de dados usando um script t-sql, não haverá correlação entre o anterior valores object_id e os novos.
Um backup de banco de dados, por outro lado, copia as páginas de dados reais uma a uma, portanto, os valores de object_id permanecerão inalterados.
Em geral, é uma boa ideia ficar longe do valor object_id em um sistema de produção. Você não pode usá-lo para detectar uma mudança ou uma situação sem mudança. A única coisa para a qual ele deve ser usado é para filtrar ou juntar tabelas de sistema e DMVs. Você também pode usá-lo para descartar condicionalmente um objeto como este:
IF(OBJECT_ID('dbo.objectname') IS NOT NULL) DROP...
Para qualquer outra coisa, você deve considerar esse valor como fora dos limites.