2012-02-21 67 views
6

Tôi đang cố gắng ra việc sử dụng OBJECT_ID và thấy the following entry trong MSDN: "Trả về mã số đối tượng cơ sở dữ liệu của một đối tượng schema-scoped"OBJECT_ID làm gì trong SQL Server?

Số nhận dạng đối tượng cơ sở dữ liệu và đối tượng lược đồ là gì. Có vẻ như tôi bối rối hơn ban đầu.

Trả lời

4

OBJECT_ID được sử dụng để xác định đối tượng duy nhất trong các bảng cơ sở hệ thống.

Đây là khóa chính của bảng cơ sở sys.sysschobjs được sử dụng bởi chế độ xem siêu dữ liệu sys.objects và xuất hiện ở nhiều chế độ xem siêu dữ liệu khác. ví dụ: sys.partitions. Nếu bạn không truy vấn những khung nhìn này thì object_id không phải là rất hữu ích ngoại trừ có lẽ khi sử dụng trong một kiểm tra cho sự tồn tại đối tượng như dưới đây.

IF OBJECT_ID('T', 'U') IS NULL 
    /*Table T does not exist or no permissions*/ 

Đối tượng phạm vi lược đồ là đối tượng thuộc về lược đồ (ví dụ: bảng, chế độ xem, thủ tục lưu trữ). Bài viết MSDN đưa ra một ví dụ về một đối tượng phạm vi không có lược đồ trong các trình kích hoạt DDL.

Đây là một lỗi để thử và xác định một schema khi tạo những

CREATE TRIGGER dbo.SomeTrigger /*Will Fail*/ 
ON DATABASE 
FOR DROP_SYNONYM 
AS 
PRINT 'SomeTrigger' 

Non schema scoped đối tượng siêu dữ liệu vẫn được lưu trữ trong sys.sysschobjs nhưng không hiển thị trong giao diện sys.objects.

Các vấn đề liên quan