SQL Serverでは、FILE_IDEX()を使用できます。 指定されたデータベースファイルのIDを返す関数。 FILE_ID()を使用することもできます 同じことをする機能。どちらの関数もほぼ同じ目的を果たしますが、なぜT-SQLに両方の関数があるのですか?
FILE_IDEX()のようです FILE_ID()の代わりになります 、およびより広範囲のファイルIDをサポートします。 Microsoftは現在、FILE_ID()の使用を推奨していません 、メンテナンスモードであり、SQLServerの将来のバージョンで削除される可能性があるためです。
したがって、使用する関数の簡単な答えを探している場合は、FILE_IDEX()を使用してください。 。
ただし、これら2つの機能の違いに興味がある場合は、読み進めてください。
違い
FILE_IDEX()の違い およびFILE_ID() リターンタイプにあります。
-
FILE_IDEX()intを返します 。 -
FILE_ID()smallintを返します 。
FILE_IDEX()という事実 整数を返すということは、より大きなファイルIDを処理できることを意味します。たとえば、フルテキストカタログを処理できます。
smallint データ型は32,767までの値しか処理できませんが、 int 最大2,147,483,647の値を処理できます。 SQL Serverでは、フルテキストカタログに割り当てられたファイルID番号が32,767を超えるため、FILE_ID() フルテキストカタログはサポートしていません。
例
FILE_ID()の制限を示す簡単な例を次に示します。 FILE_IDEX()と比較した場合 :
USE WideWorldImportersDW;
SELECT
FILE_IDEX('WWIDW_InMemory_Data_1') AS [FILE_IDEX()],
FILE_ID('WWIDW_InMemory_Data_1') AS [FILE_ID()];
結果:
+---------------+-------------+ | FILE_IDEX() | FILE_ID() | |---------------+-------------| | 65537 | NULL | +---------------+-------------+
この場合、ファイルIDは32,767を超えるため、FILE_ID() NULLを返します 。