怎么使用meta data service,一定要高手指教,最好讲的有点深度。

john99 2003-08-25 09:51:42
最近公司要做一个项目,其中涉及到这方面的内容。
小弟,一点经验都没有。 查了些资料,还是云里雾里。
望高手指点, 特别是怎样在外部使用meta data service,有例子就更好了。
分数,还可以再加!
...全文
100 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-08-26
  • 打赏
  • 举报
回复
SELECT
(case when a.colorder=1 then d.name else '' end) N'表名',
a.colorder N'字段序号',
a.name N'字段名',
(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) N'标识',
(case when (SELECT count(*)
FROM sysobjects
WHERE (name in
(SELECT name
FROM sysindexes
WHERE (id = a.id) AND (indid in
(SELECT indid
FROM sysindexkeys
WHERE (id = a.id) AND (colid in
(SELECT colid
FROM syscolumns
WHERE (id = a.id) AND (name = a.name))))))) AND
(xtype = 'PK'))>0 then '√' else '' end) N'主键',
b.name N'类型',
a.length N'占用字节数',
COLUMNPROPERTY(a.id,a.name,'PRECISION') as N'长度',
isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as N'小数位数',
(case when a.isnullable=1 then '√'else '' end) N'允许空',
isnull(e.text,'') N'默认值',
isnull(g.[value],'') AS N'字段说明'
--into ##tx

FROM syscolumns a left join systypes b
on a.xtype=b.xusertype
inner join sysobjects d
on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
left join syscomments e
on a.cdefault=e.id
left join sysproperties g
on a.id=g.id AND a.colid = g.smallid
order by object_name(a.id),a.colorder
john99 2003-08-26
  • 打赏
  • 举报
回复
先结贴!

有问题,再开贴
john99 2003-08-25
  • 打赏
  • 举报
回复
谢谢两位的指点,联机帮助已经看过了,感觉比较抽象。
就是我改怎么用它,疑问。
pengdali 2003-08-25
  • 打赏
  • 举报
回复
select d.name,a.name ,b.name ,a.length, a.isnullable from syscolumns a, systypes b,sysobjects d where a.xtype=b.xusertype and a.id=d.id and d.xtype='U'


名称 地址 说明
sysaltfiles 主数据库 保存数据库的文件
syscharsets 主数据库 字符集与排序顺序
sysconfigures 主数据库 配置选项
syscurconfigs 主数据库 当前配置选项
sysdatabases 主数据库 服务器中的数据库
syslanguages 主数据库 语言
syslogins 主数据库 登陆帐号信息
sysoledbusers 主数据库 链接服务器登陆信息
sysprocesses 主数据库 进程
sysremotelogins主数据库 远程登录帐号

syscolumns 每个数据库 列
sysconstrains 每个数据库 限制
sysfilegroups 每个数据库 文件组
sysfiles 每个数据库 文件
sysforeignkeys 每个数据库 外部关键字
sysindexes 每个数据库 索引
sysmenbers 每个数据库 角色成员
sysobjects 每个数据库 所有数据库对象
syspermissions 每个数据库 权限
systypes 每个数据库 用户定义数据类型
sysusers 每个数据库 用户
hjb111 2003-08-25
  • 打赏
  • 举报
回复
参见联机帮助:

元数据基础知识
Microsoft® SQL Server™ 2000 Meta Data Services 是一系列使您得以管理元数据的服务。要使用 Microsoft Meta Data Services,需要先了解元数据的特点。如果不了解元数据的概念,本概述会帮助您了解 Meta Data Services 所管理的数据类型。

元数据描述数据的结构和意义,就象描述应用程序和进程的结构和意义一样。切记:元数据是抽象概念,具有上下文,在开发环境中有多种用途。

元数据是抽象概念
当人们描述现实世界的现象时,就会产生抽象信息,这些抽象信息便可以看作是元数据。例如,在描述风、雨和阳光这些自然现象时,就需要使用"天气"这类抽象概念。还可以通过定义温度、降水量和湿度等概念对天气作进一步的抽象概括。

