系统从oracle版本转化为sqlserver版本数据库教程
“冰糖炖雪李”通过精心收集,向本站投稿了7篇系统从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版本数据库教程】相关文章:
2.如何修复SQLSERVER 数据库置疑之(二)数据库教程






文档为doc格式