SELECT NAME FROM A..SYSOBJECTS T WHERE XTYPE='V' WHERE NOT EXISTS(SELECT 1 FROM B..SYSOBJECTS WHERE XTYPE='V' AND NAME=T.NAME) SELECT NAME FROM B..SYSOBJECTS T WHERE XTYPE='V' WHERE NOT EXISTS(SELECT 1 FROM A..SYSOBJECTS WHERE XTYPE='V' AND NAME=T.NAME)只能帮你查出来哪些没有
select b.name,a.text from syscomments a join sysobjects b on b.id=a.id 看一下
select b.name,a.text from syscomments a join sysobjects b on b.id=a.id and b.xtype='v'
SELECT * FROM INFORMATION_SCHEMA.VIEWS
SELECT NAME FROM A..SYSOBJECTS T WHERE XTYPE='V' AND NOT EXISTS(SELECT 1 FROM B..SYSOBJECTS WHERE XTYPE='V' AND NAME=T.NAME) SELECT NAME FROM B..SYSOBJECTS T WHERE XTYPE='V' AND NOT EXISTS(SELECT 1 FROM A..SYSOBJECTS WHERE XTYPE='V' AND NAME=T.NAME)晕,修改下,条件弄错,这样是帮你查出来哪些视图各自不存在
视图是一个虚拟表。与真实表相比,视图同样包含一系列带有名称的列和行数据,但是视图不在数据库中存储这些数据(除非是索引视图),而是在引用视图时由视图定义中的 SELECT 语句动态生成这些数据。 在 SQL Server 2000 中,视图的元数据存储在 sysobjects 系统表中,定义存储在 syscomments 系统表。而在 SQL Server 2005 中,这些信息可以通过 sys.views 和 sys.sql_modules 目录视图查看。至于 lz 的问题,答案是可以用 t-sql 语句实现——就是通过这些系统表和目录视图构造动态语句实现。-- 以下语句用于返回数据库 a 中存在,而数据库 b 中不存在的视图定义。lz 可以通过这些信息构造动态语句。-- 但是,需要考虑数据库中是否存在视图所引用的表,创建视图的顺序等等。 select [definition] from [db_a].sys.sql_modules where [object_id] in (select [object_id] from [db_a].sys.views where [object_id] not in (select [object_id] from [db_b].sys.views ))
B数据库中有而A数据库中没有的视图, 则拷贝B中的视图到A中 SELECT NAME FROM B..SYSOBJECTS T WHERE XTYPE='V' AND NOT EXISTS(SELECT 1 FROM A..SYSOBJECTS WHERE XTYPE='V' AND NAME=T.NAME)查找到B数据库中有而A数据库中没有的视图好像有一个工具可以比较2个数据库的工具,不过忘记了,如果需要可以和我联系。
WHERE NOT EXISTS(SELECT 1 FROM B..SYSOBJECTS WHERE XTYPE='V' AND NAME=T.NAME)
SELECT NAME FROM B..SYSOBJECTS T WHERE XTYPE='V'
WHERE NOT EXISTS(SELECT 1 FROM A..SYSOBJECTS WHERE XTYPE='V' AND NAME=T.NAME)只能帮你查出来哪些没有
join sysobjects b on b.id=a.id 看一下
join sysobjects b on b.id=a.id and b.xtype='v'
AND NOT EXISTS(SELECT 1 FROM B..SYSOBJECTS WHERE XTYPE='V' AND NAME=T.NAME)
SELECT NAME FROM B..SYSOBJECTS T WHERE XTYPE='V'
AND NOT EXISTS(SELECT 1 FROM A..SYSOBJECTS WHERE XTYPE='V' AND NAME=T.NAME)晕,修改下,条件弄错,这样是帮你查出来哪些视图各自不存在
在 SQL Server 2000 中,视图的元数据存储在 sysobjects 系统表中,定义存储在 syscomments 系统表。而在 SQL Server 2005 中,这些信息可以通过 sys.views 和 sys.sql_modules 目录视图查看。至于 lz 的问题,答案是可以用 t-sql 语句实现——就是通过这些系统表和目录视图构造动态语句实现。-- 以下语句用于返回数据库 a 中存在,而数据库 b 中不存在的视图定义。lz 可以通过这些信息构造动态语句。-- 但是,需要考虑数据库中是否存在视图所引用的表,创建视图的顺序等等。
select [definition] from [db_a].sys.sql_modules
where [object_id] in (select [object_id] from [db_a].sys.views
where [object_id] not in (select [object_id] from [db_b].sys.views ))
B数据库中有而A数据库中没有的视图,
则拷贝B中的视图到A中
SELECT NAME FROM B..SYSOBJECTS T WHERE XTYPE='V'
AND NOT EXISTS(SELECT 1 FROM A..SYSOBJECTS WHERE XTYPE='V' AND NAME=T.NAME)查找到B数据库中有而A数据库中没有的视图好像有一个工具可以比较2个数据库的工具,不过忘记了,如果需要可以和我联系。
而text就是存储视图语句的,貌似行不通。