天天看點

使用資訊架構視圖通路資料庫中繼資料

<b>中繼資料簡介</b>

中繼資料 (metadata) 最常見的定義為"有關資料的結構資料",或者再簡單一點就是"關于資料的資訊",日常生活中的圖例、圖書館目錄卡和名片等都可以看作是中繼資料。在關系型資料庫管理系統 (dbms) 中,中繼資料描述了資料的結構和意義。比如在管理、維護 sql server 或者是開發資料庫應用程式的時候,我們經常要擷取一些涉及到資料庫架構的資訊:

某個資料庫中的表和視圖的個數以及名稱 ;

某個表或者視圖中列的個數以及每一列的名稱、資料類型、長度、精度、描述等;

某個表上定義的限制;

某個表上定義的索引以及主鍵/外鍵的資訊。

資訊架構視圖基于 sql-92 标準中針對架構視圖的定義,這些視圖獨立于系統表,提供了關于 sql server 中繼資料的内部視圖。資訊架構視圖的最大優點是,即使我們對系統表進行了重要的修改,應用程式也可以正常地使用這些視圖進行通路。是以對于應用程式來說,隻要是符合 sql-92 标準的資料庫系統,使用資訊架構視圖總是可以正常工作的。

常用的資訊架構視圖有以下一些:

<b>資訊架構視圖</b>

<b>描述</b>

information_schema .check_constraints

傳回有關列或過程參數的資訊,如是否允許空值,是否為計算列等。

information_schema .columns

傳回目前資料庫中目前使用者可以通路的所有列及其基本資訊。

information_schema .constraint_column_usage

傳回目前資料庫中定義了限制的所有列及其限制名。

information_schema .constraint_table_usage

傳回目前資料庫中定義了限制的所有表及其限制名。

information_schema .key_column_usage

傳回目前資料庫中作為主鍵/外鍵限制的所有列。

information_schema .schemata

傳回目前使用者具有權限的所有資料庫及其基本資訊。

information_schema .tables

傳回目前使用者具有權限的目前資料庫中的所有表或者視圖及其基本資訊。

information_schema .views

傳回目前資料庫中的目前使用者可以通路的視圖及其所有者、定義等資訊。

由于這些資訊架構都是以視圖的方式存在的,是以我們可以很友善地獲得并利用需要的資訊。

是以很容易的利用資料庫中繼資料資訊實作orm功能,下面是幾個常用的sql

       //擷取表的所有列

       public const string table_column_sql = " select     table_catalog as [database], table_schema as owner, table_name as tablename, column_name as columnname,  " +

                          "ordinal_position as ordinalposition, column_default as defaultsetting, is_nullable as isnullable, data_type as datatype,  " +

                          "character_maximum_length as maxlength, numeric_precision as precision, datetime_precision as dateprecision " +

                           "from         information_schema.columns " +

                           "where     (table_name = @tblname) ";

         //擷取表的所有存儲過程和參數

         public const string sp_param_sql="select     specific_catalog as [database], specific_schema as owner, specific_name as spname, ordinal_position as ordinalposition,  " +

                       "parameter_mode as paramtype, is_result as isresult, parameter_name as name, data_type as datatype,  " +

                       "character_maximum_length as datalength, replace(parameter_name, '@', '') as cleanname " +

                       "from         information_schema.parameters " +

                       "where specific_name=@spname";

        //擷取表的所有存儲過程的sql

         public const string sp_sql = " select     specific_catalog as [database], specific_schema as owner, specific_name as name, routine_definition as sql, created as createdon, " +

                          "last_altered as modifiedon " +

                          "from         information_schema.routines " +

                           "where     (specific_name = @spname) ";

      //擷取表的所有存儲過程 

      public const string table_sql = "select     table_catalog as [database], table_schema as owner, table_name as name, table_type "+

             "from         information_schema.tables "+

                "where     (table_type = 'base table') and (table_name &lt;&gt; n'sysdiagrams') " +

             "and table_name=@tblname";

自由、創新、研究、探索……

打賞

<b></b>贊

<b></b>收藏

<b></b>評論

分享

微網誌

qq

微信

使用資訊架構視圖通路資料庫中繼資料

舉報

上一篇:出現災難性bug:vista rtm跳票内幕曝光

下一篇:微軟官方反間諜流氓軟體windowsdefender

資料庫元資訊,通路 iis 中繼資料庫失敗,java資料庫——使用中繼資料分析資料庫,資料庫視圖,“通路 iis 中繼資料庫失敗”的錯誤資訊,iis通路中繼資料庫失敗,java通路資料庫視圖,java通路視圖資料庫,jdbc擷取資料庫元資訊,mvc架構通路資料庫

繼續閱讀