2个数据库差异的问题

ZOU_SEAFARER 2008-01-28 04:31:23
以前我是使用MS2000给客户开发的程序,到使用的时候,客户为了节约成本,把MS2000换MSDE了,大体两个数据库也没有什么差异,具体细节差异方面请大虾给一个链接(比如最大数据支持容量等)

谢谢
...全文
202 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZOU_SEAFARER 2008-01-30
  • 打赏
  • 举报
回复
MSDE我理解就是MSSQL拔了衣服的样子!
还有就是最大用户以及数据容量支持有点区别,其他的没有了!


现在客户又想换postgreSQL免费数据库,不知道这个和以前的mssql2000有何不同,我针对2000开发的程序是否还照样支持postgresql呢?

我想安装一个postgresql试试,但是mssql2000备份的*.bak文件不能还原到postsql中,结构还不一样!再请教,谢谢
cxmcxm 2008-01-29
  • 打赏
  • 举报
回复
桌面上的 SQL Server 2000数据库
还可以将这个支持成千上万个并发用户的 Microsoft® SQL Server™ 2000 数据库引擎安装在运行 Microsoft Windows® 98、Microsoft Windows NT® Workstation 或 Windows 2000 Professional 的膝上型电脑或台式机上。在这些操作系统上运行的 SQL Server 2000 有两种版本:

SQL Server 2000 个人版
在个人工作站或小型工作组服务器上使用的 SQL Server 2000 版本。SQL Server 2000 个人版包括随 SQL Server 2000 标准板和 SQL Server 2000 企业版提供的管理工具(如 SQL Server 企业管理器)。

SQL Server 2000 Desktop Engine
SQL Server 关系数据库引擎的可再分发版本,第三方软件开发商可以将其包括在使用 SQL Server 存储数据的应用程序中。SQL Server 2000 Desktop Engine 可作为一组 Windows 安装程序合并模块使用,并且可以包含在应用程序安装中。

SQL Server 2000 Desktop Engine 不包括图形管理工具;分发引擎的应用程序通常被编码为执行任何需要的数据库管任务。可以通过 SQL Server 2000 图形工具管理随其它 SQL Server 版本一起安装的 Desktop Engine 实例。

SQL Server 2000 Desktop Engine 支持所有编程 API 和 SQL Server 2000 其它版本的大多数功能,还包括用于管理调度任务的 SQLServerAgent 服务。虽然 Desktop Engine 不包括管理工具和向导,但是应用程序可以使用 SQL Server管理 API 充分管理 Desktop Engine 实例,如使用 SQL-DMO、DTS、复制编程对象或常规数据库 API(如 ADO、OLE DB 和 ODBC)。应用程序可以使用常规数据库 API 访问 Desktop Engine 中的数据,而且 Desktop Engine 可与 SQL Server 2000 的其它版本一起参与 DTS 转换和复制计划(但不能作为事务复制发布服务器运行)。有关 Desktop Engine 支持的功能的更多信息,请参见 SQL Server 2000 的各种版本所支持的功能。

对 SQL Server 2000 这两个版本中包括的数据库引擎已进行了调整,使其能够支持单个用户或小型工作组的典型工作负荷。数据库引擎为桌面用户提供的功能和 SQL Server 2000 标准版及 SQL Server 2000 企业版的功能基本上相同;不过,有两个例外:

不支持主要在大型生产数据库中使用的某些功能,如并行语句处理和索引视图。有关 SQL Server 2000 各种版本中可用功能的更多信息,请参见 SQL Server 2000 的各种版本所支持的功能。


并发工作负荷调控器限制了数据库引擎的性能。当同时执行五个以上的批处理命令时,个别 Transact-SQL 批处理命令的性能将降低。每个批处理命令性能降低的程度取决于除五个批处理命令外还有多少个批处理命令在同时执行,以及各批处理命令检索的数据量。同时执行的批处理命令越多,以及每个批处理命令检索的数据越多,调控器降低个别批处理命令性能的程度也越大。可以使用 DBCC CONCURRENCYVIOLATION 语句报告激活并发工作负荷调控器的频率。有关更多信息,请参见 DBCC CONCURRENCYVIOLATION。
同时,数据库引擎的易用特性使得用户只须做最少的配置调整即可使其运行在膝上型电脑或桌面环境中。数据库引擎自动对自身进行配置,以便根据需要获取或释放资源,如内存和磁盘空间。这意味着可以在最终用户的膝上型电脑或台式机上运行 SQL Server 2000 个人版和 SQL Server 2000 Desktop Engine,而不需要用户或数据库管理员始终调整数据库。

