1SQLServer2000常用的数据导入导出方法1
1通过DTS的设计器进行导入或导出DTS的设计器功能强大,支持多任务,也是可视化界面,易于 *** 作,但熟悉的人一般不多,如果只是进行SQLServer数据库中部分表的移动,用这种方法最好,当然,也可以进行全部表的移动
在SQLServerEnterpriseManager中,展开服务器左边的+,选择数据库,右击,选择Alltasks/ImportData
(或Alltasks/ExportData
),进入向导模式,然后按照提示一步一步进行就可以了,里面分得非常详细,可以灵活的在不同数据源之间复制数据,非常的方便,而且还可以另存成DTS包,如果以后还有相同的复制任务,直接运行DTS包就行,省时省力
也可以直接打开DTS设计器,方法是展开服务器名称下面的DataServices,选LocalPackages,在右边的窗口中右击,选NewPackage,就打开了DTS设计器
值得注意的是:如果源数据库要拷贝的表有外键,注意移动的顺序,有时要分批移动,否则外键主键,索引可能丢失,移动的时候选项旁边的提示说的很明白,或者一次性的复制到目标数据库中,再重新建立外键,主键,索引
其实在建立数据库时,建立外键,主键,索引的文件应该和建表文件分开,而且用的数据文件也分开,并分别放在不同的驱动器上,有利于数据库的优化
1
2利用Bcp工具这种工具虽然在SQLServer2000的版本中不推荐使用,但许多数据库管理员仍很喜欢用它,尤其是用过SQLServer早期版本的人
不过Bcp确实有其局限性,首先它的界面不是图形化的;其次它只是在SQLServer的表(视图)与文本文件之间进行复制
但是另一方面,它也有其优点:性能好,开销小,占用内存少,速度快
1
3利用备份和恢复先对源数据库进行完全备份,备份到一个设备(device)上,然后把备份文件复制到目的服务器上(恢复的速度快),进行数据库的恢复 *** 作,在恢复的数据库名中填上源数据库的名字(名字必须相同),选择强制型恢复(可以覆盖以前数据库的选项),在选择从设备中进行恢复,浏览时选中备份的文件就行了
这种方法可以完全恢复数据库,包括外键,主键,索引
1
4直接拷贝数据文件把数据库的数据文件(
mdf)和日志文件(
ldf)都拷贝到目的服务器,在SQLServerQueryAnalyzer中用语句进行恢复:EXECsp_attach_db@dbname=’test’,@filename1=’d:mssql7data est_data
mdf’,@filename2=’d:mssql7data est_log
ldf’这样就把test数据库附加到SQLServer中,可以照常使用,如果不想用原来的日志文件,可以用如下的命令:EXECsp_detach_db@dbname=’test’EXECsp_attach_single_file_db@dbname=’test’,@physname=’d:mssql7data est_data
mdf’这个语句的作用是仅仅加载数据文件,日志文件可以由SQLServer数据库自动添加,但是原来的日志文件中记录的数据就丢失了
1
5在应用程序中定制可以在应用程序(PB、VB)中执行自己编写的程序,也可以在QueryAnalyzer中执行,这种方法比较灵活,其实是利用一个平台连接到数据库,在平台中用的主要是SQL语句,这种方法对数据库的影响小,但是如果用到远程链接服务器,要求网络之间的传输性能好,一般有两种语句:1
5
1select
intonew_tablenamewhere
1
5
2insert(into)old_tablenameselect
from
where
这两种方式的区别是前者把数据插入一个新表(先建立表,再插入数据),而后者是把数据插入已经存在的一个表中,一般来说,第二条语句强于前者
1
6SQLServer的复制功能SQLServer提供了强大的数据复制功能,也是最不易掌握的,具体应用请参考相关资料,值得注意的是要想成功进行数据的复制工作,有些条件是必不可少的:1
6
1SQLServerAgent必须启动,MSDTC必须启动
1
6
2所有要复制的表必须有主键
1
6
3如果表中有text或image数据类型,必须使用withlog选项,不能使用withno_log选项
另外maxtextreplsize选项控制可以复制的文本和图像数据的最大规模,超过这个限制的 *** 作将失败
1
6
4在要进行复制的计算机上,应该至少是隐含共享,即共享名是C$或D$
1
6
5为SQLServer代理使用的WindowsNT账号不能是一个本地的系统账号,因为本地的系统账号不允许网络存取
1
6
6如果参与复制的服务器在另外的计算机域中,必须在这些域之间建立信任关系
2实现基于网页的数据库数据导入那么,如何实现基于网页的数据库数据导入呢,下面利用一个比较简单的网络介绍一下
假设某局域网的网络拓扑结构如下所示:其中服务器A和工作站B位于局域网内,工作站C与服务器D位于Internet内,局域网与Internet是物理隔离的,工作站C与工作站D在同一个办公室内,服务器A上的数据库管理系统是Oracle,服务器D上的数据库管理系统是SQLServer2000
由于工作需要,要求把服务器A的有关数据导入到服务器D上
2
1通常的工作流程:2
1
1在工作站B上运行客户端软件,将服务器A上数据导入到本地的dbf文件
2
1
2用移动硬盘把dbf文件从工作站B拷贝到工作站C上
2
1
3在工作站C上,用ftp软件将dbf文件上传到服务器D上
2
1
4在工作站C上,运行远程桌面软件登录到服务器D上
2
1
5在服务器D上,执行DTS,将dbf文件中的数据导入到SQLServer数据库
2
1
6在服务器D上,运行相关存储过程,做数据的后期处理工作
在许多情况下,因为各种不同情况的需要,这个工作流程每天(甚至更短的时间内)就要执行一次,非常繁琐,而且使用手工 *** 作,很容易出错
下面提出一种改进的方案
2
2改进后的工作流程2
2
1在工作站B上运行客户端软件,将服务器A上数据导入到本地的dbf文件
2
2
2用移动硬盘把dbf文件从工作站B拷贝到工作站C上
2
2
3在工作站C上,打开服务器D上的相关网页,利用网页将dbf文件的数据导入到服务器D上的SQLServer数据库中
首先,要在网页里实现上传功能,把dbf文件从工作站C上传到服务D上,这里就不多介绍了
要通过网页把dbf文件导入到SQLServer中,需要借助DTS可编程对象
DTS包含一组可编程COM对象,主要包含:DTS
Package、DTS
Connection、DTS
Step、DTS
、DTS
、DTS
在ASP网页里,通过用VBScript脚本创建调用DTS可编程COM对象,可以完成数据导入任务
SQLServer2000有比较详细的文档资料介绍DTS编程,但没有给一个具体的例子,如果仅参考文档资料,难度比较大,开发时间也会相当长
这里大概的介绍一下开发程序的过程
首先,在SQLSever2000的DTS设计器里,创建DTS包,实现从dbf文件到SQLServer2000的数据导入,把后期处理的存储过程也添加到DTS包里
将这个DTS包另存为VBScript文件
有了这个VBScript文件,开发程序就容易多了,加入所需要的其他代码,就可以在网页里实现数据库的数据导入
参考文献1张莉,等
SQLServer数据库原理及应用教程〔M〕
北京:清华大学出版社,2003
2梁方明
SQLServer2000数据库编程〔M〕
北京:北京希望电子出版社,2002
3LouisDavidson(美)
SQLServer2000数据库设计权威指南〔M〕
中国电力出版社,2002
[
Oracle和MySQL使用的字符串连接函数都是concat
Oracle作为关系型数据库的老大,怎么可能这么low显然有更方便且好用的办法,那就是“||”,这个是不限制字符串的个数的(所谓不限制,也不能玩命的拼接,当超出SQL的长度时也是会有问题的。
PowerBuilder(PB)和Oracle分别是前端开发工具和RDBMS的主流产品 PB提供了两种与Oracle连接的接口 PowerSoft内置的数据库接口(Native Database Interface)和ODBC接口
PowerBuilder与Oracle的连接
假定已安装Oracle客户端应用程序 可用Sqlplus或Tnsping等是否能连接到Oracle数据库 确定在SQLNET配置文件中使用的数据库别名(Database Alias 又称服务器名 Server Name) 如有疑问 可在Oracle客户端程序目录下tnsname ora文件中找到 另外保证搜索路径已包括SQLNET应用程序的安装目录(如C:\ORAWIN \BIN)
进入PB的Database Profiles画笔 可看到所有已安装的数据库接口(PB 缺省安装的是Oracle 版的接口 如使用低版本的Oracle 需在安装时指定) 选择 O Oracle 点击 New 按钮 进入Database Profile Setup对话框 在 Connection 页输入下列信息 Profile Name:为该Database Profile起一个有意义的名称 Server:@TNS:ServerName 其中ServerName为上述数据库别名(服务器名) 如@TNS:ORA ;注意 PB 则没有前面那个@TNS:!!!
Login ID:Oracle数据库中实际的用户名 由于PB初次连接到数据库时要自动建立五个系统表(PowerBuilder Catalog Table:PBCATTBL PBCATCOL PBCATEDT PBCATFMT PBCATVLD 存储表的扩展属性) 因此第一个连接到Oracle的用户必须具有建表 给PUBLIC角色授权等权限 例如可用SYSTEM用户进行第一次连接 此后的连接对用户则无特殊要求
Password:该用户的口令
设置上述内容后 即可连上Oracle 为优化数据库连接 还可设置下列选项
Prompt for Database Information:连接时是否提示用户输入用户名和口令
Generate Trace:启动DB跟踪工具 跟踪连接
Thread Safe:开发需要多线程环境支持的分布式应用时 选择该项 缺省为未选 适用于非分布应用
PBDBMS:与存储过程调用方式有关的参数 Oracle为 或更高版本时 清除该选项 此时带IN OUT参数的存储过程可作为数据窗口数据源 版本以下 选择该项 调用PBDBMS Put Line建立存储过程的SQL语句 缺省是选中
Commit on Disconnect:断开连接时 指定提交或回退未提交的事务
Case Sensitive:连接的Oracle服务器是否区分大小写 注意该项选中时 所有主键 包含主键的表名 外键须全为大写字符
PowerBuilder Catalog Tables Owner:指定拥有PB系统表的用户 缺省为 SYSTEM 如果要使用多种显示格式或有效性规则 可以在不同的用户下建立几套系统表
Table Criteria:指定满足哪些条件的表 视图和同义词可在 Select Tables 对话框中显示出来 例如DEV用户下销售子系统的表都以SALE开头 则可以用SALE% DEV TABLE VIEW 指定只显示DEV用户以SALE开头的表和视图
Asynchronous:选择该项 可在一个复杂的SQL语句执行过程中 返回第一行结果前 切换到其他 *** 作
Number of Seconds to Wait:若上一项选中 还可进一步通过该项指定检索数据时 等待数据库响应的时间
Retrieve Blocking Factor:决定数据窗口对象一次可从数据库取出的记录数
Number of SQL Staments Cached:PB可将数据窗口对象产生的SQL语句和嵌入式SQL语句保存在SQL语句缓冲区 该参数指定缓冲区为PB保留的SQL语句数目 该数值可由下式计算 SQLCache=服务器OPEN CURSORS数 (保留的游标数) 本连接预期使用的最大游标数
Disable Bind:指定是否将输入变量与SQL语句绑定 此参数影响PB为数据窗口对象生成INSERT语句的方式
Static Bind:数据窗口对象检索数据前是否检测SELECT语句的合法性
在Syntax页 还可指定日期 时间的格式等 在Preview页可查看Database Profile设置对应的PowerScript写法
Oracle存储过程的使用
归纳起来PB 中调用Oracle存储过程有以下四种方法
方法一 以关键字RPCFUNC声明存储过程
方法二 以DECLARE PROCEDURE语句声明存储过程
方法三 以动态SQL语句实现
方法四 调用函数PBDBMS Put Line
一般情况下 方法一能得到较好的运行效率和更完善的功能 因此推荐使用方法一 但是某些类型的存储过程只能使用其他方法 以下重点介绍方法一和方法二
两种方法比较起来 有以下几点主要区别
)方法一适用于具有IN OUT和IN OUT参数的存储过程 而方法二仅支持IN和OUT参数 不支持IN OUT参数
)方法一对参数的数目无限制 方法二最多支持 个参数
)方法一不支持记录(Recorder)的传递 方法二可传递和接收记录
方法一 *** 作步骤
)在用户对象画笔中创建一个Class Standard类型的 从Transaction继承的用户对象
)在此用户对象中 声明Local External Functions 将存储过程以RPCFUNC关键字声明为外部函数 在Declare Local External Functions对话框中按Procedures按钮选择要调用的后台存储过程 或直接输入类似subroutine TEST(long id ref string name)RPCFUNC ALIAS FOR DEVTEST 的语句 例如DEVTEST的参数为(id IN NUMBER name IN OUT VARCHAR )
)保存该用户对象
)在Application画笔中 进入应用属性对话框 在Variable Types页 将上Transaction用户对象设置为缺省的全局变量SQLCA
)脚本中 编码调用相应的外部函数 形式 SQLCA函数名(参数) 如可用 SQLCATEST(ln id ls name) 调用例子中定义的DEVTEST存储过程 其中ln id ls name为调用参数
方法一注意事项
)由于PB中String类型的数据长度是动态分配的 因此对Ref String类型的参数 每次调用前需要申请足够的空间 例如上例从输入的id值检索name 后台声明的NAME数据类型为VARCHAR ( ) 每次调用SQLCATEST前需要用ls name=SPACE( )置ls name为足够长度的空串
lishixinzhi/Article/program/PB/201311/24641
有时候我们希望在一个sqlserver下访问另一个sqlserver数据库上的数据 或者访问其他oracle数据库上的数据 要想完成这些 *** 作 我们首要的是创建数据库链接
数据库链接能够让本地的一个sqlserver登录用户映射到远程的一个数据库服务器上 并且像 *** 作本地数据库一样 那么怎么创建数据库链接呢我现在有两种方法可以实现
第一种 在 sqlserver 企业管理器中 建立 这个比较简单的 首先在 安全性 〉数据库链接 上点右键 在出现的菜单中点 新建数据库链接 然后会d出一个界面 需要我们填写的有 链接服务器(这是一个名字 自己根据情况自行定义 以后就要通过他进行远程访问了) 提供程序名称(这个就是选择数据驱动 根据数据库类型来选择 不能乱选 否则链接不上的) 数据源(对于sqlserver就是远程数据库服务器的主机名或者IP 对于 oracle 就是在 oracle net config 中配置的别名) 安全上下文用户和口令(也就是远程服务器的用户和口令)
第二种 利用系统存储过程
创建一个sqlserver对sqlserver的数据库链接
exec sp_addlinkedserver link_northsnow SQLOLEDB 远程服务器主机名或域名或ip地址
exec sp_addlinkedsrvlogin link_northsnow false null 用户名 用户口令
创建一个sqlserver对Oracle的数据库链接
exec sp_addlinkedserver link_ora Oracle MSDAORA oracle数据库服务器别名
exec sp_addlinkedsrvlogin link_ora false sa 用户名 用户口令
有了数据库链接我们就可以使用了 对于sqlserver和oracle中的使用方法是有区别的
对于sqlserver
create view v_lhsy_user as select from link_northsnow lhsy dbo sys_user
select from v_lhsy_user
其中lhsy为远程的数据库名
sys_user为表名
对于 oracle
create view vvv as select from link_ora NORTHSNOW SYS_USER
select from vvv;
其中northsnow为远程oracle数据库服务器的一个用户名 SYS_USER为该用户在该服务器上的一个表 要非常注意的是 数据库链接(link_ora)后面有两个点( ) 再往后面必须全部大写 查询的对象一般为表格或者视图 不能查询同义词
要想删除数据库链接 也有两种方法
一种是在企业管理器中 *** 作 这个简单
另一种是用系统存储过程
lishixinzhi/Article/program/SQLServer/201311/22533
以上就是关于在网页引用数据库的详细方法(如何引用数据库数据)全部的内容,包括:在网页引用数据库的详细方法(如何引用数据库数据)、数据库,介绍其连接符的含义及使用方法、PB内置Oracle数据库接口的使用方法[1]等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)