`

SQLServer函数DB_ID和OBJECT_ID

 
阅读更多

DB_ID 函数 [System] 返回数据库 ID 号。 语法 DB_ID( [ database-name ] ) 参数 database-name 包含数据库名的字符串。如果不提供 database-name,则返回当前数据库的 ID 号。 返回值 INT 另请参见 global_database_id 选项 标准和兼容性 SQL/2008 服务商扩充。 示例当执行对象是服务器上唯一数据库的 SQL Anywhere 示例数据库时,该语句返回值 0。 SELECT DB_ID( 'demo' ); 执行对象是唯一处于运行状态的数据库时,以下语句返回值 0。

 

 

OBJECT_ID (Transact-SQL)

 

返回架构范围内对象的数据库对象标识号。

重要说明重要提示

使用 OBJECT_ID 不能查询非架构范围内的对象(如 DDL 触发器)。对于在 sys.objects 目录视图中找不到的对象,需要通过查询适当的目录视图来获取该对象的标识号。例如,若要返回 DDL 触发器的对象标识号,请使用 SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'

主题链接图标Transact-SQL 语法约定

<script type="text/javascript"></script>
<script src="/Areas/Global/Content/CodeSnippet.js" type="text/javascript"></script>
OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ] 
    object_name' [ ,'object_type' ] )
' object_name '

要使用的对象。object_name 的数据类型为 varcharnvarchar。如果 object_name 的数据类型为 varchar,则它将隐式转换为 nvarchar。可以选择是否指定数据库和架构名称。

' object_type '

架构范围的对象类型。object_type 的数据类型为 varcharnvarchar。如果 object_type 的数据类型为 varchar,则它将隐式转换为 nvarchar。有关对象类型的列表,请参阅 sys.objects (Transact-SQL) 中的 type 列。

对于空间索引,OBJECT_ID 返回 NULL。

出现错误时,返回 NULL。

用户只能查看其拥有的安全对象的元数据,或者已对其授予权限的安全对象的元数据。也就是说,如果用户对该对象没有任何权限,则那些会生成元数据的内置函数(如 OBJECT_ID)可能返回 NULL。有关详细信息,请参阅元数据可见性配置元数据可见性故障排除

当该参数对系统函数可选时,则采用当前数据库、主机、服务器用户或数据库用户。内置函数后面必须跟括号。

当指定临时表名时,除非当前数据库为 tempdb,否则必须在该临时表名之前加上数据库名称。例如:SELECT OBJECT_ID('tempdb..#mytemptable')

系统函数可以在选择列表、WHERE 子句和任何允许使用表达式的地方使用。有关详细信息,请参阅表达式(Transact-SQL)WHERE (Transact-SQL)

A. 返回指定对象的对象 ID

以下示例返回 AdventureWorks2008R2 数据库中 Production.WorkOrder 表的对象 ID。

<script src="/Areas/Global/Content/CodeSnippet.js" type="text/javascript"></script>
USE master;
GO
SELECT OBJECT_ID(N'AdventureWorks2008R2.Production.WorkOrder') AS 'Object ID';
GO


B. 验证对象是否存在

以下示例通过验证表是否具有对象 ID 来检查指定表的存在性。如果该表存在,则将其删除。如果该表不存在,则不执行 DROP TABLE 语句。

<script src="/Areas/Global/Content/CodeSnippet.js" type="text/javascript"></script>
USE AdventureWorks2008R2;
GO
IF OBJECT_ID (N'dbo.AWBuildVersion', N'U') IS NOT NULL
DROP TABLE dbo.AWBuildVersion;
GO


C. 使用 OBJECT_ID 指定系统函数的参数值

以下示例使用 sys.dm_db_index_operational_stats 函数返回 AdventureWorks2008R2 数据库中 Person.Address 表的所有索引和分区信息。

重要说明重要提示

在使用 Transact-SQL 函数 DB_ID 和 OBJECT_ID 返回参数值时,请始终确保返回有效的 ID。如果找不到数据库或对象的名称,例如相应名称不存在或拼写不正确,则两个函数都会返回 NULL。sys.dm_db_index_operational_stats 函数将 NULL 解释为指定所有数据库或所有对象的通配符值。由于这可能是无心之举,所以此部分中的示例说明了确定数据库 ID 和对象 ID 的安全方法。

<script src="/Areas/Global/Content/CodeSnippet.js" type="text/javascript"></script>
DECLARE @db_id int;
DECLARE @object_id int;
SET @db_id = DB_ID(N'AdventureWorks2008R2');
SET @object_id = OBJECT_ID(N'AdventureWorks2008R2.Person.Address');
IF @db_id IS NULL 
  BEGIN;
    PRINT N'Invalid database';
  END;
ELSE IF @object_id IS NULL
  BEGIN;
    PRINT N'Invalid object';
  END;
ELSE
  BEGIN;
    SELECT * FROM sys.dm_db_index_operational_stats(@db_id, @object_id, NULL, NULL);
  END;
GO


分享到:
评论

相关推荐

    SQLServer基本函数

    SQL Server 是一种关系数据库管理系统,它提供了多种基本函数来处理字符串、数学运算、日期和系统相关操作。下面我们将对这些基本函数进行详细的介绍。 字符串函数 字符串函数是 SQL Server 中最常用的函数之一,...

    sqlserver函数大全.pdf

    - `OBJECT_ID`、`DATABASE_ID`等,返回关于数据库对象和数据库属性的信息。 9. **排名函数**: - 如`RANK`、`DENSE_RANK`、`ROW_NUMBER`,在分区中为每行赋予唯一的排名值。 10. **行集函数**: - 包括`OPENXML...

    SQLServerProvider_Vc_

    总的来说,"SQLServerProvider_Vc_"是一个学习和理解如何在VC++环境中使用OLEDB连接SQL Server的好例子。通过这个项目,开发者可以深入理解数据库访问的底层机制,提高数据库操作的效率和安全性。

    OLEDB驱动程序大全 SQLServer-OleDB-Provider

    OLE DB驱动程序,尤其是SQL Server OLE DB Provider,是连接和操作SQL Server数据库的强大工具。它提供了灵活的数据访问方式,能够满足各种应用程序的需求。尽管现代技术如ADO.NET和ODBC已经很流行,但SQL Server ...

    SQLServer2000函数大全<绝对经典>

    这个"SQLServer2000函数大全"资源对于熟悉和精通SQL Server 2000的函数使用至关重要,无论你是初学者还是经验丰富的开发者,都能从中受益。通过深入学习和实践,你可以更加熟练地进行数据查询、处理和分析,提升...

    SQL Server 2005中的索引架构:抛开DBCC SHOWCONTIG,使用新的函数.pdf

    这段代码首先声明了两个变量@db_id和@object_id,然后将AdventureWorks数据库和ContactType表对应的对象ID分别赋予这两个变量。最后通过调用sys.dm_db_index_physical_stats()函数,并设置参数来获取指定数据库和...

    sql server 系统表 字段介绍等

    关键字段有`object_id`(视图ID)、`definition`(视图的SQL定义)。 7. **sys.schemas**:表示数据库中的模式,关键字段有`schema_id`(模式ID)、`name`(模式名)。 8. **sys.procedures**:存储了所有的存储...

    sqlserver 常用函数大全

    - `OBJECT_NAME(object_id)`:根据对象ID返回对象名称。 8. **其他特殊函数**: - `NEWID()`:生成一个新的全局唯一标识符(GUID)。 - `CURRENT_TIMESTAMP`:类似于`GETDATE()`,但通常用于列的默认值。 了解...

    SQL server Native Client 10.0

    SQL Server Native Client 10.0 是微软推出的一款专门用于与SQL Server 2008及后续版本交互的客户端库,它集成了ODBC(Open Database Connectivity)和OLE DB(Object Linking and Embedding, Database)接口。...

    SQL Server基本函数详细介绍.doc

    - **object_name(obj_id)**:返回由 obj_id 指定的对象名称。 - **col_name(obj_id,col_id)**:返回指定对象中的列名称。 - **col_length(objname,colname)**:返回指定列的长度。 - **valid_name(char_expr)**:...

    sqlserver常用函数

    - **示例**:`SELECT OBJECT_NAME(OBJECT_ID('Table1'))`。 5. **`COL_NAME(OBJ_ID, COL_ID)`** - **用途**:返回列的名称。 - **示例**:`SELECT COL_NAME(OBJECT_ID('Table1'), 1)`。 6. **`COL_LENGTH...

    SQLServer2000常用函数大全及个人收藏

    在SQL Server 2000中,掌握常用的函数对于数据库管理和开发至关重要。SQL(Structured Query Language)是用于处理关系数据库的...希望这个SQLServer2000常用函数大全能够对你有所帮助,并激发你对数据库学习的热情。

    SQL Server索引重建手册

    ON ps.[object_id] = i.[object_id] AND ps.index_id = i.index_id WHERE ps.database_id = DB_ID() AND ps.index_type_desc &lt;&gt; 'HEAP' AND ps.page_count &gt; 2500 ORDER BY ps.avg_fragmentation_in_percent DESC ...

    SQL SERVER函数

    SQL Server函数是数据库管理系统SQL Server中的一类重要功能,它们用于处理和操作数据。这些函数分为多种类型,包括字符串函数、数学函数、日期函数以及系统函数。下面将详细阐述这些函数的功能和用法。 1. **字符...

    SQL Server 2000 函数大全

    - OBJECT_ID:返回对象的唯一标识符。 - sys.columns:系统视图,提供关于数据库中所有列的信息。 - sys.objects:系统视图,提供关于数据库中所有对象的信息。 6. 聚合函数: - AVG:计算一组数值的平均值。 ...

    SQLServer函数

    - `col_name(obj_id,col_id)`:根据对象ID和列ID返回列名。 - `col_length(objname,colname)`:返回列的长度。 - `valid_name(char_expr)`:检查给定的字符表达式是否符合SQL Server的有效标识符规则。 这些函数...

    Win10可用的Microsoft SQL Server 2008 Native Client

    6. **数据类型和函数的扩展**:除了基本的SQL Server数据类型,Native Client还支持一些特定的类型,如DateTime2、Time、DateTimeOffset等,并且提供了新的函数,如DATEADD和DATEDIFF,以增强日期和时间操作的灵活性...

    Microsoft SQL Server 2005 Native Client

    2. **支持新特性**:它支持SQL Server 2005引入的新特性,如行版本控制、分区视图、用户定义的函数和存储过程等。 3. **安全性增强**:支持集成Windows身份验证,提供更安全的连接方式,同时支持SQL Server的角色...

    ado访问sqlserver2008_mfc

    在使用MFC和ADO访问SQL Server 2008时,首先需要确保已安装了相应的数据库驱动,例如SQL Native Client或ODBC驱动。接下来,我们将通过以下步骤创建一个简单的MFC应用: 1. **设置项目**:在Visual Studio 2010中,...

    Microsoft SQL Server 2008 Native Client

    2. **替代方案**: 随着时间的发展,Microsoft推出了新的数据访问组件,如SQL Server Native Client 11.0(在SQL Server 2012中引入),以及更现代的ODBC和OLE DB驱动程序,如ODBC Driver 17 for SQL Server和OLE DB ...

Global site tag (gtag.js) - Google Analytics