欢迎来到个人简历网!永久域名:gerenjianli.cn (个人简历全拼+cn)
当前位置:首页 > 范文大全 > 实用文>系统从oracle版本转化为sqlserver版本数据库教程

系统从oracle版本转化为sqlserver版本数据库教程

2022-10-05 08:43:11 收藏本文 下载本文

“冰糖炖雪李”通过精心收集,向本站投稿了7篇系统从oracle版本转化为sqlserver版本数据库教程,下面是小编为大家推荐的系统从oracle版本转化为sqlserver版本数据库教程,欢迎阅读,希望大家能够喜欢。

系统从oracle版本转化为sqlserver版本数据库教程

篇1:系统从oracle版本转化为sqlserver版本数据库教程

oracle|server|sqlserver

Waterxp 从oracle版本转化为sqlserver版本

1,系统安排

为了oracle版本和sqlserver版本能很方便的转化,也为了两个版本能同步修改,特别是业务逻辑层,现决定如下:

A,两个版本的业务逻辑层都放在source目录下。在该目录下有两个目录:

sql 和ora。这两个目录有三个文件:

common.pbl ,water_modi.pbl,dw_version.pbl。

这三个 文件里面绝大部分是数据窗口,主要是因为sql server 和oracle的语法有差别。如果只是因为数据窗口有双引号在sql server里不能用,那么把数据窗口的select语法的字段引号去掉即可,因为没有引号的select语句在sql server和oracle下面都是可用的。修改的过程中注意update属性。

B,不同的数据库将使用不同的目录。

2,系统环境的建立

每台机器上建立下面的磁盘映射:

P 指向 \oraservrp237

V  指向 \oraservr ql237 或者是 \oraserverora237

源代码在 \oraservercodewater237 ource 里面。

P盘是肯定要有的, V盘由使用什么版本决定。

3,源代码的修改

业务层的修改尽可能的在源代码处,因为这样修改能让两个版本同时修改。

P盘是类库可以不需要修改。

V盘里的数据窗口都需要改。

改sql237里面的数据窗口,要修改和要注意的地方:

替换的方法

oracle里面使用                     sql server 里面使用

to_char(readingdate,’yyyymm’)     convert(char(6),readingdate,111)

to_char(readingdate,’yyyy/mm’)     convert(char(7),readingdate,112)

decode( , , , ,)              case when then end 或者 isnull(x,0)

左右连接 (+)                  left outer join

修改过程中要注意数据窗口的update属性,

4,工作计划

4,1先修改sql237目录下的三个pbl里面的数据窗口的语法。为了照顾数据窗口的update属性,建议使用edit source的方法,而且select语法字段的引号在sql server版本建议去掉。使用pb的replace功能即可。

4,2 修改某些数据窗口的内嵌式sql 的语法。因为有一些内嵌式sql 也使用了decode ,或者是to_char(),这些语法在sqlserver也是必须代替的。

修改方法:

if gs_database = ‘ORACLE’ then

………………decode()……………;

else

…………………case when then end ………..;

end if

4,3 最后的工作是测试。这是最繁琐的最重要的。在测试的过程会发现有一些数据窗口在sql server不能用:修改方法是将字段的引号去掉或者是移到sql 和ora目录里面的dw_version.pbl文件里面,在那里进行修改。

4,4主要的数据表都已经迁移过来了,名字一样,可能在sql server有一些表的字段不够那么请重新导入一次。主要的存储过程都已经翻译过来,名字不一样。在测试的过程会发现有一些视图没有存在,那么请从oracle把语法拷贝出来,在sql server查询分析器里生成之。

篇2:如何在一台主机上安装多个版本oracle数据库

本文以在一个host 上安装2个版本的oracle数据库(oracle 10g/11g)为例,做一个简单的介绍,

系统环境使用的是ol5.8,采用oracle-validate-rpm来自动配置oracle的系统环境。

安装路径需要手工创建,在这里需要准备两个两个path($oracle_base)

ora11g:

创建 ORACLE 软件路径

mkdir -p /u01/app/oracle/product/11.2.0/db_1

chown oracle:dba -R /u01

chmod 744 –R /u01

设置oracle用户SHELL参数:

