Cấu hình Quoted Identifiers
Kiểm tra trạng thái quoted_identifier của phiên làm việc hiện tại:
SELECT quoted_identifier
FROM sys.dm_exec_sessions
WHERE session_id = @@SPID
Thiết lập trạng thái quoted_identifier cho phiên hiện tại:
SET QUOTED_IDENTIFIER ON/OFF
Xác định vị trí vật lý của trang dữ liệu
Phương pháp 1: Sử dụng view hệ thống sys.system_internals_allocation_units:
SELECT a.first_page
FROM sys.partitions p
JOIN sys.system_internals_allocation_units a
ON p.partition_id = a.container_id
WHERE p.object_id = OBJECT_ID('your_table')
Kết quả dạng 0x160200000100 sẽ được chuyển đổi thành:
- File ID:
0x0001(giá trị thập phân: 1) - Page ID:
0x00000216(giá trị thập phân: 534)
Phương pháp 2: Sử dụng lệnh DBCC IND:
DBCC IND(database_name, table_name, -1)
Phương pháp 3: Hàm định dạng vị trí vật lý:
SELECT sys.fn_PhysLocFormatter(%%physloc%%) AS PhysicalLocation, * FROM your_table
Xem nội dung trang dữ liệu
Sử dụng lệnh DBCC PAGE:
DBCC TRACEON(3604)
DBCC PAGE(test, 1, 534, 3)
Tham số: (tên CSDL, file_id, page_id, tùy chọn hiển thị)
Cách lưu trữ giá trị NULL trong cột VARCHAR
Tạo bảng thử nghiệm:
CREATE TABLE dbo.cot_null
(
id INT PRIMARY KEY IDENTITY,
cot1 VARCHAR(10) NULL,
cot2 VARCHAR(10) NULL
)
Phân tích cho thấy:
- NULL và chuỗi rỗng được lưu trữ tương tự nhau
- Cột NULL ở cuối không được tính vào độ dài dữ liệu
- Cột có độ dài cố định (CHAR) lưu giá trị 0 cho NULL
Định dạng ngày/giờ
So sánh các kiểu dữ liệu:
| Kiểu dữ liệu | Giá trị mẫu | Phạm vi lưu trữ |
|---|---|---|
| DATETIME | 1900-01-01 đến 9999-12-31 | 8 byte |
| DATETIME2 | 0001-01-01 đến 9999-12-31 | 6-8 byte |
Ví dụ chuyển đổi:
SELECT CAST(dt1 AS VARBINARY(8)) AS bin_dt1,
CAST(dt2 AS VARBINARY(10)) AS bin_dt2
FROM times
Công thức tính toán giá trị thời gian:
- DATETIME: Số tick (1 tick = 3.33ms)
- DATETIME2:
((H*60+M)*60+S)*10^D + F