2023年11月30日发(作者:)
第 卷 第 期
25 2
2 0 0 3 4
年 月
沈 阳 工 业 大 学 学 报
Journal of Shenyang University of Technology
Vol25 No2
11
Apr. 2 0 0 3
信息科学与工程
文章编号
: 1000 - 1646 200302 - 0118 - 03
()
在 中实现 间数据复制的多种方法
PB SQL Server
徐全生 任礼斌
,
()
沈阳工业大学 信息科学与工程学院 辽宁 沈阳
, 110023
摘 要 研究了在 中编程实现网络互连的多台 服务器间数据复制的方法 对其中 的两种方
: PB SQL Server ,
法 数据管道和链接服务器 重点叙述了其中的一些关键性的问题 给出了解决的技术
:,,;
并分析了两者之间的优缺点
.
关 键 词 数据管道 链接服务器 数据库管理系统 数据源
: ; ; ;
中图分类号 1文献标识码
: TP 31152 : A
在 技术高速发展 互联网已渗透至千家
IT ,
万户的今天 数据库技术始终居于中心地位大量
,.
的信息存储对数据复制提出了较高的要求
. SQL
Server ,
则提供了完备的数据复制功能 特别是通
过使用其复制功能 用户可以产生数据的拷贝 移 全局数据对象 假设为
,,,SQLCA
动这些数据拷贝到任何地方 并自动地同步数据
,,
以使分布式环境下的多个数据拷贝保持相同的数 用 因
据值的复制功能具有相当的灵活
. SQL Server
性 使得在同一台服务器的数据库间或依赖网络 示例代码如下
,:
互连的多台服务器间可以方便地实现复制不久
.
前 利用 1在 上
,Power Builder 80 PBSQL Server
( )
开发一套 系统时 本文对网络互连的多台
M IS ,
SQL Server ,
服务器间的数据复制进行了研究 并
总结出了几种方法如 数据管道 、链接服务器 、使
. :
用 的 专 利 技 术 数 据 窗 口 、通 过 文 本 文 件
PB
( ) / /
3 做中介 、使用 提供的外部命
. txtSQL Server
二种方式的实现过程
.
11
1创建数据源
在 中 要想在两个 数据库间
PB ,SQL Server
进行数据复制 必须先针对两个数据库分别建立
,
- -
A ,SQLCA B.
具
体的连接可以使用 、等本例中使
OL E DB ODBC .
Microsoft OL E DB Provider for SQL Server ,
其使用起来比较方便 在程序发布时不需要注册
,.
SQLCA A. DBMS = MSS Microsoft SQL
-
″
Server 6. x
″
/ /
数据库厂商名
SQLCA A. Database = school
-
″″
/ /
数据库名
SQLCA A. ServerName = local
-
″″
()
数据库服务器的网络名
SQLCA A. Log Id = sa
-
″″
/ /
登录数据库服务器的用户名
connect using SQLCA A ;
-
令 等方法下面详细介绍其中两个比较优秀
BCP .
的方法 数据管道和链接服务器
:.
1
利用数据管道
PB
自身提供了一个非常强大的数据管道对
在编程时可以把它们写在一个文本文件中
,
然后用 函数调用 这样在发布应用
ProfileString ,
程序时可以省掉许多麻烦 尤其是在发布软件安
,( )
装时
.
12
1创建数据管道
象它是一种最便捷的完成数据复制
PipeLine,
的有效工具它是专门为数据传输而设计的 在使
. ,
用上非常灵活 除了可以复制常规数据外 还可以
,,
复制图像 、声音之类的大二进制对象 型数
(
BLOB
据数据管道有两种使用方式 一是在数据管道
)
. :
画板中定义数据管道后直接运行 这种方式方便
,
开发人员测试应用程序 二是在应用程序中通过
;
编写代码使用数据管道 这种方式提供了灵活的
,
运用数据管道的手段下面主要简单叙述一下第
.
在数据管道画板中分别针对全局事务变量
SQLCA A ,SQLCA B . PB
- -
建立一个数据管道的数 据
管道共五种复制方式 、、、
: Create Replace Refresh
AppendUpdate ,.
、可根据需要选择其中的一种
13
1编写程序代码
先要建立一个简单的程序界面程序中应包
.
收稿日期
: 2002 - 09 - 20
作者简介 徐全生
:
()
1944 - ,,,.
男 上海人 教授
第 期 徐全生等 在 中实现 间数据复制的多种方法
2 :PB SQL Server
119
含以 下 几 个 基 本 模 块 定 义 并 创 建 管 道 对 象
:
() ()
pipeline;Start
调用管道的函数 启动数据管道
(()
复制期间 可以调用 函数终止管道的运
,Cancel
行数据复制结束后删除管道对象需要强调的
) ,,
;.
是 函数最少要有 个参数 即源事务对象
,Start 3 ,
()
() ()
sourcetrans,destinationtrans,
目标事务对象 错
误显示窗口 另外管道还提供
() :
errordatawindow.
过程来配置关于第一种方法较简单 请读者自己
. ,
查阅相关书籍第二种方法要在本地创建一个链
.
接的服务器 然后建立客户机上的登录与链接服
,
务器上远程登录之间的映射 映射建立成功后 从
客户机端可以通过链接直接查看服务器上的数
据以下是用到的两个 提供的存储过
. SQL Server
程
1) sp addlinkedserver
-
了 个重要的属性变量 读出的行
3 : RowsRead
(
数写入的行数出
) () (
,RowsWritten, RowsIn Error
错的行数从这三个参数可以获得一些重要的信
)
.
息示例程序如下
. .
u pipe = create pipeline / /
-
创建对象
ret = u pipe. start sqlca a , sqlca b , w
- - - -
(
pipeline. dw 1/ /
-
)
启动数据管道
st read. text = st ring u pipe. RowsRead
- -
( )
/ /
读取管道执行后的信息
st written. text = st ring u pipe. RowsWrit
- -
(
2
ten
)
st error. text = st ring u pipe. RowsIn
- -
(
2
Error
)
destroy u pipe ; / /
-
关闭管道
return
该存储过程主要用于创建一个链接的服务
器创建链接的服务器之后 此服务器就可以执行
. ,
分布式查询它共有 个参数 但只有其中的 个
. 7 ,4
参数最为重要 分别是 ①要创建的链接
,: @server :
服务器的本地名称 即在客户机上对服务器的标
,
记 ②要添加为链接服务器的
; @srvproduct :OL E
数据源的产品名称 默认设置为 ③
,NULL ; @
DB
provider :OL E DB
与此数据源相对应的 提供程序
的唯一程序标识符 ④由
( )
PRO GID; @datasrc :
OL E DB ,
提供程序解释的数据源名称 一般是给
出客户机中 的安装路径
SQL Server .
2) sp addlinkedsrvlogin
-
该存储过程主要用于创建或更新本地 2
Mi
crosoft SQL Server
2
利用链接服务器
链接服务器是 提供的
Microsoft SQL Server
一种访问远程服务器的方式 具有对整个局域网
,
内的异类数据源 数据源执行分布式查
()
OL E DB
询 、更新 、命令和事务的能力链接服务器一般用
.
来处理分布式查询当客户端应用程序通过链接
.
服务器执行分布式查询时 将分析该
, SQL Server
命令 并向 发送“行动”请求
,OL E DB .
21
1配置链接服务器
实例上的登录与链接服务 器
上远程登录之间的映射它共有 个参数 ①
. 5 : @
rmtsrvname :,
是应用登录映射的链接服务器名称
TM
其值与上面的参数“ ”相同 ②
@server; @useself :
决定用于连接到远程服务器的登录名称 ③2
; @lo
callogin: .
本 地 服 务 器 上 的 登 录默 认 设 置 为
NULL. NULL
值指定此条目将应用于所有连接
到 的本地登录 ④用来连
rmtsrvname ; @rmtuser :
接 的用户名 例如系统管理员帐号
rmtsrvname ,
“”⑤与 相关的密码
sa; @rmtpassword : rmtuser ,
即远程登录所用的登录密码
.
关于它们在 中的具体使用方法 请参看
PB ,
以下的示例程序
:
/ /
创建链接的服务器
st ring ls server
-
ls server = EXEC sp addlinkedserver @
- -
″
server = SRP, @srvproduct = & @p rovider = ,
′′′′′
SQLOL EDB, @datasrc = c : mssql7
′′′″
execute immediate :ls server ;
-
/ / ,
创建映射 使用指定的用户和密码将所有
要想使用链接服务器进行 间的
SQL Server
数据复制 必须先建立起服务器和客户机之间的
,
链接链接在客户端进行 建立时必须指定
. ,OL E
DB OL E DB . OL E DB
提供程序和 数据源提供程
序是管理特定数据源和与特定数据源进行交互的
动态链接库 而 数据源则标识可通过
, OL E DB
OL E DB .
访问的特定数据库为了使数据源能够
通过链接服务器返回数据 数据源的 提
,OL E DB
供程序必须位于 所在的服务器上
SQL Server .
链接服务器的配置可以通过两种方法进行
.
一是通过 的企业管理器
SQL Server sql server
(
manager;SQL Server
)
来配置 二是通过 中的存储
本地登录连接到链接服务器
ls server = EXEC sp addlinkedsrvlogin
- -
″′
SRP, false, NULL , sa ,
′′′′′′′″
execute immediate :ls server ;
-
到此为止 本文所需要的链接服务器基本上配
,
120
沈 阳 工 业 大 学 学 报 第 卷
password
)
25
置完成 但还需要将客户端服务器的两个属性值
,
ANSINULLSNULL
-
(
当使用相等运算符时控制
处理和
)
ANSI
-
WARN IN GS
(
控制集合警告中的截
尾和 符设置成 如果忽略了这个地
NULL . ON ,
)
方 在编程想查询服务器上的数据时 就会出错另
,,.
外在编程过程中还发现 如果在初始化时对这两个
,
属性值不设定 在编写存储过程时 在开始处用
,,
SET ANSINULL ON
-
等来动态的设定参数值时
select stnumber , cn stname , password f rom
-
SRP. dbo. school. student
return
go
上述存储过程在 中的调用格式如下
PB :
DECLARE Cop y table PROCEDURE FOR
-
Copy student ;/ /
-
声明存储过程
EXECU TE Cop y table ; / /
-
执行存储过程
CLOSE Cop y table ;/ /
-
关闭存储过程
无效经过分析 主要是对于自定义的存储过程
. ,,
SQL Server ANSI
使用最初创建存储过程时的
-
NULLS ANSIWARN IN GS .
和 的设置值随后无
-
论何时执行该存储过程 此二值都被还原为其创建
,
时使用的值并生效解决的方法有两个
. :
一是在执行调用分布式查询时的存储过程
前 先将
,ANSI
- -
NULL S ANSI WARN IN GS
和
的值设置成 如果在存储过程内部设置则无
ON ,
效
.
另一种方法则是更改整个 的
Server ANSI
-
NULL S ANSI WARN IN GS ,
和 值 这个方法比
-
较彻底 从根本上解决了这个问题可以在企业管
,.
理中 设 置 也 可 以 在 程 序 中 编 程 设 置
, , ANSI
-
NULL S ANSI WARN IN GS
和 对应的值可以通
-
过在 的帮助中查找 它们对应的值分
SQL Server ,
别为 和 其它的参数也可以通过下面的方法
32 8 ,
进行 具体方法如下
,:
/ / server ansi nulls 32 + ANSI
设 置 的
- -
( )
WARN IN GS8
()
ls server = exec sp configure user options
- -
″′′
, 40
′′″
execute immediate :ls server ;
-
22
1编程进行数据复制
3
两种方法的比较
1PB ,
)
数据管道是 中提供的对象 使用起来
比较方便 在复制数据时 它可以把表的属性一起
,,
复制 相对而言 链接服务器在这一点上功能较
; ,
弱
.
2
)
数据管道可以在同一个数据库内的不同
表格间进行数据复制 而链接服务器则只能用于
;
不同的数据库之间
.
3
)
数据管道在每次启动时都要重新建立数
据库连接 而链接服务器则不必 它通常要求有随
;,
应用程序附带一个初始化程序 在安装完数据库
,
后 执行该初始化程序 将连接服务器设好 以后
,,,
则不用再设置
.
4,
)
就稳定性和速度而言 数据管道和链接服
务器在要复制的数据较少时 二者的稳定性相当
,,
速度也相差无几 但当数据较多时 二者的差距就
;,
变得很明显 数据管道的稳定性和速度均有所下
,
降实验表明 当要复制数据超过 万条以上时
. ,2 ,
数据管道的用时要比链接服务器延长 ~
30 %
40 . 20 ,2 ,
%
而且在 次实验中 数据管道死机 次 而
链接服务器全部正常复制究其原因 主要是由于
. ,
链接服务器可以使用存储过程 而存储过程中所
,
有的操作都是在后台完成 速度和稳定性自然较
,
高
.
当链接服务器建立起来以后 客户端就可以
,
通过变成来查询或复制服务器上的数据当对链
.
接服务器执行分布式查询时 其调用的格式由四
,
部分组成
:
服务器名数据库所有者数据库名表格名 为
. . .
了充分发挥链接服务器的特点 当进行数
,
据复制时最好通过编写自定义的存储过程来进
行 然后在 中调用该存储过程即可
,PowerBuilder .
下面举一个简单的例子实现将服务器上的 2
stu
dent server student
- -
表格拷贝到客户端的表格
client :
中
CREA TE PROCEDURE copy student AS
-
t runcate table student client/ /
-
清空客户端的
参考文献
:
[ 1 ] ,,,. SQL Server 2000
熊桂喜 鲁久华 孙军 等高级编程 技
术北京 清华大学出版社
[ M ] . :,2002.
(
Xiong G X , Lu J H , Sun J , et al . SQL Server 2000
Advanced Programming Technology[ M ] . Beijing : Ts
2
inghua University Press ,2002.
)
[ 2 ] ,,. PowerBuilder 8. 0
王雪聪 麻书城 聂胜才彻底研究
[ M ] . : ,2001.
北京 中国铁道出版社
(
Wang X C , Ma S C , Nie S C. PowerBuilder 8. 0
completely research [ M ] . Beijing : China Railway
Press ,2001.
)
表格
insert student client stnumber , cn stname ,
- -
(
()
下转第 页
128
128
沈 阳 工 业 大 学 学 报 第 卷
25
Detection of sealevel based on wavelet multiscale analysis
22
PEI Lili , SHI Zelin , L UO Haibo
222
(
Shenyang Institute of Automation ,Chinese Academy of Sciences Graduate School of Chinese Academy of Sciences , Shenyang
110015 , China
)
Abstract : In this paper , is an effective approach of detecting sealevel proposed. In the approach , based on
2
multiscale analysis of wavelets , the features of the images and the rule of variation of the modul maximum
2
in different scales are analysed. Then the various information of each scale to achieve the detection is inte
2
grated. Simulation experiments are given to verify the validity of the approach.
Key words : wavelet transform; multiscale analysis; edge detection
2
()
上接第 页
120
Multimethods of copying data bet ween SQL servers in PB
2
XU Quansheng , REN Libin
22
( )
School of Information Science and Engineering ,Shenyang University of Technology , Shenyang 110023 , China
Abstract : This paper mainly researches how to t ransfer data between tow or more SQL Server DBMS and
list several methods. More attention is paid to introduce two methods : Data Pipeline and Linked Server ;
mainly introducing some distinct question , giving the resolving method ; This paper also analyse the differ
2
ence between the two methods.
Key words : data pipeline ;l inked server ; DBMS; OL E DB;


发布评论