sql >> Database >  >> RDS >> Sqlserver

FILE_ID() versus FILE_IDEX() in SQL Server:wat is het verschil?

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 .


  1. 4 tips voor het uitvoeren van SQL Server-diagnose

  2. Oracle PLSQL-tabellen gebruiken (associatieve array of index-by-tabel)

  3. Verbinding maken met MySQL met Perl

  4. Gegevensbestanden verplaatsen in SQL Server - Deel 1