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;