|
|
3#

楼主 |
发表于 2008-11-18 16:33:50
|
只看该作者

管理SQL Server数据库和应用元数据
以下为引用的内容:
SELECTD.[Server],D.DatabaseName
FROMdbo.DatabasesDLEFTJOINdbo.Database_ApplicationsDA
OND.DatabaseName=DA.DatabaseNameANDD.[Server]=DA.[ServerName]
WHEREDA.DB_AppIDISNULL
ORDERBYD.[Server],D.DatabaseName
这个查询的结果提供任何数据库的清单,这些数据库产生于上次我更新应用元数据和服务器时,它不仅是跨域的数据库创建活动的通知,也是致力于更新两个数据库来符合应用程序信息的数据清单。这个查询也适合SQL Server Reporting Services报告的数据表,而当我不在办公室时,SQL Server Reporting Services报告也为我提供了一个新的数据库到我的黑莓(BlackBerry)的日常通知。
最后,我创建了以下存储程序,由此用任何新的数据库信息来合并dbo.Applications表和dbo.Database_Applications 表。它接受三个参数:服务器,数据库和应用程序。如果应用程序已经不存在于dbo.Applications表中,它就会被补充。然后一个记录被插入到服务器/数据库/应用程序关系中的dbo.Applications表。
以下为引用的内容:
CREATEPROCEDURE[dbo].[pAdd_Application]@ServerNamevarchar(50),@DatabaseNamevarchar(100),@ApplicationNamevarchar(100)
AS
--Addanynewdatabasescreated,butnotrecordedintherepository,totherepository
UPDATEdbo.Database_Applications
SETApplicationName=@ApplicationName
WHEREServerName=@ServerName
ANDDatabaseName=@DatabaseName
ANDApplicationNameISNULL
--Determineifthereisalreadyanapplicationforthisdatabaseintherepository,ifnot,thenaddit
IF(SELECTCOUNT(*)FROMdbo.ApplicationsWHEREApplicationName=@ApplicationName)=0
BEGIN
INSERTINTOdbo.Applications(ApplicationName)
VALUES(@ApplicationName)
PRINT'AddednewApplication:'+@ApplicationName+'toApplicationstable'
SELECT*FROMdbo.ApplicationsWHEREApplicationName=@ApplicationName
END
--Listthenewrecordintherepository
SELECTServerName,DatabaseName,ApplicationName
FROMdbo.Database_Applications
WHEREServerName=@ServerName
ANDDatabaseName=@DatabaseName
ANDApplicationName=@ApplicationName
虽然我可以很容易地把这个存储程序的执行整合为SQL Server集成服务(SSIS)程序包中的最后一步,而这个程序包能够组装我的存储数据库,但我选择不这样做,这是为了在我的环境里,我能密切关注围绕新的数据库创造而展开的活动。 |
|