No SQL Server, você pode usar o
FILE_IDEX()
função para retornar o ID de um determinado arquivo de banco de dados. Você também pode usar o FILE_ID()
função para fazer a mesma coisa. Ambas as funções servem praticamente ao mesmo propósito, então por que o T-SQL tem ambas as funções? Parece que
FILE_IDEX()
é um substituto para FILE_ID()
, e oferece suporte a um intervalo maior de IDs de arquivo. A Microsoft agora não recomenda o uso de FILE_ID()
, pois está em modo de manutenção e pode ser removido em uma versão futura do SQL Server. Então, se você está procurando uma resposta rápida para qual função usar, use
FILE_IDEX()
. Mas se você estiver interessado na diferença entre essas duas funções, continue lendo.
A diferença
A diferença entre
FILE_IDEX()
e FILE_ID()
está nos tipos de retorno. FILE_IDEX()
retorna um int .FILE_ID()
retorna um pequeno .
O fato de que
FILE_IDEX()
retorna um número inteiro significa que ele pode lidar com IDs de arquivos maiores. Por exemplo, ele pode lidar com catálogos de texto completo. O pequeno tipo de dados só pode lidar com valores de até 32.767, enquanto um int pode manipular valores de até 2.147.483.647. No SQL Server, o número de identificação do arquivo atribuído aos catálogos de texto completo excede 32.767 e, portanto,
FILE_ID()
não suporta catálogos de texto completo. Exemplo
Aqui está um exemplo rápido para demonstrar as limitações de
FILE_ID()
quando comparado com FILE_IDEX()
:USE WideWorldImportersDW; SELECT FILE_IDEX('WWIDW_InMemory_Data_1') AS [FILE_IDEX()], FILE_ID('WWIDW_InMemory_Data_1') AS [FILE_ID()];
Resultado:
+---------------+-------------+ | FILE_IDEX() | FILE_ID() | |---------------+-------------| | 65537 | NULL | +---------------+-------------+
Nesse caso, o ID do arquivo excede 32.767 e, portanto,
FILE_ID()
retorna NULL
.