vi /home/oracle/.bash_profile

ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME

ORACLE_SID=ora11g; export ORACLE_SID

ORACLE_TERM=vt100; export ORACLE_TERM

TNS_ADMIN=$ORACLE_HOME/network/admin;export TNS_ADMIN

NLS_LANG=american_america.zhs16gbk; export NLS_LANG

ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib; export LD_LIBRARY_PATH

LIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib ;export LIBPATH

ORA_DB=$ORACLE_HOME/dbs;export ORA_DB

CLASSPATH=$ORACLE_HOME/JRE/lib:$ORACLE_HOME/JRE/lib/rt.jar:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

PATH=$ORA_CRS_HOME/bin:$ORACLE_HOME/bin:$PATH; export PATH

可以使用同一个dba oinstall 组,

ora10:

user:oracle10g

useradd -d /home/oracle10g -u 54322 -g oinstall -G dba oracle10g

创建 ORACLE 软件路径:

mkdir -p /u02/app/oracle/product/10.2.0/db_1

chown oracle:dba -R /u02

chmod 744 –R /u02

设置oracle用户SHELL参数:

vi /home/oracle10g/.bash_profile

ORACLE_BASE=/u02/app/oracle; export ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME

ORACLE_SID=ora10g; export ORACLE_SID

ORACLE_TERM=vt100; export ORACLE_TERM

TNS_ADMIN=$ORACLE_HOME/network/admin;export TNS_ADMIN

NLS_LANG=american_america.zhs16gbk; export NLS_LANG

ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib; export LD_LIBRARY_PATH

LIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib ;export LIBPATH

ORA_DB=$ORACLE_HOME/dbs;export ORA_DB

CLASSPATH=$ORACLE_HOME/JRE/lib:$ORACLE_HOME/JRE/lib/rt.jar:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

PATH=$ORA_CRS_HOME/bin:$ORACLE_HOME/bin:$PATH; export PATH

安装中遇到的的问题及解决方法;

(a)

oracle 10201 没有在ol5.x 和 rhel5.x上认证,所以在

篇3:SQL SERVER数据库备份和恢复存储过程(加强版本)数据库教程

server|备份|存储过程|恢复|数据|数据库

SQL SERVER2000数据库备份和恢复存储过程(加强版本)

我自己写的2个过程和一个函数,用于SQL SERVER2000数据库备份和恢复

拿出来和大家交流一下,过程和函数的详细说明在代码中

谢谢

/*备份数据库的过程*/

if exists(

select * from sysobjects

where name='pr_backup_db' and xtype='p'

)

begin

drop proc pr_backup_db

end

go

create proc pr_backup_db

@flag varchar(20) out,

@backup_db_name varchar(128),

@filename varchar(1000) --路径+文件名字

as

declare @sql nvarchar(4000),@par nvarchar(1000)

if not exists(

select * from master..sysdatabases

where name=@backup_db_name

)

begin

select @flag='db not exist' /*数据库不存在*/

return

end

else

begin

if right(@filename,1)'' and charindex('',@filename)0

begin

select @par='@filename varchar(1000)'

select @sql='BACKUP DATABASE '+@backup_db_name+' to disk=@filename with init'

execute sp_executesql @sql,@par,@filename

select @flag='ok'

return

end

else

begin

select @flag='file type error' /*参数@filename输入格式错误*/

return

end

end

GO

说明:pr_backup_db过程是备份你的数据库

/*创建函数,得到文件得路径*/

if exists(

select * from sysobjects

where name='fn_GetFilePath' and xtype='fn'

)

begin

drop function fn_GetFilePath

end

go

create function fn_GetFilePath(@filename nvarchar(260))

returns nvarchar(260)

as

begin

declare @file_path nvarchar(260)

declare @filename_reverse nvarchar(260)

select @filename_reverse=reverse(@filename)

select @file_path=substring(@filename,1,len(@filename)+1-charindex('',@filename_reverse))

return @file_path

end

GO

/*恢复数据库的过程*/

if exists(

select * from sysobjects

where name='pr_restore_db' and xtype='p'

)

begin

drop proc pr_restore_db

end

go

CREATE proc pr_restore_db

@flag varchar(20) out,   /*过程运行的状态标志,是输入参数*/

