成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL Server元數據的管理與應用

運維 數據庫運維 SQL Server
大部分數據庫管理員擁有某種形式的數據庫元數據庫,他們依賴其來跟蹤范圍很廣的Microsoft SQL Server環境。本文將結合作者的實際工作為大家進行分析。

大部分數據庫管理員擁有某種形式的數據庫元數據庫,他們依賴其來跟蹤范圍很廣的Microsoft SQL Server環境。我利用連接的服務器和分布式數據庫訪問來建立一個已經在我的環境中使用了七年的元數據庫。它不是漂亮的,但它是功能性很強的。跟很多IT開發者和數據庫管理員一樣,即使它有自身的不足我還是為自己的創造感到驕傲。它很慢,不像它可以的那樣最新型,也不像它應該的那樣安全。 

自從讀了2007年5月和6月Rodney Landrum在SQL Server雜志上發表的關于SQL Server集成服務(SSIS)和數據庫管理員知識庫(DBA Repositories)的文章,我知道是時候采取別人的解決方法了。這對于我的環境來說是完美的,而一些改動也是容易采納的。2008年2月,一篇后續文章在SQL Server雜志上發表,在這篇文章里,Rodney更新了他的解決方法。我下載了代碼,在我的測試環境里審核,并迅速把它納入產品中。當大家普遍地為這個解決方法所提供的而感到高興時,在它包中缺少的一方面是把數據庫關聯到應用程序的能力。通過在他的解決方法中增加兩張額外的表,我可以在我的“土生土長”元數據庫中增加應用程序元數據到我現在使用的SQL Server雜志的方法中。

增加到我數據庫中的應用元數據包括創建兩張表:dbo.Applications,專為存儲所有程序的應用名稱,而這些程序在我的環境中依賴于SQL Server數據庫,還有

dbo.Database_Applications,它保存SQL 實例、數據庫和應用程序之間的關系。

Applications Table 
      CREATE TABLE [dbo].[Applications]
  (
  [AppID] [int] IDENTITY(154,1) NOT NULL,
  [ApplicationName] [varchar](100) NOT NULL,
  )
  Database_Applications Table 
      CREATE TABLE [dbo].[Database_Applications]
  (
  [DB_AppID] [int] IDENTITY(1,1) NOT NULL,
  [ServerName] [varchar](50) NOT NULL,
  [DatabaseName] [varchar](100) NOT NULL,
  [ApplicationName] [varchar](100) NULL
  )

你可能注意到,我沒有規范化dbo.Database_Applications表。如果我規范化,我會只存儲兩個區域:一個與存儲我的應用元數據的表有關的外鍵,和一個與我的元數據庫相對應的外鍵。我有自己的原因:

我沒有處理大量的數據:我有大概800個數據庫,這些數據庫在我的環境里發布80個實例。雖然這對于一個數據庫管理員來說是個很大的環境,但是它既不轉變成在我的元數據表里的大量紀錄,也不轉變成數據庫的巨大字節。

不是通過dbo.Applications表的主鍵,而是包含表中的應用程序名,我可以通過只訪問dbo.Database_Applications表產生我的主要應用程序元數據報告(key Application Metadata report)。

我的環境中的SQL元數據庫使用“焦土政策”人口處理方法,除了SQL Agent Job History和Backup History,其他的表都被每天刪除和重新載入。我發現在dbo.Database_Applications表中保存信息可以使我的生活變得很容易。每日從我的環境中載入數據后,我可以通過以下腳本得到在我的環境中產生的任何新的數據庫的良好的陳述。

SELECT D.[Server], D.DatabaseName 
  FROM dbo.Databases D LEFT JOIN dbo.Database_Applications DA
  ON D.DatabaseName = DA.DatabaseName AND D.[Server] = DA.[ServerName]
  WHERE DA.DB_AppID IS NULL
  ORDER BY D.[Server], D.DatabaseName

這個查詢的結果提供任何數據庫的清單,這些數據庫產生于上次我更新應用元數據和服務器時,它不僅是跨域的數據庫創建活動的通知,也是致力于更新兩個數據庫來符合應用程序信息的數據清單。這個查詢也適合SQL Server Reporting Services報告的數據表,而當我不在辦公室時,SQL Server Reporting Services報告也為我提供了一個新的數據庫到我的黑莓(BlackBerry)的日常通知。