在数据设计过程中,也使用抽象术语描述现实世界的各种现象。人们把人物、地点、事物和数字组织或指定为职员、顾客或产品数据。

在软件设计过程中,代表数据或存储数据的应用程序和数据库结构可以概括为开发和设计人员能够理解的元数据分类方案。表或表单由对象派生出来,而对象又由类派生。

在元数据中有多个抽象概念级别。可以描述一个数据实例,然后对该描述本身进行描述,接着再对后一个描述进行描述,这样不断重复,直到达到某个实际限度而无法继续描述为止。通常情况下,软件开发中使用的元数据描述可扩展为二至三级的抽象概念。比如 "loan table" 数据实例可以描述为数据库表名。数据库表又可以描述为数据库表对象。最后,数据库表对象可以用一个抽象类描述,该抽象类确定所有派生对象都必须符合的固定特征集合。

元数据具有上下文
人们通常把数据和元数据的区别称为类型/实例区别。模型设计人员表述的是类型(如各种类或关系),而软件开发人员表述的是实例(如 Table 类或 Table Has Columns 关系)。

实例和类型的区别是上下文相关的。在一个方案中的元数据将在另一个方案中变为数据。例如,在典型的关系型 DBMS 中,系统目录将描述包含数据的表和列。这就意味着系统目录描述数据定义,因而可以认为其中的数据是元数据。但只要使用正确的软件工具,仍然可以象操作其它数据一样对这些元数据进行操作。操作元数据的示例包括:查看数据沿袭或表的版本控制信息,或通过搜索具有货币数据类型的列来识别所有表示财务数据的表。在此方案中,如系统目录这样的标准元数据变为可操作的数据。

元数据有多种用途
可以像使用任何类型的应用程序或数据设计元素一样使用元数据类型和实例信息。将设计信息表达为元数据,特别是标准元数据,可以为再次使用、共享和多工具支持提供更多的可能性。

例如,将数据对象定义为元数据使您得以看到它们是如何构造和进行版本控制的。版本控制支持提供一种查看、衍生或检索任何特定 DTS 包或数据仓库定义的历史版本的方法。开发基于元数据的代码时,可以一次性定义结构,然后重复使用该结构创建可作为特定工具和应用程序的不同版本的多个实例。还可以在现有元数据类型之间创建新关系,以支持新的应用程序设计。

liuyun2003 2003-08-25
  • 打赏
  • 举报
回复
大哥你太先进了。呵呵,一点都不会啊。帮你顶一下吧。
john99 2003-08-25
  • 打赏
  • 举报
回复
还有没解决的,你给了很好的提示。楼上的朋友请留下MSN。
谢谢!
john99 2003-08-25
  • 打赏
  • 举报
回复
是的,感谢!!
webswim 2003-08-25
  • 打赏
  • 举报
回复
Meta Data Services 是 SQL Server 的一个已安装组件。如果使用的是 SQL Server,则知识库数据库已经存在。默认情况下,在 msdb 系统数据库中预定义知识库表。这些表存储由 SQL Server 和其它附件使用的数据仓库元数据。

创建新库:
VC:
CoCreateInstance(CLSID_Repository, NULL, CLSCTX_INPROC_SERVER, IID_IREPOSITORY, (LPVOID *) &m_pIRepos)))
m_pIRepos->Create(CCOMVariant(SERVER="MyServer";DATABASE="MyDatabase";UID="MyUserID";PWD="MyPassword"), CCOMVariant(""), CCOMVariant(""), 0, &m_pIRootObj))

VB:
DIM oRepos as New Repository
oRepos.Create "SERVER=MyServer;DATABASE=MyDatabase;UID=MyUserID;PWD=MyPassword;"



连接已有的库:
VC:
CoCreateInstance(CLSID_Repository, NULL, CLSCTX_INPROC_SERVER, IID_IREPOSITORY, (LPVOID *) &m_pIRepos)
m_pIRepos->Open(CCOMVariant(SERVER="MyServer";DATABASE="MSDB";UID="MyUserID";PWD="MyPassword"), CCOMVariant(""), CCOMVariant(""), 0, &m_pIRootObj)

是你要的东西吗?

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