深入SqlServer2008 数据库同步的两种方式(Sql JOB)的分析介绍

下面介绍的就是数据库同步的两种方式:

  1、SQL JOB的方式 

  sql Job的方式同步数据库就是通过SQL语句,将一个数据源中的数据同步到目标数据库中。特点是它可以灵活的通过SQL的方式进行数据库之间的同步操作。可以在制定的时间时间作为任务计划自动执行。缺点是需要写SQL来进行操作。既然是数据库之间的同步就涉及到数据库之间的连接。建立连接是同步的第一步。SQL Server建立连接可以通过系统存储过程建立【是否还有其他方式,我还不清楚】。存储过程有以下几个:sp_droplinkedsrvlogin、sp_dropserver、sp_addlinkedserver、sp_addlinkedsrvlogin。前面两个是删除数据库之间连接的,后两个是建立数据库之间连接的。

删除连接存储过程参数用法如下:

a)sp_droplinkedsrvlogin

语法

sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname'
    [ , [ @useself = ] 'useself' ]
    
[ , [ @locallogin = ] 'locallogin' ]
    [ , [ @rmtuser = ] 'rmtuser' ]
    
[ , [ @rmtpassword = ] 'rmtpassword' ]

参数

[@rmtsrvname =] 'rmtsrvname'

是应用登录映射的链接服务器名称。rmtsrvname 的数据类型为 sysname,没有默认设置。

[@useself =] 'useself'

决定用于连接到远程服务器的登录名称。useself 的数据类型为 varchar(8),默认设置为 TRUE。true 值指定 SQL Server 验证的登录使用其自己的凭据以连接到 rmtsrvname,而忽略 rmtuserrmtpassword 参数。false 值指定 rmtuserrmtpassword 参数用来连接到特定 localloginrmtsrvname。如果 rmtuserrmtpassword 也设置为 NULL,则连接链接服务器不需使用任何登录或密码。对于 Windows NT 身份验证登录而言,useself true 则无效,除非 Microsoft Windows NT® 环境支持安全帐户委托,并且,提供程序支持 Windows 身份验证(此时不再需要创建值为 true 的映射,不过创建仍然有效)。

[ @locallogin =] 'locallogin'

本地服务器上的登录。locallogin 的数据类型为 sysname,默认设置为 NULL。NULL 值指定此条目将应用于所有连接到 rmtsrvname 的本地登录。如果值不为 NULL,则 locallogin 可以是一个 SQL Server 登录或 Windows NT 用户。必须授予 Windows NT 用户直接访问 SQL Server 或通过其作为已授予访问权限的组的成员来访问 SQL Server 的权限。

[@rmtuser =] 'rmtuser'

useselffalse 时,用来连接 rmtsrvname 的用户名,rmtuser 的数据类型为 sysname,默认设置为 NULL。

[@rmtpassword =] 'rmtpassword'

rmtuser 相关的密码。rmtpassword 的数据类型为 sysname,默认设置为 NULL。

返回代码值

0(成功)或 1(失败)

注释:

当用户登录到本地服务器并执行分布式查询,以访问链接服务器上的表时,本地服务器必须登录链接服务器上,代表该用户访问该表。使用 sp_addlinkedsrvlogin 来指定本地服务器登录链接服务器的登录凭据。

本地服务器上所有登录和链接服务器上的远程登录之间的默认映射通过执行 sp_addlinkedserver 自动创建。默认映射说明连接到链接服务器代表的登录时,SQL Server 使用本地登录的用户凭据(等同于将链接服务器的 @useself 设置为 true 时执行 sp_addlinkedsrvlogin)。使用 sp_addlinkedsrvlogin 只可以更改特定的本地服务器的默认映射或添加新映射。若要删除默认映射或任何其它映射,请使用 sp_droplinkedsrvlogin

当所有下列条件存在时,SQL Server 可以自动地使用正在发出查询的用户的 Windows NT 安全凭据(Windows NT 用户名称和密码),以连接到链接服务器,而不是必须使用 sp_addlinkedsrvlogin 创建一个预设的登录映射。

