집 >데이터 베이스 >MySQL 튜토리얼 >Oracle의 ROWID와 동등한 SQL Server는 무엇입니까?
SQL Server의 Oracle RowID와 동일
Oracle의 ROWID 유사 열은 테이블의 각 행을 고유하게 식별하고 테이블의 해당 위치에 대한 정보를 포함합니다. 데이터베이스. SQL Server에서 ROWID와 가장 가까운 것은 파일, 페이지, 슬롯의 세 가지 구성 요소가 있는 제거입니다.
제거를 얻으려면 문서화되지 않고 지원되지 않는 %%physloc%% 가상 열을 사용할 수 있습니다. , 처음 4바이트에 페이지 ID, 다음 2바이트에 파일 ID, 마지막 2바이트에 슬롯 위치가 포함된 이진(8) 값을 반환합니다.
사용할 수 있습니다. sys.fn_PhysLocFormatter 또는 sys.fn_PhysLocCracker 함수는 이 이진 값을 더 읽기 쉬운 형식으로 변환합니다.
CREATE TABLE T(X INT); INSERT INTO T VALUES(1),(2) SELECT %%physloc%% AS [%%physloc%%], sys.fn_PhysLocFormatter(%%physloc%%) AS [File:Page:Slot] FROM T
출력:
+--------------------+----------------+ | %%physloc%% | File:Page:Slot | +--------------------+----------------+ | 0x2926020001000000 | (1:140841:0) | | 0x2926020001000100 | (1:140841:1) | +--------------------+----------------+
SQL Server에서는 제거를 활용하지 않습니다. 쿼리 처리이므로 WHERE 절에 %%physloc%%를 사용하면 전체 테이블이 생성됩니다. 스캔.
파일, 페이지 및 슬롯 값을 다시 바이너리(8) 표현으로 변환하려면 다음을 사용하세요.
DECLARE @FileId int = 1, @PageId int = 338, @Slot int = 3 SELECT CAST(REVERSE(CAST(@PageId AS BINARY(4))) AS BINARY(4)) + CAST(REVERSE(CAST(@FileId AS BINARY(2))) AS BINARY(2)) + CAST(REVERSE(CAST(@Slot AS BINARY(2))) AS BINARY(2))
위 내용은 Oracle의 ROWID와 동등한 SQL Server는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!