V SQL Server můžete použít FILE_IDEX()
funkce pro vrácení ID daného databázového souboru. Můžete také použít FILE_ID()
funkce dělat to samé. Obě funkce slouží téměř ke stejnému účelu, tak proč má T-SQL obě funkce?
Zdá se, že FILE_IDEX()
je náhradou za FILE_ID()
a podporuje větší rozsah ID souborů. Společnost Microsoft nyní nedoporučuje používat FILE_ID()
, protože je v režimu údržby a může být odstraněn v budoucí verzi SQL Server.
Pokud tedy hledáte rychlou odpověď na to, kterou funkci použít, použijte FILE_IDEX()
.
Pokud vás ale zajímá rozdíl mezi těmito dvěma funkcemi, čtěte dále.
Rozdíl
Rozdíl mezi FILE_IDEX()
a FILE_ID()
je v návratových typech.
FILE_IDEX()
vrátí int .FILE_ID()
vrátí smallint .
Skutečnost, že FILE_IDEX()
vrátí celé číslo znamená, že dokáže zpracovat větší ID souborů. Poradí si například s fulltextovými katalogy.
Malý datový typ dokáže zpracovat pouze hodnoty do 32 767, zatímco int zvládne hodnoty až do 2 147 483 647. Na serveru SQL Server identifikační číslo souboru přiřazené fulltextovým katalogům přesahuje 32 767, a proto FILE_ID()
nepodporuje fulltextové katalogy.
Příklad
Zde je rychlý příklad demonstrující omezení FILE_ID()
ve srovnání s FILE_IDEX()
:
USE WideWorldImportersDW; SELECT FILE_IDEX('WWIDW_InMemory_Data_1') AS [FILE_IDEX()], FILE_ID('WWIDW_InMemory_Data_1') AS [FILE_ID()];
Výsledek:
+---------------+-------------+ | FILE_IDEX() | FILE_ID() | |---------------+-------------| | 65537 | NULL | +---------------+-------------+
V tomto případě ID souboru přesahuje 32 767, a proto FILE_ID()
vrátí NULL
.