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 .