1. 程式人生 > >【SQL server基礎】objectproperty()函數

【SQL server基礎】objectproperty()函數

del dex scons 手動更新 asr ble rtu pad sdi

SQL Server OBJECTPROPERTY使用方法

OBJECTPROPERTY 返回有關當前數據庫中的模式作用域對象的信息。此函數不能用於不是模式範圍的對象,例如數據定義語言(DDL)觸發器和事件通知。

OBJECTPROPERTY 語法:

1 OBJECTPROPERTY ( id , property ) 

參數:

id:表示當前數據庫中對象ID的表達式。id是int,並且被假定為當前數據庫上下文中的模式作用域對象。

property:是表示由id指定的對象返回的信息的表達式。屬性可以是以下值之一。

註意:

除非另有說明,否則當屬性不是有效的屬性名稱時返回NULL ,id不是有效的對象ID,

id是指定屬性的不受支持的對象類型,或者調用者沒有查看對象元數據的權限。

屬性名稱 對象類型 說明和返回的值
CnstIsClustKey 約束

具有聚集索引的 PRIMARY KEY 約束。

1 = True

0 = False

CnstIsColumn 約束

單個列上的 CHECK、DEFAULT 或 FOREIGN KEY 約束。

1 = True

0 = False

CnstIsDeleteCascade 約束

具有 ON DELETE CASCADE 選項的 FOREIGN KEY 約束。

1 = True

0 = False

CnstIsDisabled
約束

禁用的約束。

1 = True

0 = False

CnstIsNonclustKey 約束

非聚集索引的 PRIMARY KEY 或 UNIQUE 約束。

1 = True

0 = False

CnstIsNotRepl 約束

使用 NOT FOR REPLICATION 關鍵字定義的約束。

1 = True

0 = False

CnstIsNotTrusted 約束

啟用約束時未檢查現有行,因此可能不是所有行都適用該約束。

1 = True

0 = False

CnstIsUpdateCascade 約束

具有 ON UPDATE CASCADE 選項的 FOREIGN KEY 約束。

1 = True

0 = False

ExecIsAfterTrigger 觸發器

AFTER 觸發器。

1 = True

0 = False

ExecIsAnsiNullsOn Transact-SQL 函數、Transact-SQL 過程、Transact-SQL 觸發器、視圖

創建時的 ANSI_NULLS 設置。

1 = True

0 = False

ExecIsDeleteTrigger 觸發器

DELETE 觸發器。

1 = True

0 = False

ExecIsFirstDeleteTrigger 觸發器

對表執行 DELETE 時觸發的第一個觸發器。

1 = True

0 = False

ExecIsFirstInsertTrigger 觸發器

對表執行 INSERT 時觸發的第一個觸發器。

1 = True

0 = False

ExecIsFirstUpdateTrigger 觸發器

對表執行 UPDATE 時觸發的第一個觸發器。

1 = True

0 = False

ExecIsInsertTrigger 觸發器

INSERT 觸發器。

1 = True

0 = False

ExecIsInsteadOfTrigger 觸發器

INSTEAD OF 觸發器。

1 = True

0 = False

ExecIsLastDeleteTrigger 觸發器

對表執行 DELETE 時激發的最後一個觸發器。

1 = True

0 = False

ExecIsLastInsertTrigger 觸發器

對表執行 INSERT 時激發的最後一個觸發器。

1 = True

0 = False

ExecIsLastUpdateTrigger 觸發器

對表執行 UPDATE 時激發的最後一個觸發器。

1 = True

0 = False

ExecIsQuotedIdentOn Transact-SQL 函數、Transact-SQL 過程、Transact-SQL 觸發器、視圖

創建時的 QUOTED_IDENTIFIER 設置。

1 = True

0 = False

ExecIsStartup 過程

啟動過程。

1 = True

0 = False

ExecIsTriggerDisabled 觸發器

禁用的觸發器。

1 = True

0 = False