SQL Server 2000 个人版和 SQL Server 2000 Desktop Engine 支持的编程模型与 SQL Server 2000 标准版和 SQL Server 2000 企业版支持的一样。应用程序在所有 SQL Server 2000 版本中都使用相同的 API(如 ADO、OLE DB、ODBC、SQL-DMO等)访问数据。唯一的不同是级别更高的版本所支持的功能集(如故障转移群集或联合数据库服务器),虽然对大多数应用程序而言,这些功能中的大部分都是透明的管理功能或可伸缩的功能。

SQL Server 2000 中使用的数据库引擎支持优化,这使小型膝上型电脑或桌面系统的性能达到最佳,而且只占用很少的内存:

数据库的内部数据结构(如混合扩展盘区)可以显著减小小型数据库或含许多小表的数据库的大小。


当 SQL Server 在默认配置设置下运行时,会针对计算机上当前资源的使用情况对自身进行动态配置,而无须用户发出优化命令。


很多在 SQL Server 6.5 版或更早版本中不得不手工设置的配置选项,已被数据库引擎中的内部逻辑所取代,该逻辑根据负荷自动配置这些选项。


不用再手工更新分发内容统计;这些统计将自动更新。


数据库文件根据数据量自动增长或收缩。
SQL Server 2000 的复制功能以及数据库引擎附加和分离数据库的能力,为有膝上型电脑的移动及脱接用户提供了一个很好的解决方案。这些用户可以定期连接到地区或部门的服务器,通过复制功能与主数据库重新同步数据库信息。或者,可以将数据库放在压缩磁盘上发送给远程用户,而远程用户只须将磁盘连接在他们的服务器上即可获得最新信息。
dawugui 2008-01-29
  • 打赏
  • 举报
回复
邹老大以前写的一个存储过程,用于比较比较两个数据库的表结构差异: 


SQL code
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_comparestructure]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_comparestructure]
GO

/*--比较两个数据库的表结构差异

可以比较两个数据库的结构差异

--邹建 2003.9(引用请保留此信息)--*/

/*--调用示例

exec p_comparestructure '库1','库2'
--*/
create proc p_comparestructure
@dbname1 varchar(250), --要比较的数据库名1
@dbname2 varchar(250) --要比较的数据库名2
as
create table #tb1(表名1 varchar(250),字段名 varchar(250),序号 int,标识 bit,主键 bit,类型 varchar(250),
占用字节数 int,长度 int,小数位数 int,允许空 bit,默认值 sql_variant,字段说明 sql_variant)

create table #tb2(表名2 varchar(250),字段名 varchar(250),序号 int,标识 bit,主键 bit,类型 varchar(250),
占用字节数 int,长度 int,小数位数 int,允许空 bit,默认值 sql_variant,字段说明 sql_variant)

