I SQL Server kan du bruge FILE_IDEX()
funktion til at returnere ID'et for en given databasefil. Du kan også bruge FILE_ID()
funktion til at gøre det samme. Begge funktioner tjener stort set det samme formål, så hvorfor har T-SQL begge funktioner?
Det ser ud til, at FILE_IDEX()
er en erstatning for FILE_ID()
, og det understøtter et større udvalg af fil-id'er. Microsoft fraråder nu at bruge FILE_ID()
, da den er i vedligeholdelsestilstand og kan blive fjernet i en fremtidig version af SQL Server.
Så hvis du leder efter et hurtigt svar på, hvilken funktion du skal bruge, så brug FILE_IDEX()
.
Men hvis du er interesseret i forskellen mellem disse to funktioner, så læs videre.
Forskellen
Forskellen mellem FILE_IDEX()
og FILE_ID()
er i returtyperne.
FILE_IDEX()
returnerer en int .FILE_ID()
returnerer en smallint .
Det faktum, at FILE_IDEX()
returnerer et heltal betyder, at det kan håndtere større fil-id'er. For eksempel kan den håndtere fuldtekstkataloger.
smallint datatypen kan kun håndtere værdier op til 32.767, hvorimod en int kan håndtere værdier op til 2.147.483.647. I SQL Server overstiger filidentifikationsnummeret, der er tildelt fuldtekstkataloger, 32.767, og derfor FILE_ID()
understøtter ikke fuldtekstkataloger.
Eksempel
Her er et hurtigt eksempel til at demonstrere begrænsningerne for FILE_ID()
sammenlignet med FILE_IDEX()
:
USE WideWorldImportersDW; SELECT FILE_IDEX('WWIDW_InMemory_Data_1') AS [FILE_IDEX()], FILE_ID('WWIDW_InMemory_Data_1') AS [FILE_ID()];
Resultat:
+---------------+-------------+ | FILE_IDEX() | FILE_ID() | |---------------+-------------| | 65537 | NULL | +---------------+-------------+
I dette tilfælde overstiger fil-id'et 32.767 og derfor FILE_ID()
returnerer NULL
.