ExecIsTriggerNotForRepl 觸發器

定義為 NOT FOR REPLICATION 的觸發器。

1 = True

0 = False

ExecIsUpdateTrigger 觸發器

UPDATE 觸發器。

1 = True

0 = False

HasAfterTrigger 表、視圖

表或視圖具有 AFTER 觸發器。

1 = True

0 = False

HasDeleteTrigger 表、視圖

表或視圖具有 DELETE 觸發器。

1 = True

0 = False

HasInsertTrigger 表、視圖

表或視圖具有 INSERT 觸發器。

1 = True

0 = False

HasInsteadOfTrigger 表、視圖

表或視圖具有 INSTEAD OF 觸發器。

1 = True

0 = False

HasUpdateTrigger 表、視圖

表或視圖具有 UPDATE 觸發器。

1 = True

0 = False

IsAnsiNullsOn Transact-SQL 函數、Transact-SQL 過程、表、Transact-SQL 觸發器、視圖

指定表的 ANSI NULLS 選項設置為 ON。這表示所有對空值的比較都取值為 UNKNOWN。只要表存在,此設置將應用於表定義中的所有表達式,包括計算列和約束。

1 = True

0 = False

IsCheckCnst 架構範圍內的任何對象

CHECK 約束。

1 = True

0 = False

IsConstraint 架構範圍內的任何對象

列或表的單列 CHECK、DEFAULT 或 FOREIGN KEY 約束。

1 = True

0 = False

IsDefault 架構範圍內的任何對象

綁定的默認值。

1 = True

0 = False

IsDefaultCnst 架構範圍內的任何對象

DEFAULT 約束。

1 = True

0 = False

IsDeterministic 函數、視圖

函數或視圖的確定性屬性。

1 = 確定

0 = 不確定

IsEncrypted Transact-SQL 函數、Transact-SQL 過程、表、Transact-SQL 觸發器和視圖

指示模塊語句的原始文本已轉換為模糊格式。模糊代碼的輸出在 SQL Server 2005 的任何目錄視圖中都不能直接顯示。對系統表或數據庫文件沒有訪問權限的用戶不能檢索模糊文本。但是,能夠通過 DAC 端口訪問系統表的用戶或能夠直接訪問數據庫文件的用戶可以檢索此文本。此外,能夠向服務器進程附加調試器的用戶可在運行時從內存中檢索原始過程。

1 = 已加密

0 = 未加密

基本數據類型:int

IsExecuted 架構範圍內的任何對象

可執行對象(視圖、過程、函數或觸發器)。

1 = True

0 = False

IsExtendedProc 架構範圍內的任何對象

擴展過程。

1 = True

0 = False

IsForeignKey 架構範圍內的任何對象

FOREIGN KEY 約束。

1 = True

0 = False

IsIndexed 表、視圖

包含索引的表或視圖。

1 = True

0 = False

IsIndexable 表、視圖

可以創建索引的表或視圖。

1 = True

0 = False

IsInlineFunction 函數

內聯函數。

1 = 內聯函數

0 = 非內聯函數

IsMSShipped 架構範圍內的任何對象

安裝 SQL Server 過程中創建的對象。

1 = True

0 = False

IsPrimaryKey 架構範圍內的任何對象

PRIMARY KEY 約束。

1 = True

0 = False

NULL = 非函數,或對象 ID 無效。

IsProcedure 架構範圍內的任何對象

過程。

1 = True

0 = False

IsQuotedIdentOn Transact-SQL 函數、Transact-SQL 過程、表、Transact-SQL 觸發器、視圖、CHECK 約束、DEFAULT 定義

指定對象的引號標識符設置為 ON。這表示用英文雙引號分隔對象定義中涉及的所有表達式中的標識符。

1 = ON

0 = OFF

IsQueue 架構範圍內的任何對象

Service Broker 隊列

1 = True

0 = False

IsReplProc 架構範圍內的任何對象

復制過程。

1 = True