--得到数据库1的结构
exec('insert into #tb1 SELECT
表名=d.name,字段名=a.name,序号=a.colid,
标识=case when a.status=0x80 then 1 else 0 end,
主键=case when exists(SELECT 1 FROM '+@dbname1+'..sysobjects where xtype=''PK'' and parent_obj=a.id and name in (
SELECT name FROM '+@dbname1+'..sysindexes WHERE indid in(
SELECT indid FROM '+@dbname1+'..sysindexkeys WHERE id = a.id AND colid=a.colid
))) then 1 else 0 end,
类型=b.name, 占用字节数=a.length,长度=a.prec,小数位数=a.scale, 允许空=a.isnullable,
默认值=isnull(e.text,''''),字段说明=isnull(g.[value],'''')
FROM '+@dbname1+'..syscolumns a
left join '+@dbname1+'..systypes b on a.xtype=b.xusertype
inner join '+@dbname1+'..sysobjects d on a.id=d.id and d.xtype=''U'' and d.name<>''dtproperties''
left join '+@dbname1+'..syscomments e on a.cdefault=e.id
left join '+@dbname1+'..sysproperties g on a.id=g.id and a.colid=g.smallid
order by a.id,a.colorder')

--得到数据库2的结构
exec('insert into #tb2 SELECT
表名=d.name,字段名=a.name,序号=a.colid,
标识=case when a.status=0x80 then 1 else 0 end,
主键=case when exists(SELECT 1 FROM '+@dbname2+'..sysobjects where xtype=''PK'' and parent_obj=a.id and name in (
SELECT name FROM '+@dbname2+'..sysindexes WHERE indid in(
SELECT indid FROM '+@dbname2+'..sysindexkeys WHERE id = a.id AND colid=a.colid
))) then 1 else 0 end,
类型=b.name, 占用字节数=a.length,长度=a.prec,小数位数=a.scale, 允许空=a.isnullable,
默认值=isnull(e.text,''''),字段说明=isnull(g.[value],'''')
FROM '+@dbname2+'..syscolumns a
left join '+@dbname2+'..systypes b on a.xtype=b.xusertype
inner join '+@dbname2+'..sysobjects d on a.id=d.id and d.xtype=''U'' and d.name<>''dtproperties''
left join '+@dbname2+'..syscomments e on a.cdefault=e.id
left join '+@dbname2+'..sysproperties g on a.id=g.id and a.colid=g.smallid
order by a.id,a.colorder')
--and not exists(select 1 from #tb2 where 表名2=a.表名1)
select 比较结果=case when a.表名1 is null and b.序号=1 then '库1缺少表:'+b.表名2
when b.表名2 is null and a.序号=1 then '库2缺少表:'+a.表名1
when a.字段名 is null and exists(select 1 from #tb1 where 表名1=b.表名2) then '库1 ['+b.表名2+'] 缺少字段:'+b.字段名
when b.字段名 is null and exists(select 1 from #tb2 where 表名2=a.表名1) then '库2 ['+a.表名1+'] 缺少字段:'+a.字段名
when a.标识<>b.标识 then '标识不同'
when a.主键<>b.主键 then '主键设置不同'
when a.类型<>b.类型 then '字段类型不同'
when a.占用字节数<>b.占用字节数 then '占用字节数'
when a.长度<>b.长度 then '长度不同'
when a.小数位数<>b.小数位数 then '小数位数不同'
when a.允许空<>b.允许空 then '是否允许空不同'
when a.默认值<>b.默认值 then '默认值不同'
when a.字段说明<>b.字段说明 then '字段说明不同'
else '' end,
*
from #tb1 a
full join #tb2 b on a.表名1=b.表名2 and a.字段名=b.字段名
where a.表名1 is null or a.字段名 is null or b.表名2 is null or b.字段名 is null
or a.标识<>b.标识 or a.主键<>b.主键 or a.类型<>b.类型
or a.占用字节数<>b.占用字节数 or a.长度<>b.长度 or a.小数位数<>b.小数位数
or a.允许空<>b.允许空 or a.默认值<>b.默认值 or a.字段说明<>b.字段说明
order by isnull(a.表名1,b.表名2),isnull(a.序号,b.序号)--isnull(a.字段名,b.字段名)

ZOU_SEAFARER 2008-01-29
  • 打赏
  • 举报
回复
谢谢楼上2位的回答,现在客户又要改数据库了,原本的数据库大小不合适,最大支持同时操作的用户数量不够,所以要换postgresql,又是一个陌生的数据库,我想问问,这个数据库的引擎是否和MSSQL一样呢。
请知道的大哥给我说说哈,给链接地址也好,如果可能给我一个下载此数据库安装文件地址,原代码不要,看不懂!嘿嘿,谢谢了
wjbwjb 2008-01-29
  • 打赏
  • 举报
回复
MSDE 2000 沒有強制性使用者限制,但是,最好是只有 5 位或更少的使用者共用.
MSDE 2000 每個資料庫最大可支援 2 GB。這個限制是針對每個資料庫,而非每個伺服器。一台電腦可以支援多個 MSDE 2000 執行個體,每個資料庫容量最高可有 2 GB。
pt1314917 2008-01-28
  • 打赏
  • 举报
回复
帮顶。。

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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