|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你可以配置MySQL运行在微小的嵌入式应用程序中,处理的数据可能不足1Mb??而你也可以用它来处理数Tb的数据。MySQL获得这种可扩展性的路径之一是通过一个人们所熟知的存储过程,这是一个运行在程序之外的微型、预编译程序。</p> 以下的文章次要是先容SQLServer数据库与实在际使用元数据,我前两天在相干网站瞥见SQLServer数据库与实在际使用元数据的材料,以为挺好,就拿出来供人人分享,但愿会给人人带来一些匡助在此方面。
我常被问到怎样把驻留在物理服务器/SQL实例上的SQLServer数据库变化为它们响应的使用程序称号。在筹办企图好的服务器停机关照时,这类必要就发生了,但在我的构造内与IT司理或非手艺职员相同时,这也是有代价的。假如你不是数据
我常被问到怎样把驻留在物理服务器/SQL实例上的数据库变化为它们响应的使用程序称号。在筹办企图好的服务器停机关照时,这类必要就发生了,但在我的构造内与IT司理或非手艺职员相同时,这也是有代价的。
假如你不是数据库办理员或特定数据库的使用剖析师,你一般会忽视数据库的定名划定规矩,而这些数据库撑持着你逐日依附的使用程序。这就是为何当必要发生时在得当的地位上由元数据库来供应转化很主要。
专家解答
年夜部分数据库办理员具有某种情势的数据库元SQLServer数据库,他们依附其来跟踪局限很广的MicrosoftSQLServer情况。我使用毗连的服务器和散布式数据库会见来创建一个已在我的情况中利用了七年的元数据库。它不是大度的,但它是功效性很强的。
跟良多IT开辟者和数据库办理员一样,即便它有本身的不敷我仍是为本人的制造感应自满。它很慢,不像它能够的那样最新型,也不像它应当的那样平安。
自从读了2007年5月和6月RodneyLandrum在SQLServer杂志上宣布的关于SQLServer集成服务(SSIS)和数据库办理员常识库(DBARepositories)的文章,我晓得是时分接纳他人的办理办法了。这关于我的情况来讲是完善的,而一些修改也是简单采取的。
2008年2月,一篇后续文章在SQLServer杂志上宣布,在这篇文章里,Rodney更新了他的办理办法。我下载了代码,在我的测试情况里考核,并敏捷把它归入产物中。当人人广泛地为这个办理办法所供应的而感应乐意时,在它包中短少的一方面是把数据库联系关系到使用程序的才能。
经由过程在他的办理办法中增添两张分外的表,我能够在我的“土生土长”元数据库中增添使用程序元数据到我如今利用的SQLServer杂志的办法中。
增添到我数据库中的使用元数据包含创立两张表:dbo.Applications,专为存储一切程序的使用称号,而这些程序在我的情况中依附于SQLServer数据库,另有
dbo.Database_Applications,它保留SQL实例、SQLServer数据库和使用程序之间的干系。
ApplicationsTableCREATETABLE[dbo].[Applications](
[AppID][int]IDENTITY(154,1)NOTNULL,
[ApplicationName][varchar](100)NOTNULL,)
Database_ApplicationsTable
CREATETABLE[dbo].[Database_Applications](
[DB_AppID][int]IDENTITY(1,1)NOTNULL,
[ServerName][varchar](50)NOTNULL,
[DatabaseName][varchar](100)NOTNULL,
[ApplicationName][varchar](100)NULL)
你大概注重到,我没有标准化dbo.Database_Applications表。假如我标准化,我会只存储两个地区:一个与存储我的使用元数据的表有关的外键,和一个与我的元数据库绝对应的外键。我有本人的缘故原由:
我没有处置大批的数据:我有也许800个数据库,这些SQLServer数据库在我的情况里公布80个实例。固然这关于一个数据库办理员来讲是个很年夜的情况,可是它既不变化成在我的元数据内外的大批记录,也不变化成数据库的伟大字节。
不是经由过程dbo.Applications表的主键,而是包括表中的使用程序名,我能够经由过程只会见dbo.Database_Applications表发生我的次要使用程序元数据呈报(keyApplicationMetadatareport)。
我的情况中的SQL元数据库利用“坚壁清野”生齿处置办法,除SQLAgentJobHistory和BackupHistory,其他的表都被天天删除和从头载进。我发明在
dbo.Database_Applications表中保留信息可使我的生存变得很简单。
逐日从我的情况中载进数据后,我能够经由过程以下剧本失掉在我的情况中发生的任何新的数据库的优秀的报告。
SELECTD.[Server],D.DatabaseNameFROMdbo.DatabasesDLEFTJOINdbo.Database_ApplicationsDAOND.DatabaseName=DA.DatabaseNameANDD.[Server]=DA.[ServerName]WHEREDA.DB_AppIDISNULLORDERBYD.[Server],D.DatabaseName这个查询的了局供应任何数据库的清单,这些SQLServer数据库发生于前次我更新使用元数据和服务器时,它不但是跨域的数据库创立举动的关照,也是努力于更新两个数据库来切合使用程序信息的数据清单。这个查询也合适SQLServerReportingServices呈报的数据表,而当我不在办公室时,SQLServerReportingServices呈报也为我供应了一个新的数据库到我的黑莓(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
--Determineifthereisalreadyanapplication
forthisdatabaseintherepository,ifnot,thenaddit
IF(SELECTCOUNT(*)FROMdbo.Applications
WHEREApplicationName=@ApplicationName)=0
BEGININSERTINTOdbo.Applications(ApplicationName)
VALUES(@ApplicationName)
PRINTAddednewApplication:
+@ApplicationName+toApplicationstable
SELECT*FROMdbo.Applications
WHEREApplicationName=@ApplicationName
END--Listthenewrecordintherepository
SELECTServerName,DatabaseName,ApplicationName
FROMdbo.Database_Applications
WHEREServerName=@ServerName
ANDDatabaseName=@DatabaseName
ANDApplicationName=@ApplicationName
固然我能够很简单地把这个存储程序的实行整合为SQLServer集成服务(SSIS)程序包中的最初一步,而这个程序包可以组装我的存储数据库,但我选择不如许做,这是为了在我的情况里,我能亲切存眷环绕新的SQLServer数据库制造而睁开的举动。
“对于MySQL数据库,无论是在开发方面,还是支持方面,现在有大量强大的MySQL学习教程可以选择。每一个新手开发者可以轻松地使用MySQL数据库进行开发。 |
|