In SQL Server kunt u de FILE_IDEX()
functie om de ID van een bepaald databasebestand te retourneren. U kunt ook de FILE_ID()
. gebruiken functie om hetzelfde te doen. Beide functies dienen vrijwel hetzelfde doel, dus waarom heeft T-SQL beide functies?
Het lijkt erop dat FILE_IDEX()
is een vervanging voor FILE_ID()
, en het ondersteunt een groter aantal bestands-ID's. Microsoft raadt nu af om FILE_ID()
te gebruiken , omdat het zich in de onderhoudsmodus bevindt en in een toekomstige versie van SQL Server kan worden verwijderd.
Dus als je snel een antwoord zoekt voor welke functie je moet gebruiken, gebruik dan FILE_IDEX()
.
Maar als je geïnteresseerd bent in het verschil tussen deze twee functies, lees dan verder.
Het verschil
Het verschil tussen FILE_IDEX()
en FILE_ID()
zit in de retourtypes.
FILE_IDEX()
retourneert een int .FILE_ID()
retourneert een smallint .
Het feit dat FILE_IDEX()
geeft een geheel getal terug, wat betekent dat het grotere bestands-ID's aankan. Het kan bijvoorbeeld overweg met full-text catalogi.
De kleine gegevenstype kan alleen waarden tot 32.767 verwerken, terwijl een int kan waarden tot 2.147.483.647 aan. In SQL Server is het bestandsidentificatienummer dat is toegewezen aan full-text catalogi groter dan 32.767, en daarom is FILE_ID()
ondersteunt geen full-text catalogi.
Voorbeeld
Hier is een snel voorbeeld om de beperkingen van FILE_ID()
te demonstreren vergeleken met FILE_IDEX()
:
USE WideWorldImportersDW; SELECT FILE_IDEX('WWIDW_InMemory_Data_1') AS [FILE_IDEX()], FILE_ID('WWIDW_InMemory_Data_1') AS [FILE_ID()];
Resultaat:
+---------------+-------------+ | FILE_IDEX() | FILE_ID() | |---------------+-------------| | 65537 | NULL | +---------------+-------------+
In dit geval is de bestands-ID groter dan 32.767 en daarom FILE_ID()
retourneert NULL
.