用法示例:

EXEC sp_droplinkedsrvlogin 'DBLink',Null

b)sp_dropserver

从本地 Microsoft® SQL Server™ 上的已知远程和链接服务器列表中删除服务器。

语法

sp_dropserver [ @server = ] 'server'
    [ , [ @droplogins = ] { 'droplogins' | NULL} ]

参数

[@server =] 'server'

将被删除的服务器。server 的数据类型为 sysname,没有默认值。server 必须已经存在。

[@droplogins =] 'droplogins' | NULL

指明如果指定了 droplogins,那么对于 server,那些相关的远程及链接服务器登录也将被删除。@droplogins 的数据类型为 char(10),带有默认值 NULL。

返回代码值

0(成功)或 1(失败)

注释

如果某个服务器有相关的远程及链接服务器登录条目,当在该服务器上运行 sp_dropserver 时,会导致一条错误信息,该消息说明:在删除远程或链接服务器之前,必须先删除相关的登录。当删除服务器时,为了删除服务器的所有远程及链接服务器登录,请使用 droplogins 参数。

不能在用户定义的事务内执行 sp_dropserver

权限

只有 sysadminsetupadmin 固定服务器角色的成员才可以执行 sp_dropserver

用法示例:

EXEC sp_dropserver 'DBLink'

建立连接存储过程参数用法如下:

a)sp_addlinkedserver

创建一个链接的服务器,使其允许对分布式的、针对 OLE DB 数据源的异类查询进行访问。在使用 sp_addlinkedserver 创建链接的服务器之后,此服务器就可以执行分布式查询。如果链接服务器定义为 Microsoft® SQL Server™,则可执行远程存储过程。

语法

sp_addlinkedserver [ @server = ] 'server'
    
[ , [ @srvproduct = ] 'product_name' ]
    [ , [ @provider = ] 'provider_name' ]
    [ , [ @datasrc = ] 'data_source' ]
    [ , [ @location = ] 'location' ]
    [ , [ @provstr = ] 'provider_string' ]
    [ , [ @catalog = ] 'catalog' ]

参数

[ @server = ] 'server'

要创建的链接服务器的本地名称,server 的数据类型为 sysname,没有默认设置。

如果有多个 SQL Server 实例,server 可以为 servername\instancename。此链接的服务器可能会被引用为下面示例的数据源:

SELECT *FROM [servername\instancename.]pubs.dbo.authors. 

如果未指定 data_source,则服务器为该实例的实际名称。

[ @srvproduct = ] 'product_name'

要添加为链接服务器的 OLE DB 数据源的产品名称。product_name 的数据类型为 nvarchar(128),默认设置为 NULL。如果是 SQL Server,则不需要指定 provider_namedata_sourcelocationprovider_string 以及目录。

[ @provider = ] 'provider_name'

与此数据源相对应的 OLE DB 提供程序的唯一程序标识符 (PROGID)。provider_name 对于安装在当前计算机上指定的 OLE DB 提供程序必须是唯一的。provider_name 的数据类型为nvarchar(128),默认设置为 NULL。OLE DB 提供程序应该用给定的 PROGID 在注册表中注册。

[ @datasrc = ] 'data_source'

由 OLE DB 提供程序解释的数据源名称。data_source 的数据类型为 nvarchar(4000),默认设置为 NULL。data_source 被当作 DBPROP_INIT_DATASOURCE 属性传递以便初始化 OLE DB 提供程序。

当链接的服务器针对于 SQL Server OLE DB 提供程序创建时,可以按照 servername\instancename 的形式指定 data_source,它可以用来连接到运行于特定计算机上的 SQL Server 的特定实例上。servername 是运行 SQL Server 的计算机名称,instancename 是用户将被连接到的特定 SQL Server 实例的名称。

[ @location = ] 'location'