@restore_db_name nvarchar(128), /*要恢复的数据名字*/

@filename nvarchar(260)        /*备份文件存放的路径+备份文件名字*/

as

declare @proc_result tinyint /*返回系统存储过程xp_cmdshell运行结果*/

declare @loop_time smallint /*循环次数*/

declare @max_ids smallint   /*@tem表的ids列最大数*/

declare @file_bak_path nvarchar(260) /*原数据库存放路径*/

declare @flag_file bit  /*文件存放标志*/

declare @master_path nvarchar(260) /*数据库master文件路径*/

declare @sql nvarchar(4000),@par nvarchar(1000)

declare @sql_sub nvarchar(4000)

declare @sql_cmd nvarchar(100)

declare @sql_kill nvarchar(100)

/*

判断参数@filename文件格式合法性,以防止用户输入类似d: 或者 c:a 等非法文件名

参数@filename里面必须有''并且不以''结尾

*/

if right(@filename,1)'' and charindex('',@filename)0

begin

select @sql_cmd='dir '+@filename

EXEC @proc_result = master..xp_cmdshell @sql_cmd,no_output

IF (@proc_result0) /*系统存储过程xp_cmdshell返回代码值:0(成功)或1(失败)*/

begin

select @flag='not exist'  /*备份文件不存在*/

return /*退出过程*/

end

/*创建临时表,保存由备份集内包含的数据库和日志文件列表组成的结果集*/

create table #tem(

LogicalName nvarchar(128), /*文件的逻辑名称*/

PhysicalName nvarchar(260) , /*文件的物理名称或操作系统名称*/

Type char(1), /*数据文件 (D) 或日志文件 (L)*/

FileGroupName nvarchar(128), /*包含文件的文件组名称*/

[Size] numeric(20,0), /*当前大小(以字节为单位)*/

[MaxSize] numeric(20,0) /*允许的最大大小(以字节为单位)*/

)

/*

创建表变量,表结构与临时表基本一样

就是多了两列,

列ids(自增编号列),

列file_path,存放文件的路径

*/

declare @tem table(

ids smallint identity, /*自增编号列*/

LogicalName nvarchar(128),

PhysicalName nvarchar(260),

File_path nvarchar(260),

Type char(1),

FileGroupName nvarchar(128)

)

insert into #tem

