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
を返します 。