婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 獲取SQL Server數據庫元數據的幾種方法

獲取SQL Server數據庫元數據的幾種方法

熱門標簽:電銷機器人被曝光 地圖標注一個圓圈怎么用 洛陽外呼系統平臺 廣州人工電銷機器人費用 怎樣把地圖標注導入公司地址 寧波人工外呼系統有效果嗎 如何在地圖標注自己店鋪 真人語音電銷機器人 400外呼系統合法

元數據簡介

元數據 (metadata) 最常見的定義為“有關數據的結構數據”,或者再簡單一點就是“關于數據的信息”,日常生活中的圖例、圖書館目錄卡和名片等都可以看作是元數據。在關系型數據庫管理系統 (DBMS) 中,元數據描述了數據的結構和意義。比如在管理、維護 SQL Server 或者是開發數據庫應用程序的時候,我們經常要獲取一些涉及到數據庫架構的信息:

◆某個數據庫中的表和視圖的個數以及名稱;
◆某個表或者視圖中列的個數以及每一列的名稱、數據類型、長度、精度、描述等;
◆某個表上定義的約束;
◆某個表上定義的索引以及主鍵/外鍵的信息。

下面我們將介紹幾種獲取元數據的方法。

獲取元數據

使用系統存儲過程與系統函數訪問元數據

獲取元數據最常用的方法是使用 SQL Server 提供的系統存儲過程與系統函數。

系統存儲過程與系統函數在系統表和元數據之間提供了一個抽象層,使得我們不用直接查詢系統表就能獲得當前數據庫對象的元數據。

常用的與元數據有關的系統存儲過程有以下一些:

系統存儲過程

◆sp_columns 返回指定表或視圖的列的詳細信息。
◆sp_databases 返回當前服務器上的所有數據庫的基本信息。
◆sp_fkeys 若參數為帶有主鍵的表,則返回包含指向該表的外鍵的所有表;若參數為帶有外鍵的表名,則返回所有同過主鍵/外鍵關系與該外鍵相關聯的所有表。
◆sp_pkeys 返回指定表的主鍵信息。
◆sp_server_info 返回當前服務器的各種特性及其對應取值。
◆sp_sproc_columns 返回指定存儲過程的的輸入、輸出參數的信息。
◆sp_statistics 返回指定的表或索引視圖上的所有索引以及統計的信息。
◆sp_stored_procedures 返回當前數據庫的存儲過程列表,包含系統存儲過程。
◆sp_tables 返回當前數據庫的所有表和視圖,包含系統表。

常用的與元數據有關的系統函數有以下一些:

系統函數

◆COLUMNPROPERTY 返回有關列或過程參數的信息,如是否允許空值,是否為計算列等。
◆COL_LENGTH 返回指定數據庫的指定屬性值,如是否處于只讀模式等。
◆DATABASEPROPERTYEX 返回指定數據庫的指定選項或屬性的當前設置,如數據庫的狀態、恢復模型等。
◆OBJECT_ID 返回指定數據庫對象名的標識號
◆OBJECT_NAME 返回指定數據庫對象標識號的對象名。
◆OBJECTPROPERTY 返回指定數據庫對象標識號的有關信息,如是否為表,是否為約束等。
◆fn_listextendedproperty 返回數據庫對象的擴展屬性值,如對象描述、格式規則、輸入掩碼等。

由于我們無法直接利用到存儲過程與函數的返回結果,因此只有在我們關心的只是查詢的結果,而不需要進一步利用這些結果的時候,我們會使用系統存儲過程與系統函數來查詢元數據。

例如,如果要獲得當前服務器上所有數據庫的基本信息,我們可以在查詢分析器里面運行:

EXEC sp_databases
GO

在返回結果中我們可以看到數據庫的名稱、大小及備注等信息。

但是如果要引用這部分信息,或者存儲這部分信息以供后面使用,那么我們必須借助中間表來完成這個操作:

CREATE TABLE #sp_result
(
DATABASE_NAME sysname,
DATABASE_SIZE int,
REMARKS varchar(254) NULL
)
GO
INSERT INTO #sp_result
EXEC ('sp_databases')
GO

使用信息架構視圖訪問元數據

信息架構視圖基于 SQL-92 標準中針對架構視圖的定義,這些視圖獨立于系統表,提供了關于 SQL Server 元數據的內部視圖。信息架構視圖的最大優點是,即使我們對系統表進行了重要的修改,應用程序也可以正常地使用這些視圖進行訪問。因此對于應用程序來說,只要是符合 SQL-92 標準的數據庫系統,使用信息架構視圖總是可以正常工作的。

信息架構視圖

◆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:返回當前數據庫中的當前用戶可以訪問的視圖及其所有者、定義等信息。

由于這些信息架構都是以視圖的方式存在的,因此我們可以很方便地獲得并利用需要的信息。

例如,我們要得到某個表有多少列,可以使用以下語句:

SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS

WHERE TABLE_NAME='mytable'

使用系統表訪問元數據

雖然使用系統存儲過程、系統函數與信息架構視圖已經可以為我們提供了相當豐富的元數據信息,但是對于某些特殊的元數據信息,我們仍然需要直接對系統表進行查詢。因為SQL Server 將所有數據庫對象的信息均存放在系統表中,作為 SQL Server 的管理、開發人員,了解各個系統表的作用將有助于我們了解 SQL Server 的內在工作原理。

SQL Server 的系統表非常多,其中最常用的與元數據查詢有關的表有如下一些:
syscolumns 存儲每個表和視圖中的每一列的信息以及存儲過程中的每個參數的信息。
syscomments 存儲包含每個視圖、規則、默認值、觸發器、CHECK 約束、DEFAULT 約束和存儲過程的原始 SQL 文本語句。
sysconstraints 存儲當前數據庫中每一個約束的基本信息。
sysdatabases 存儲當前服務器上每一個數據庫的基本信息。
sysindexes 存儲當前數據庫中的每個索引的信息。
sysobjects 存儲數據庫內的每個對象(約束、默認值、日志、規則、存儲過程等)的基本信息。
sysreferences 存儲所有包括 FOREIGN KEY 約束的列。
systypes 存儲系統提供的每種數據類型和用戶定義數據類型的詳細信息。

將系統存儲過程、系統函數、信息架構視圖與系統表結合使用,可以方便地讓我們獲得所有需要的元數據信息。

示例:

1、 獲得當前數據庫所有用戶表的名稱。

SELECT OBJECT_NAME (id)
FROM sysobjects
WHERE xtype = 'U' AND OBJECTPROPERTY (id, 'IsMSShipped') = 0

其中主要用到了系統表 sysobjects以及其屬性 xtype,還有就是用到了 OBJECTPROPERTY 系統函數來判斷是不是安裝 SQL Server 的過程中創建的對象。

2、獲得指定表上所有的索引名稱。

SELECT name FROM sysindexes
WHERE id = OBJECT_ID ('mytable') AND indid > 0

綜合實例

下面給出了一個存儲過程,它的作用是自動將當前數據庫的用戶存儲過程加密。

DECLARE @sp_name nvarchar(400)
DECLARE @sp_content nvarchar(2000)
DECLARE @asbegin int
declare @now datetime
select @now = getdate()
DECLARE sp_cursor CURSOR FOR
SELECT object_name(id)
FROM sysobjects
WHERE xtype = 'P'
AND type = 'P'
AND crdate  @now
AND OBJECTPROPERTY(id, 'IsMSShipped')=0

OPEN sp_cursor

FETCH NEXT FROM sp_cursor
INTO @sp_name

WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @sp_content = text FROM
syscomments WHERE id = OBJECT_ID(@sp_name)
SELECT @asbegin =
PATINDEX ( '%AS' + char(13) + '%', @sp_content)
SELECT @sp_content =
SUBSTRING(@sp_content, 1, @asbegin - 1)
+ ' WITH ENCRYPTION AS'
+ SUBSTRING (@sp_content, @asbegin+2, LEN(@sp_content))
SELECT @sp_name = 'DROP PROCEDURE [' + @sp_name + ']'
EXEC sp_executesql @sp_name
EXEC sp_executesql @sp_content
FETCH NEXT FROM sp_cursor
INTO @sp_name
END

CLOSE sp_cursor
DEALLOCATE sp_cursor

該存儲過程利用了 sysobjects 和 syscomments 表,并巧妙地修改了原存儲過程的 SQL 定義語句,將 AS 修改為了 WITH ENCRYPTION AS,從而達到了加密存儲過程的目的。本存儲過程在 SQL Server 2000 上通過。

您可能感興趣的文章:
  • 調用MySQL中數據庫元數據的方法
  • SQL Server 使用 SET FMTONLY ON 獲得表的元數據

標簽:南昌 煙臺 北海 東營 晉中 珠海 咸寧 石家莊

巨人網絡通訊聲明:本文標題《獲取SQL Server數據庫元數據的幾種方法》,本文關鍵詞  獲取,SQL,Server,數據庫,元,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《獲取SQL Server數據庫元數據的幾種方法》相關的同類信息!
  • 本頁收集關于獲取SQL Server數據庫元數據的幾種方法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    一区二区三区在线观看视频 | 国产午夜亚洲精品不卡| 国产自产视频一区二区三区| 一区二区三区四区不卡在线| 国产女人18毛片水真多成人如厕| 91精选在线观看| 欧美日韩一区二区三区四区| 99re视频这里只有精品| 丰满放荡岳乱妇91ww| 精品一区二区日韩| 久久国产乱子精品免费女| 青青草97国产精品免费观看无弹窗版| 亚洲与欧洲av电影| 亚洲已满18点击进入久久| 一级特黄大欧美久久久| 亚洲自拍偷拍综合| 亚洲一区二区视频| 亚洲成人精品一区二区| 亚洲国产精品精华液网站| 亚洲一区二区三区四区五区中文| 亚洲人成亚洲人成在线观看图片| 国产精品第五页| 亚洲激情在线激情| 日韩精品免费专区| 国内偷窥港台综合视频在线播放| 免费人成在线不卡| 精品一区二区三区日韩| 国产精品一卡二卡| 成人av小说网| 91激情在线视频| 8x8x8国产精品| 精品久久久三级丝袜| 国产亚洲欧美日韩在线一区| 中文字幕va一区二区三区| 一色屋精品亚洲香蕉网站| 一区二区三区在线免费播放| 亚洲综合免费观看高清完整版在线| 午夜av一区二区三区| 免费人成在线不卡| 国产69精品久久777的优势| 色域天天综合网| 日韩午夜小视频| 国产精品理伦片| 亚洲观看高清完整版在线观看| 亚洲一区在线免费观看| 一区二区三区四区亚洲| 日韩视频在线你懂得| 欧美日韩国产另类一区| 中文字幕成人在线观看| 91麻豆精品在线观看| 美女精品自拍一二三四| 日韩成人精品在线观看| 天堂一区二区在线| 亚洲高清免费视频| 欧美三级三级三级爽爽爽| 日韩久久免费av| 国产成人亚洲综合a∨婷婷| 中文一区二区完整视频在线观看| 91网站在线观看视频| 日韩电影在线免费| 亚洲免费电影在线| 中国色在线观看另类| 日韩精品三区四区| 国产电影一区在线| 日韩免费观看高清完整版 | 天天做天天摸天天爽国产一区| 国产精品美女久久福利网站| 久久综合狠狠综合久久综合88| 日韩欧美视频一区| 欧美午夜片在线观看| aaa亚洲精品| av电影在线观看不卡| 色哟哟在线观看一区二区三区| 不卡电影免费在线播放一区| 国产传媒久久文化传媒| 粉嫩绯色av一区二区在线观看| 国产一区二区三区在线观看免费视频| 五月天亚洲婷婷| 亚洲成人777| 亚洲国产美女搞黄色| 亚洲一区av在线| 亚洲成人一二三| 久久精品国产精品青草| 精品一区二区在线视频| 精品中文字幕一区二区| 蜜桃免费网站一区二区三区| 国产制服丝袜一区| 国产成人精品免费看| 91亚洲精品久久久蜜桃| 91国内精品野花午夜精品| 91国模大尺度私拍在线视频| 欧美在线一二三四区| 欧美在线你懂得| 日韩欧美成人午夜| 久久久久久久综合| 国产精品日产欧美久久久久| 国产精品午夜电影| 一区二区三区精品在线观看| 奇米影视一区二区三区小说| 韩国v欧美v亚洲v日本v| 91视频xxxx| 欧美日韩精品欧美日韩精品| 欧美一区二区三区在线视频| 精品国内片67194| 亚洲日穴在线视频| 久久疯狂做爰流白浆xx| aa级大片欧美| 精品福利在线导航| 亚洲成人自拍一区| www日韩大片| 亚洲图片一区二区| 成人精品视频一区| 精品国内二区三区| 五月激情六月综合| 91网址在线看| 欧美经典一区二区三区| 欧美曰成人黄网| 欧美激情综合在线| 久久99久久精品欧美| 欧美无人高清视频在线观看| 国产欧美日韩在线观看| 三级欧美在线一区| 欧美色视频一区| 亚洲精品老司机| 成人黄色小视频在线观看| 久久久五月婷婷| 日韩高清一区二区| 在线成人高清不卡| 亚洲成av人影院| 色噜噜狠狠一区二区三区果冻| 国产亚洲成av人在线观看导航 | 亚洲福利一二三区| 91亚洲永久精品| 中文字幕精品三区| 国产中文字幕一区| 欧美成人乱码一区二区三区| 日本午夜精品一区二区三区电影| 在线播放国产精品二区一二区四区| 中文字幕中文字幕一区| 成人综合激情网| 国产精品人妖ts系列视频| 国产成人精品综合在线观看| 精品日韩欧美在线| 久久精品国产亚洲a| 欧美一级xxx| 麻豆精品新av中文字幕| 久久这里只有精品首页| 日韩一区二区三区在线| 日精品一区二区| 欧美亚洲国产一区二区三区va| 亚洲综合在线免费观看| 日本精品视频一区二区| 亚洲aⅴ怡春院| 91精品福利在线一区二区三区| 日韩在线一二三区| 欧美疯狂做受xxxx富婆| 日本欧美在线看| 久久精品在线免费观看| 91视频国产资源| 视频在线观看一区| 337p日本欧洲亚洲大胆精品 | 99国产精品久| 亚洲黄色尤物视频| 欧美另类z0zxhd电影| 蜜桃精品视频在线观看| 国产丝袜在线精品| 色菇凉天天综合网| 强制捆绑调教一区二区| 欧美精彩视频一区二区三区| 欧美性猛片xxxx免费看久爱| 日韩高清不卡在线| 日本一区二区视频在线观看| 99久久精品99国产精品| 日韩国产高清影视| 亚洲人妖av一区二区| 在线不卡a资源高清| 成人av资源站| 日本午夜精品一区二区三区电影| 中文字幕不卡在线观看| 欧美高清视频一二三区 | 久久久噜噜噜久久中文字幕色伊伊| 国产一区二区三区久久久| 亚洲欧美在线视频| 日韩一区国产二区欧美三区| 97精品视频在线观看自产线路二| 视频在线在亚洲| 亚洲欧美日本韩国| 国产午夜精品一区二区三区视频| 欧美日韩国产不卡| 99这里都是精品| 国产麻豆精品久久一二三| 亚洲综合色网站| 欧美激情综合在线| 精品福利一二区| 欧美一级视频精品观看| 欧美亚洲国产一卡| 成人av在线观| 国产精品资源在线| 日韩不卡在线观看日韩不卡视频| 亚洲另类在线视频|