execute('restore filelistonly from disk='''+@filename+'''')

/*将临时表导入表变量中,并且计算出相应得路径*/

insert into @tem(LogicalName,PhysicalName,File_path,Type,FileGroupName)

select LogicalName,PhysicalName,dbo.fn_GetFilePath(PhysicalName),Type,FileGroupName

from #tem

if @@rowcount>0

begin

drop table #tem

end

select @loop_time=1

select @max_ids=max(ids) /*@tem表的ids列最大数*/

from @tem

while @loop_time<=@max_ids

begin

select @file_bak_path=file_path

from @tem where ids=@loop_time

select @sql_cmd='dir '+@file_bak_path

EXEC @proc_result = master..xp_cmdshell @sql_cmd,no_output

/*系统存储过程xp_cmdshell返回代码值:0(成功)或1(失败)*/

IF (@proc_result0)

select @loop_time=@loop_time+1

else

BREAK /*没有找到备份前数据文件原有存放路径,退出循环*/

end

select @master_path=''

if @loop_time>@max_ids

select @flag_file=1  /*备份前数据文件原有存放路径存在*/

else

begin

select @flag_file=0 /*备份前数据文件原有存放路径不存在*/

select @master_path=dbo.fn_GetFilePath(filename)

from master..sysdatabases

where name='master'

end

select @sql_sub=''

/*type='d'是数据文件,type='l'是日志文件 */

/*@flag_file=1时新的数据库文件还是存放在原来路径,否则存放路径和master数据库路径一样*/

select @sql_sub=@sql_sub+'move '''+LogicalName+''' to '''

+case type

when 'd' then case @flag_file

when 1 then File_path

else @master_path

end

when 'l' then case @flag_file

when 1 then File_path

else @master_path

end

end

+case type

when 'd' then @restore_db_name

+'_DATA'

+convert(sysname,ids) /*给文件编号*/

+'.'

+right(PhysicalName,3) /*给文件加入后缀名,mdf or ndf*/

+''','

when 'l' then @restore_db_name

+'_LOG'

+convert(sysname,ids)  /*给文件编号*/

+'.'

+right(PhysicalName,3) /*给文件加入后缀名,mdf or ndf*/

+''','

end

from @tem

select @sql='RESTORE DATABASE @db_name FROM DISK=@filename with '

select @sql=@sql+@sql_sub+'replace'

select @par='@db_name nvarchar(128),@filename nvarchar(260)'

/*关闭相关进程,把相应进程状况导入临时表中*/

select identity(int,1,1) ids, spid

into #temp

from master..sysprocesses

where dbid=db_id(@restore_db_name)

if @@rowcount>0 --找到相应进程

begin

select @max_ids=max(ids)

from #temp

select @loop_time=1

while @loop_time<=@max_ids

begin

select @sql_kill='kill '+convert(nvarchar(20),spid)

from #temp

where ids=@loop_time

execute sp_executesql @sql_kill

select @loop_time=@loop_time+1

end

end

drop table #temp

execute sp_executesql @sql,@par,@db_name=@restore_db_name,@filename=@filename

select @flag='ok'  /*操作成功*/

end

else

begin

SELECT @flag='file type error' /*参数@filename输入格式错误*/

end

GO

--run

--备份数据库test_database

declare @fl varchar(10)

execute pr_backup_db @fl out,'test_database','c:test_database.bak'

select @fl

--恢复数据库,输入的参数错误

declare @fl varchar(20)

exec pr_restore_db @fl out,'sa','c:'

select @fl

--恢复数据库,即创建数据库test_database的复本test_db

declare @fl varchar(20)

exec pr_restore_db @fl out,'test_db','c:test_database.bak'

select @fl

以上过程和函数在MS SQL2000运行成功,由于MS SQL7不支持用户自定义函数和表变量,要在MS SQL7下使用可以把函数fn_GetFilePath改写成过

程,把过程pr_restore_db中的表变量改写为临时表即可运行,有兴趣的朋友可以试试!

我的Email:aierong@2118.cn

欢迎大家交流

篇4:Windows8系统下卸载各版本IE浏览器教程

当然为了进行下面的操作,你必须登陆管理员账户或者拥有管理员权限,单击开始按钮,在搜索框里输入cmd,进入命令提示框,将下面的命令复制粘贴到命令框里,然后按下Enter键执行。

以下是执行卸载IE9的命令行:

FORFILES /P %WINDIR%servicingPackages /M Microsoft-Windows-InternetExplorer-*9.*.mum /c “cmd /c echo Uninstalling package @fname && start /w pkgmgr /up:@fname /quiet /norestart

以下是执行卸载IE10的命令行:

FORFILES /P %WINDIR%servicingPackages /M Microsoft-Windows-InternetExplorer-*10.*.mum /c ”cmd /c echo Uninstalling package @fname && start /w pkgmgr /up:@fname /quiet /norestart

以下是执行卸载IE11的命令行:

FORFILES /P %WINDIR%servicingPackages /M Microsoft-Windows-InternetExplorer-*11.*.mum /c “cmd /c echo Uninstalling package @fname && start /w pkgmgr /up:@fname /quiet /norestart

篇5:[ER/Studio]进行不同版本数据库结构的合并数据库教程

数据|数据库|数据库结构

难度系数:0

本文目的:

介绍ER/Studio数据库建模软件,感觉比Rose及Visio数据库建模好用

没有ERWin的乱码问题,PowerDesigner一直无缘用到,呵呵,听说过没见过 :)

公司开发的一个系统,因为是提供给客户代码的,所以客户进行了二次开发,

同时为了产品的扩展性,我们公司本身也对其进行了进一步的开发。

后来根据需要,客户要求我们在他们已有程序的基础上结合我们现在的程序对其系统进行升级。

两边的代码修改幅度都不是很大,使用VSS可以进行比较确认差异。

但是客户为了统计和查询的便利,增加了较多的表和字段,同样我们这边的数据库也进行了一些变更

数据库的整合成了个麻烦事,呵呵,虽然有不少方法,比如:导成SQL语句,进行对比之类

