Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

FILE_ID() vs FILE_IDEX() w SQL Server:jaka jest różnica?

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 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 5 sposobów naprawienia błędu „Podziel przez zero” w programie SQL Server (Msg 8134)

  2. Interfejsy sieciowe SQL, błąd:50 — wystąpił błąd w czasie wykonywania lokalnej bazy danych. Nie można utworzyć automatycznej instancji

  3. Zaktualizuj profil poczty bazy danych w programie SQL Server (T-SQL)

  4. Jak utworzyć klucz podstawowy w SQL Server (przykłady T-SQL)

  5. Rozwiązania dla INSERT OR UPDATE w SQL Server