0 = False

IsRule 架構範圍內的任何對象

綁定規則。

1 = True

0 = False

IsScalarFunction 函數

標量值函數。

1 = 標量值函數

0 = 非標量值函數

IsSchemaBound 函數、視圖

使用 SCHEMABINDING 創建的綁定到架構的函數或視圖。

1 = 綁定到架構

0 = 不綁定架構。

IsSystemTable

系統表。

1 = True

0 = False

IsTable

表。

1 = True

0 = False

IsTableFunction 函數

表值函數。

1 = 表值函數

0 = 非表值函數

IsTrigger 架構範圍內的任何對象

觸發器。

1 = True

0 = False

IsUniqueCnst 架構範圍內的任何對象

UNIQUE 約束。

1 = True

0 = False

IsUserTable

用戶定義的表。

1 = True

0 = False

IsView 視圖

視圖。

1 = True

0 = False

OwnerId 架構範圍內的任何對象

對象的所有者。

註意:

架構所有者不一定是對象所有者。例如,子對象(其 parent_object_id 為非空值)將始終返回與父對象相同的所有者 ID。

Nonnull = 對象所有者的數據庫用戶 ID。

TableDeleteTrigger

表具有 DELETE 觸發器。

>1 = 指定類型的第一個觸發器的 ID。

TableDeleteTriggerCount

表具有指定數目的 DELETE 觸發器。

>0 = DELETE 觸發器數目。

TableFullTextMergeStatus

表所具有的全文索引當前是否正在合並。

0 = 表沒有全文索引,或者全文索引未在合並。

1 = 全文索引正在合並。

TableFullTextBackgroundUpdateIndexOn

表已啟用全文後臺更新索引(自動更改跟蹤)。

1 = TRUE

0 = FALSE

TableFulltextCatalogId

表的全文索引數據所在的全文目錄的 ID。

非零 = 全文目錄 ID,它與全文索引表中標識行的唯一索引相關。

0 = 表沒有全文索引。

TableFulltextChangeTrackingOn

適用於:SQL Server 2008通過SQL Server 2016.

表格啟用了全文變更跟蹤。

1 = TRUE

0 = FALSE

TableFulltextDocsProcessed

適用於:SQL Server 2008通過SQL Server 2016.

自全文索引開始以來處理的行數。在為全文搜索索引的表中,一行的所有列都被視為要編制索引的一個文檔的一部分。

0 =沒有主動抓取或全文索引完成。

> 0 =以下之一(A或B):A)自完成,增量或手動更改跟蹤人口開始以來,通過插入或更新操作處理的文檔數。B)啟用了具有後臺更新索引總體的更改跟蹤後由插入或更新操作處理的行數,全文索引架構已更改,重新創建全文目錄或重新啟動SQL Server實例等。

NULL =表沒有全文索引。

TableFulltextFailCount 行數全文搜索沒有索引。

0 =人口已經完成。

> 0 =以下(A或B)之一:A)自完全,增量和手動更新開始以來未編入索引的文檔數量更改跟蹤人口。B)對於具有後臺更新索引的變更跟蹤,自開始人口以來未編入索引的行數,或者重新啟動人口。這可能是由於模式更改,目錄重建,服務器重新啟動等引起的。

NULL =表沒有全文索引。
TableFulltextItemCount 成功全文索引的行數
TableFulltextKeyColumn 與參與全文索引定義的單列唯一索引相關聯的列的ID。

0 =表沒有全文索引。
TableFulltextPendingChanges

要處理的掛起更改跟蹤項的數目。

0 = 未啟用更改跟蹤。

NULL = 表沒有全文索引。

TableFulltextPopulateStatus

0 = 空閑。

1 = 正在進行完全填充。

2 = 正在進行增量填充。

3 = 正在傳播所跟蹤的更改。

4 = 正在進行後臺更新索引(例如,自動跟蹤更改)。

5 = 全文索引已中止或暫停。