OLE DB 提供程序所解释的数据库的位置。location 的数据类型为 nvarchar(4000),默认设置为 NULL。location 作为 DBPROP_INIT_LOCATION 属性传递以便初始化 OLE DB 提供程序。

[ @provstr = ] 'provider_string'

OLE DB 提供程序特定的连接字符串,它可标识唯一的数据源。provider_string 的数据类型为 nvarchar(4000),默认设置为 NULL。Provstr 作为 DBPROP_INIT_PROVIDERSTRING 属性传递以便初始化 OLE DB 提供程序。

当针对 Server OLE DB 提供程序提供了链接服务器后,可将 SERVER 关键字用作 SERVER=servername\instancename 来指定实例,以指定特定的 SQL Server 实例。servername 是 SQL Server 在其上运行的计算机名称,instancename 是用户连接到的特定的 SQL Server 实例名称。

[ @catalog = ] 'catalog'

建立 OLE DB 提供程序的连接时所使用的目录。catalog 的数据类型为sysname,默认设置为 NULL。catalog 作为 DBPROP_INIT_CATALOG 属性传递以便初始化 OLE DB 提供程序。

返回代码值

0(成功)或 1(失败)

结果集

如果没有指定参数,则 sp_addlinkedserver 返回此消息:

Procedure 'sp_addlinkedserver' expects parameter '@server', which was not supplied.

使用适当 OLE DB 提供程序和参数的 sp_addlinkedserver 返回此消息:

Server added.用法示例:EXEC sp_addlinkedserver 'DBLink', ' ', 'SQLOLEDB', "10.0.222.12"

b)sp_addlinkedsrvlogin

创建或更新本地 Microsoft® SQL Server™ 实例上的登录与链接服务器上远程登录之间的映射。

语法

sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname'    [ , [ @useself = ] 'useself' ]    [ , [ @locallogin = ] 'locallogin' ]    [ , [ @rmtuser = ] 'rmtuser' ]    [ , [ @rmtpassword = ] 'rmtpassword' ]

参数

[@rmtsrvname =] 'rmtsrvname'

是应用登录映射的链接服务器名称。rmtsrvname 的数据类型为 sysname,没有默认设置。

[@useself =] 'useself'

决定用于连接到远程服务器的登录名称。useself 的数据类型为 varchar(8),默认设置为 TRUE。true 值指定 SQL Server 验证的登录使用其自己的凭据以连接到

rmtsrvname,而忽略 rmtuserrmtpassword 参数。false 值指定 rmtuserrmtpassword 参数用来连接到特定 localloginrmtsrvname。

如果 rmtuserrmtpassword 也设置为 NULL,则连接链接服务器不需使用任何登录或密码。对于 Windows NT 身份验证登录而言,useself true 则无效,

除非 Microsoft Windows NT® 环境支持安全帐户委托,并且,提供程序支持 Windows 身份验证(此时不再需要创建值为 true 的映射,不过创建仍然有效)。

[ @locallogin =] 'locallogin'

本地服务器上的登录。locallogin 的数据类型为 sysname,默认设置为 NULL。NULL 值指定此条目将应用于所有连接到 rmtsrvname 的本地登录。如果值不为 NULL,

则 locallogin 可以是一个 SQL Server 登录或 Windows NT 用户。必须授予 Windows NT 用户直接访问 SQL Server 或通过其作为已授予访问权限的组的成员来访问

SQL Server 的权限。

[@rmtuser =] 'rmtuser'useselffalse 时,用来连接 rmtsrvname 的用户名,rmtuser 的数据类型为 sysname,默认设置为 NULL。

[@rmtpassword =] 'rmtpassword'rmtuser 相关的密码。rmtpassword 的数据类型为 sysname,默认设置为 NULL。

返回代码值

0(成功)或 1(失败)

注释

当用户登录到本地服务器并执行分布式查询,以访问链接服务器上的表时,本地服务器必须登录链接服务器上,代表该用户访问该表。使用 sp_addlinkedsrvlogin 来指定本地服

