sql >> Database teknologi >  >> RDS >> Sqlserver

FILE_ID() vs FILE_IDEX() i SQL Server:Hvad er forskellen?

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 .


  1. Sådan overføres strengmatrix i SQL-parameter til IN-klausul i SQL

  2. Hvordan tjekker man JDK-versionen i Oracle?

  3. Oracle-databasegendannelse

  4. Sådan får du første og sidste dag i forrige måned (med tidsstempel) i SQL Server