但是工作量不小,

后来使用ER/Studio解决了这个问题,比较轻松,看来有个趁手的工具就是好。

1:首先将两个数据库逆向成两个建模文件Model1.DM1和Model2.DM1

2:打开Model1.DM1,然后按图一步步走下去,很容易。

在点击“Finish”进行实际处理之前,建议先生成Report,察看合并情况

选HTML格式,后面看起来会方便些

合并的没有关系,关键是如果会把目标表中有但是来源表没有的表删除,

如果要保留的,就退回几步把这几个表的勾去掉

选好后再前进到最后的界面点击“Finish”进行操作即可。

注意:如果数据库表太多可能会引发软件异常

篇6:“无法升级数据库....因为此版本的SQLServer不支持该数据库的非发布版本(539)“解决

使用SQL附加一个数据库时报出了以下错误:“无法升级数据库....因为此版本的 SQL Server 不支持该数据库的非发布版本(539),不能打开与此版本的 sqlserver.exe 不兼容的数据库。必须重新创建该数据库。”

详细截图如下:

经过检索得知:原来539 是Sql Server数据库的内部版本号,也就是说要附加的数据库文件是由Sql Server 2000创建的,但是我们知道Sql Server 2012 数据库是不兼容Sql Server 2000数据库的。如下图所示:<?www.2cto.com/kf/ware/vc/” target=“_blank” class=“keylink”>vcD4KPHA+CiAgICAgPGltZyBzcmM9“www.2cto.com/uploadfile/Collfiles/0619/2015061910120618.png” alt=“”>

原来要附加的数据库是Sql Server 2000创建的数据库,故出现了以上的错误情况。此时便有了针对性的解决办法:Sql Server 2000数据库->(先附加到)Sql Server /(可在另一台机子上完成或本机安装虚拟机,虚拟机上安装Sql Server 2005/2008)->然后分离数据库,拷贝到目标文件夹再附加到Sql Server 2012上。

以下是查询到的Sql Server2012以前的微软所有 Sql Server数据库的内部版本号列表: (Sql Server2012数据库的内部版本号为 706)

Target SQL Server Version

Source SQL Server Version

Internal Database Version

SQL Server 2008 R2

SQL Server 2008 R2

665

SQL Server 2008

661

SQL Server 2005 with vardecimal enabled

612

SQL Server 2005

611

SQL Server 2000

539

SQL Server 2008

SQL Server 2008

661

SQL Server 2005 with vardecimal enabled

612

SQL Server 2005

611

SQL Server 2000

539

SQL Server 2005 SP2+

SQL Server 2005 with vardecimal enabled

612

SQL Server 2005

611

SQL Server 2000

539

SQL Server 7

515

SQL Server 2005

SQL Server 2005

611

SQL Server 2000

539

SQL Server 7

515

SQL Server 2000

SQL Server 2000

539

SQL Server 7

515

SQL Server 7

SQL Server 7

515

通过以上表,我们就可以很快理解这个错误提示了,

如果要查看Sql Server的内部版本号,也可以通过下面的Sql句来查看:

SELECTDATABASEPROPERTYEX(‘MASTER‘,‘VERSION‘)

篇7:网址管理专家 1.5 优化版 (免费版本) 请大家测试数据库教程

优化

山水清音阁倾情奉献请到此下载,有意见请反馈给我

jsj.jh.zj.cn/leadbbs/images/upload/2004/11/13/111607.rar

正文

【系统从oracle版本转化为sqlserver版本数据库教程】相关文章:

1.从MDF文件恢复SqlServer数据库数据库

2.如何修复SQLSERVER 数据库置疑之(二)数据库教程

3.浅析Oracle和SqlServer存储过程的调试、出错处理数据库

4.从动态SQL中返回值数据库教程

5.直接从SQL语句问题贴子数据建表并生成建表语句的存储过程数据库教程

下载word文档
《系统从oracle版本转化为sqlserver版本数据库教程.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度: 评级1星 评级2星 评级3星 评级4星 评级5星
点击下载文档

文档为doc格式

系统从oracle版本转化为sqlserver版本数据库教程相关文章
最新推荐
猜你喜欢
  • 返回顶部