务器登录链接服务器的登录凭据。

本地服务器上所有登录和链接服务器上的远程登录之间的默认映射通过执行 sp_addlinkedserver 自动创建。默认映射说明连接到链接服务器代表的登录时,SQL Server

使用本地登录的用户凭据(等同于将链接服务器的 @useself 设置为 true 时执行 sp_addlinkedsrvlogin)。使用 sp_addlinkedsrvlogin 只可以更改特定的本地服务器

的默认映射或添加新映射。若要删除默认映射或任何其它映射,请使用 sp_droplinkedsrvlogin。

当所有下列条件存在时,SQL Server 可以自动地使用正在发出查询的用户的 Windows NT 安全凭据(Windows NT 用户名称和密码),以连接到链接服务器,而不是必须使用

sp_addlinkedsrvlogin 创建一个预设的登录映射。
    使用 Windows 身份验证模式,用户连接到 SQL Server。 在客户端和发送服务器上安全帐户委托是可用的。 提供程序支持 Windows 身份验证模式(例如,运行于 Windows NT 上的 SQL Server)。
使用映射(此映射通过在本地 SQL Server 上执行 sp_addlinkedsrvlogin 定义)的链接服务器执行身份验证后,远程数据库中单独对象的权限由链接服务器决定, 而不是由本地服务器决定。 不能从用户定义的事务中执行 sp_addlinkedsrvlogin。 权限 只有 sysadminsecurityadmin 固定服务器角色的成员才可以执行 sp_addlinkedsrvlogin。 用法示例EXEC sp_addlinkedsrvlogin 'DBLink', 'false',null, 'ILM', '111111 介绍完建立连接的方式,下面正式介绍SQL JOB的开发。直接用步骤介绍了。a)新建作业。如下图: a、  新建作业。如下图: b、  点击【新建作业】对话框的【常规】选项卡,填写 SQL JOB的名称。如下图

c、  点击【新建作业】对话框的【步骤】选项卡,填写 步骤名称。

d、  进行作业的第一个步骤------建立数据库连接操作。如下图:


e、  进行作业的第下一个步骤。如下图:

e、设置作业执行计划

f、点击确定,完成SQL JOB的开发。

g、完成后作业下面就多了刚开发的作业。如下:

h、作业制作完成后,可以立即让它执行。如果不让它执行,它也会在按照制定频率执行。测试作业:

(0)

