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
.