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 .