相关推荐

  • Win2003+apache+PHP+SqlServer2008 配置生产环境

    安装前的准备: 1.Apache2.2.2 2.PHP5.2.17 3.SqlServer2008 4.sqlncli.msi(SqlServer客户端,可以到微软官方网站去下载) 5.ntwdblib.dll (2000.80.194.0) 6.SQLSRV20.exe,即MicrosoftDriver 2.0 for PHP for SQL Server(sql server 2005 及2008使用SQLSRV20.exe, SQL Server 2010使用SQLSRV30.exe)(需

  • ASP.NET下向SQLServer2008导入文件实例操作方法

    ASP.NET向SQL Server导入文件主要用到FileUpload控件的FileBytes属性.该属性从FileUpload控件所指定的文件返回一个字节数组 . 1.数据库准备 为了方便大家能够理解,这里我们只设计两个字段,一个是文件类型字段,字段名为FileType,另一个是存放文件内容字段,字段名为FileContent.创建数据库 ,数据库名为VarFile,语句如下: CREATE DATABASE VARFILE GO 创建表,表名为FileInOut,语句如下: USE VAR

  • SQLserver2008使用表达式递归查询

    复制代码 代码如下: --由父项递归下级 with cte(id,parentid,text) as (--父项 select id,parentid,text from treeview where parentid = 450 union all --递归结果集中的下级 select t.id,t.parentid,t.text from treeview as t inner join cte as c on t.parentid = c.id ) select id,parentid,t

  • sqlserver2008查看表记录或者修改存储过程出现目录名无效错误解决方法

    点工具栏中[显示估计的查询计划],结果提示Documents and Settings\XXX\Local Settings\Temp\1\xxx.tmp文件不能访问.查看发现没有1这个子目录--这是给1号远程连接会话用的临时目录,手工创建子目录1,即可正常查询

  • sqlserver2008 拆分字符串

    --说明:例如,将下列数据 id id_value ----------------- 1 'aa,bb' 2 'aa,bb,cc' 3 'aaa,bbb,ccc' --转换成以下的格式 id id_value ----------------- 1 'aa' 1 'bb' 2 'aa' 2 'bb' 2 'cc' 3 'aaa' 3 'bbb' 3 'ccc' --代码-------------------------------------------GO 复制代码 代码如下: create

  • 还原sqlserver2008 媒体的簇的结构不正确的解决方法

    今天在本地数据库上还原一个数据库(WINDOWS方式进入,当时不知道关闭了SQLSERVER身份验证),无论怎么还原,都会出现错误:媒体的簇的结构不正确 方法,在百度上搜索不到解决方法. 最后我启用了windows和server综合验证,并且启用了SA,重新启动SQLSERVER2008,用SQLSERVER身份验证登录,然后还原数据库,结果是成功还原.

  • SQLServer2005与SQLServer2008数据库同步图文教程

    1,复制简介 简单的说,复制是获取一个或多个数据库的过程,它系统的针对出入不同数据库的数据,提供基于规则的拷贝机制. 复制分为三种角色, 1,发布服务器 发布服务器可以被看成是源数据库. 2 ,分发服务器 分发数据库针对更改而承担类似某些票据交换所的工作,他是一个特殊的分发数据库,用于对更改进行跟踪,同时也跟踪哪些订阅服务器已经收到了这些更改.除此之外,它还跟踪任何同步过程的结果,并知道发生了哪些必须解决的冲突. 3,订阅服务器 任何参与到于复制发布过程的数据库,订阅服务器并不只能接受数据,它还

  • sqlserver2008安装报语言不符的解决方法

    安装SqlServer2008R2遇到系统提示: 复制代码 代码如下: SQL Server setup media does not support the language of the OS or does not have ENU localized files.Use the matching language-specific SQL Server media or change the OS locale through Control Panle. 英文翻译过来,大概意思是本安装

  • SQL Server 2008 R2——查找最小nIndex,nIndex存在而nIndex+1不存在 求最小连续数组中的最大值

    其实大家稍微动下大脑,问题可以转化为,是求最小连续数组中的最大值,数组大小可以为1. ======================================================================= 做戏做全套,送佛送到西. 为了便于学习研究,必然是要写全套示例代码的. ------------------------------------------------------------------------------------- --by wls --非专

  • Win2008中SqlServer2008 无法打开错误日志文件导致无法启动的解决方法

    今天早上一个客户的SqlServer 2008的服务器应为重新修改配置导致网站打不开,链接到远程服务器之后,在服务器的事件查看器,发现如下错误, 错误描述: 日志名称: Application 来源: MSSQLSERVER 日期: 2011/10/25 11:30:49 事件 ID: 17058 任务类别: 服务器 级别: 错误 关键字: 经典 用户: 暂缺 计算机: WIN-VPS-SERVER 描述: initerrlog: 无法打开错误日志文件 'D:\WWW\Services\SQLD

  • sqlserver2008锁表语句详解(锁定数据库一个表)

    锁定数据库的一个表 复制代码 代码如下: SELECT * FROM table WITH (HOLDLOCK) 注意: 锁定数据库的一个表的区别 复制代码 代码如下: SELECT * FROM table WITH (HOLDLOCK) 其他事务可以读取表,但不能更新删除 复制代码 代码如下: SELECT * FROM table WITH (TABLOCKX) 其他事务不能读取表,更新和删除 SELECT 语句中"加锁选项"的功能说明 SQL Server提供了强大而完备的锁机

随机推荐