W SQL Server możesz użyć FILE_IDEX()
funkcja zwracająca identyfikator danego pliku bazy danych. Możesz także użyć FILE_ID()
funkcja zrobić to samo. Obie funkcje służą praktycznie temu samemu celowi, więc dlaczego T-SQL ma obie funkcje?
Wygląda na to, że FILE_IDEX()
jest zamiennikiem dla FILE_ID()
i obsługuje większy zakres identyfikatorów plików. Microsoft odradza teraz używanie FILE_ID()
, ponieważ jest w trybie konserwacji i może zostać usunięty w przyszłej wersji programu SQL Server.
Więc jeśli szukasz szybkiej odpowiedzi na pytanie, której funkcji użyć, użyj FILE_IDEX()
.
Ale jeśli interesuje Cię różnica między tymi dwiema funkcjami, czytaj dalej.
Różnica
Różnica między FILE_IDEX()
i FILE_ID()
jest w typach zwracanych.
FILE_IDEX()
zwraca int .FILE_ID()
zwraca mały .
Fakt, że FILE_IDEX()
zwraca liczbę całkowitą, co oznacza, że może obsługiwać większe identyfikatory plików. Na przykład może obsługiwać katalogi pełnotekstowe.
mały typ danych może obsługiwać tylko wartości do 32 767, podczas gdy int może obsługiwać wartości do 2 147 483 647. W SQL Server numer identyfikacyjny pliku przypisany do wykazów pełnotekstowych przekracza 32 767, a zatem FILE_ID()
nie obsługuje katalogów pełnotekstowych.
Przykład
Oto szybki przykład demonstrujący ograniczenia FILE_ID()
w porównaniu z FILE_IDEX()
:
USE WideWorldImportersDW; SELECT FILE_IDEX('WWIDW_InMemory_Data_1') AS [FILE_IDEX()], FILE_ID('WWIDW_InMemory_Data_1') AS [FILE_ID()];
Wynik:
+---------------+-------------+ | FILE_IDEX() | FILE_ID() | |---------------+-------------| | 65537 | NULL | +---------------+-------------+
W tym przypadku identyfikator pliku przekracza 32 767, a zatem FILE_ID()
zwraca NULL
.