最后,我創建了以下存儲程序,由此用任何新的數據庫信息來合并dbo.Applications表和dbo.Database_Applications 表。它接受三個參數:服務器,數據庫和應用程序。如果應用程序已經不存在于dbo.Applications表中,它就會被補充。然后一個記錄被插入到服務器/數據庫/應用程序關系中的dbo.Applications表。


CREATE PROCEDURE [dbo].[pAdd_Application] @ServerName varchar(50),
@DatabaseName varchar(100), @ApplicationName varchar(100)
AS
--Add any new databases created, but not recorded in the repository, to the repository
UPDATE dbo.Database_Applications
SET ApplicationName = @ApplicationName
WHERE ServerName = @ServerName
AND DatabaseName = @DatabaseName
AND ApplicationName IS NULL
--Determine if there is already an application for this database in the repository,
if not, then add it
IF (SELECT COUNT(*) FROM dbo.Applications WHERE ApplicationName = @ApplicationName) = 0 
  BEGIN 
  INSERT INTO dbo.Applications (ApplicationName) 
  VALUES (@ApplicationName) 
  PRINT 'Added new Application: ' + @ApplicationName + ' to Applications table' 
  SELECT * FROM dbo.Applications WHERE ApplicationName = @ApplicationName 
  END 
  --List the new record in the repository 
  SELECT ServerName, DatabaseName, ApplicationName 
  FROM dbo.Database_Applications 
  WHERE ServerName = @ServerName 
  AND DatabaseName = @DatabaseName 
  AND ApplicationName = @ApplicationName

雖然我可以很容易地把這個存儲程序的執行整合為SQL Server集成服務(SSIS)程序包中的最后一步,而這個程序包能夠組裝我的存儲數據庫,但我選擇不這樣做,這是為了在我的環境里,我能密切關注圍繞新的數據庫創造而展開的活動。

【編輯推薦】

  1. 最簡單刪除SQL Server中所有數據的方法
  2. 使用SQL Server 2008的FILESTREAM特性管理文件
  3. SQL Server 2008管理和開發的效能
責任編輯:彭凡 來源: IT專家網
相關推薦

2010-07-02 14:52:21

SQL Server元

2009-04-16 18:25:55

2010-07-22 17:47:32

SQL Server數

2010-06-30 14:54:42

SQL Server

2018-06-21 10:05:07

數據庫管理SQL解析MySQL

2010-07-21 10:50:48

SQL Server存

2010-07-05 09:34:07

SQL Server元

2010-04-29 09:35:31

Oracle數據庫

2024-04-23 14:47:46

2009-05-11 14:19:49

數據遷移OracleSQL Server

2010-06-30 08:13:18

SQL Server數

2010-07-26 17:43:34

SQL Server

2011-05-17 10:49:55

OracleSQL Server

2010-07-21 14:11:36

SQL Server

2010-07-07 14:57:25

SQL Server線

2010-11-12 13:08:36

動態sql語句

2010-11-10 14:54:24

SQL Server系

2010-11-11 14:14:52

SQL Server排

2010-10-22 10:44:16

SQL Server權

2011-08-18 10:36:24

SQL ServerISNULL函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品国产91久久久久久最新 | 久久国产精品一区二区三区 | 青草青草久热精品视频在线观看 | 国产91久久久久久久免费 | 欧美国产日韩在线 | 国产a区 | 91一区二区 | 中文字幕日韩欧美一区二区三区 | 天天天堂| 欧美一区二区三区视频在线播放 | 91porn在线| 国产激情一区二区三区 | 精品一区二区三区视频在线观看 | 热久久性 | 夜夜草| 国产视频精品视频 | 精品久久久久久久久久久院品网 | 亚洲国产精品一区二区久久 | 国产成人高清视频 | 国产成人高清 | 亚洲精品成人网 | 一本色道久久综合亚洲精品高清 | 久操福利 | 色婷婷婷婷色 | 国产午夜精品久久久 | 中文字幕丁香5月 | 中文字幕亚洲精品在线观看 | 奇米久久 | 99国产精品99久久久久久粉嫩 | 日韩欧美三级电影 | 国产欧美日韩一区二区三区在线观看 | 九九热在线精品视频 | 国产午夜精品一区二区三区四区 | 久久99视频这里只有精品 | 亚洲国产精品99久久久久久久久 | 九九伦理片 | 污视频免费在线观看 | 国产精品久久久久999 | 欧美一区二区在线观看视频 | 久久天堂网 | 午夜久久久久久久久久一区二区 |