TableHasActiveFulltextIndex

表具有活動的全文索引。

1 = True

0 = False

TableHasCheckCnst

表具有 CHECK 約束。

1 = True

0 = False

TableHasClustIndex

表具有聚集索引。

1 = True

0 = False

TableHasDefaultCnst

表具有 DEFAULT 約束。

1 = True

0 = False

TableHasDeleteTrigger

表具有 DELETE 觸發器。

1 = True

0 = False

TableHasForeignKey

表具有 FOREIGN KEY 約束。

1 = True

0 = False

TableHasForeignRef

表由 FOREIGN KEY 約束引用。

1 = True

0 = False

TableHasIdentity

表具有標識列。

1 = True

0 = False

TableHasIndex

表具有任意類型的索引。

1 = True

0 = False

TableHasInsertTrigger

對象具有 INSERT 觸發器。

1 = True

0 = False

TableHasNonclustIndex

表有非聚集索引。

1 = True

0 = False

TableHasPrimaryKey

表具有主鍵。

1 = True

0 = False

TableHasRowGuidCol

表具有用於唯一標識ROWGUIDCOL

1 = True

0 = False

TableHasTextImage

表具有 textntextimage 列。

1 = True

0 = False

TableHasTimestamp

表具有一個時間戳列。

1 = True

0 = False

TableHasUniqueCnst

表具有 UNIQUE 約束。

1 = True

0 = False

TableHasUpdateTrigger

對象有 UPDATE 觸發器。

1 = True

0 = False

TableHasVarDecimalStorageFormat 表啟用了vardecimal存儲格式。

1 = True

0 = False
TableInsertTrigger

表具有 INSERT 觸發器。

>1 = 指定類型的第一個觸發器的 ID。

TableInsertTriggerCount

表有指定數目的 INSERT 觸發器。

>0 = INSERT 觸發器的個數。

TableIsFake

表不是真實的表。它將由 SQL Server 數據庫引擎根據需要在內部進行具體化。

1 = True

0 = False

TableIsLockedOnBulkLoad 由於bcp或BULK INSERT作業,表被鎖定。

1 = True

0 = False
TableIsPinned 表被固定在數據緩存中。

0 = False
TableIsMemoryOptimized 表是內存優化

1 = True

0 = False

基本數據類型:int
TableTextInRowLimit 行中的文本允許的最大字節數。

如果沒有設置行中的文本選項,則為0。
TableUpdateTrigger 表有一個UPDATE觸發器。

> 1 =具有指定類型的第一個觸發器的ID。
TableUpdateTriggerCount

該表具有指定數量的UPDATE觸發器。

> 0 = UPDATE觸發器的數量。

TableHasColumnSet

表具有列集。

0 = False

1 = True

TableTemporalType 指定表的類型。

0 =非時間表

1 =系統版本表

2的歷史表2 =系統版本化的時間表

 1 -- 驗證 dbo.Department 是否是一個表
 2 IF (OBJECTPROPERTY (OBJECT_ID(Ndbo.Department),ISTABLE) = 1)
 3 begin
 4     select Department 是一個表
 5 end
 6 ELSE IF (OBJECTPROPERTY (OBJECT_ID(Ndbo.Department),ISTABLE) = 0)
 7 begin
 8     select Department 不是一個表
 9 end
10 ELSE IF (OBJECTPROPERTY (OBJECT_ID(Ndbo.Department),ISTABLE) IS NULL)
11 begin
12     select Department 不是一個有效的對象
13 end
14 GO

 1 -- 驗證表 Department 是否 是用戶自定義的表
 2 IF (OBJECTPROPERTY (OBJECT_ID(Ndbo.Department),IsUserTable) = 1)
 3 begin
 4    SELECT Department 是用戶自定義的表  
 5 end
 6 ELSE   
 7 begin
 8    SELECT Department 不是用戶自定義的表;  
 9 end
10 GO

【SQL server基礎】objectproperty()函數