In SQL Server puoi utilizzare FILE_IDEX() funzione per restituire l'ID di un determinato file di database. Puoi anche usare FILE_ID() funzione per fare la stessa cosa. Entrambe le funzioni hanno più o meno lo stesso scopo, quindi perché T-SQL ha entrambe le funzioni?
Sembra che FILE_IDEX() è un sostituto di FILE_ID() e supporta una gamma più ampia di ID file. Microsoft ora sconsiglia di utilizzare FILE_ID() , poiché è in modalità di manutenzione e potrebbe essere rimosso in una versione futura di SQL Server.
Quindi, se stai cercando una risposta rapida per quale funzione utilizzare, usa FILE_IDEX() .
Ma se sei interessato alla differenza tra queste due funzioni, continua a leggere.
La differenza
La differenza tra FILE_IDEX() e FILE_ID() è nei tipi di ritorno.
FILE_IDEX()restituisce un int .FILE_ID()restituisce un smallint .
Il fatto che FILE_IDEX() restituisce un numero intero significa che può gestire ID file più grandi. Ad esempio, può gestire cataloghi full-text.
La piccola intelligenza il tipo di dati può gestire solo valori fino a 32.767, mentre un int può gestire valori fino a 2.147.483.647. In SQL Server, il numero di identificazione del file assegnato ai cataloghi full-text supera 32.767 e, pertanto, FILE_ID() non supporta i cataloghi full-text.
Esempio
Ecco un rapido esempio per dimostrare i limiti di FILE_ID() rispetto a FILE_IDEX() :
USE WideWorldImportersDW;
SELECT
FILE_IDEX('WWIDW_InMemory_Data_1') AS [FILE_IDEX()],
FILE_ID('WWIDW_InMemory_Data_1') AS [FILE_ID()];
Risultato:
+---------------+-------------+ | FILE_IDEX() | FILE_ID() | |---------------+-------------| | 65537 | NULL | +---------------+-------------+
In questo caso, l'ID del file supera 32.767 e quindi FILE_ID() restituisce NULL .