源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-03-17 05:03 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:深入SqlServer2008 数据库同步的两种方式(Sql JOB)的分析介绍
下面介绍的就是数据库同步的两种方式:   [i][b]1、SQL JOB的方式 [/b][/i]   sql Job的方式同步数据库就是通过SQL语句,将一个数据源中的数据同步到目标数据库中。特点是它可以灵活的通过SQL的方式进行数据库之间的同步操作。可以在制定的时间时间作为任务计划自动执行。缺点是需要写SQL来进行操作。既然是数据库之间的同步就涉及到数据库之间的连接。建立连接是同步的第一步。SQL Server建立连接可以通过系统存储过程建立【是否还有其他方式,我还不清楚】。存储过程有以下几个:sp_droplinkedsrvlogin、sp_dropserver、sp_addlinkedserver、sp_addlinkedsrvlogin。前面两个是删除数据库之间连接的,后两个是建立数据库之间连接的。     删除连接存储过程参数用法如下: a)sp_droplinkedsrvlogin 语法 [code][b]sp_addlinkedsrvlogin[/b] [ [b]@rmtsrvname = [/b]] [b]'[/b][i]rmtsrvname[/i][b]'[/b][/code]     [code][ [b], [/b][ [b]@useself = [/b]] [b]'[/b][i]useself[/i][b]' [/b]][/code][b]     [/b][code][ , [ [b]@locallogin[/b] [b]= [/b]] [b]'[/b][i]locallogin[/i][b]' [/b]][/code]     [code][ [b], [/b][ [b]@rmtuser = [/b]] [b]'[/b][i]rmtuser[/i][b]' [/b]][/code][b]     [/b][code][ [b], [/b][ [b]@rmtpassword = [/b]] [b]'[/b][i]rmtpassword[/i][b]' [/b]][/code] 参数 [[b]@rmtsrvname[/b] [b]=[/b]] [b]'[/b][i]rmtsrvname[/i][b]'[/b] 是应用登录映射的链接服务器名称。[i]rmtsrvname[/i] 的数据类型为 [b]sysname[/b],没有默认设置。 [[b]@useself =[/b]] [b]'[/b][i]useself[/i][b]'[/b] 决定用于连接到远程服务器的登录名称。[i]useself [/i]的数据类型为 [b]varchar(8)[/b],默认设置为 TRUE。[b]true[/b] 值指定 SQL Server 验证的登录使用其自己的凭据以连接到 [i]rmtsrvname[/i],而忽略 [i]rmtuser[/i] 和 [i]rmtpassword[/i] 参数。[b]false[/b] 值指定 [i]rmtuser[/i] 和 [i]rmtpassword[/i] 参数用来连接到特定 [i]locallogin[/i] 的 [i]rmtsrvname[/i]。如果 [i]rmtuser[/i] 和 [i]rmtpassword[/i] 也设置为 NULL,则连接链接服务器不需使用任何登录或密码。对于 Windows NT 身份验证登录而言,[i]useself [/i]为 [b]true[/b] 则无效,除非 Microsoft Windows NT® 环境支持安全帐户委托,并且,提供程序支持 Windows 身份验证(此时不再需要创建值为 [b]true[/b] 的映射,不过创建仍然有效)。 [ [b]@locallogin[/b] [b]=[/b]] [b]'[/b][i]locallogin[/i][b]'[/b] 本地服务器上的登录。[i]locallogin [/i]的数据类型为 [b]sysname[/b],默认设置为 NULL。NULL 值指定此条目将应用于所有连接到 [i]rmtsrvname [/i]的本地登录。如果值不为 NULL,则 [i]locallogin[/i] 可以是一个 SQL Server 登录或 Windows NT 用户。必须授予 Windows NT 用户直接访问 SQL Server 或通过其作为已授予访问权限的组的成员来访问 SQL Server 的权限。 [[b]@rmtuser =[/b]] [b]'[/b][i]rmtuser[/i][b]'[/b] 当 [i]useself[/i] 为 [b]false [/b]时,用来连接 [i]rmtsrvname [/i]的用户名,[i]rmtuser[/i] 的数据类型为 [b]sysname[/b],默认设置为 NULL。 [[b]@rmtpassword =[/b]] [b]'[/b][i]rmtpassword[/i][b]'[/b] 与 [i]rmtuser[/i] 相关的密码。[i]rmtpassword[/i] 的数据类型为 [b]sysname[/b],默认设置为 NULL。 返回代码值 0(成功)或 1(失败) 注释: 当用户登录到本地服务器并执行分布式查询,以访问链接服务器上的表时,本地服务器必须登录链接服务器上,代表该用户访问该表。使用 [b]sp_addlinkedsrvlogin[/b] 来指定本地服务器登录链接服务器的登录凭据。 本地服务器上所有登录和链接服务器上的远程登录之间的默认映射通过执行 [b]sp_addlinkedserver[/b] 自动创建。默认映射说明连接到链接服务器代表的登录时,SQL Server 使用本地登录的用户凭据(等同于将链接服务器的 [b]@useself[/b] 设置为 [b]true[/b] 时执行 [b]sp_addlinkedsrvlogin[/b])。使用 [b]sp_addlinkedsrvlogin [/b]只可以更改特定的本地服务器的默认映射或添加新映射。若要删除默认映射或任何其它映射,请使用 [b]sp_droplinkedsrvlogin[/b]。 当所有下列条件存在时,SQL Server 可以自动地使用正在发出查询的用户的 Windows NT 安全凭据(Windows NT 用户名称和密码),以连接到链接服务器,而不是必须使用 [b]sp_addlinkedsrvlogin [/b]创建一个预设的登录映射。   用法示例: EXEC sp_droplinkedsrvlogin 'DBLink',Null b)sp_dropserver 从本地 Microsoft® SQL Server™ 上的已知远程和链接服务器列表中删除服务器。 语法 [b]sp_dropserver[/b] [ [b]@server[/b] [b]= [/b]] [b]'[/b][i]server[/i][b]'[/b]     [ [b],[/b] [ [b]@droplogins[/b] [b]= [/b]] { [b]'droplogins'[/b] | NULL} ] 参数 [[b]@server[/b] [b]=[/b]] [b]'[/b][i]server[/i][b]'[/b] 将被删除的服务器。[i]server[/i] 的数据类型为 [b]sysname[/b],没有默认值。[i]server[/i] 必须已经存在。 [[b]@droplogins[/b] [b]=[/b]] [b]'droplogins'[/b] | NULL 指明如果指定了 [b]droplogins[/b],那么对于 [i]server[/i],那些相关的远程及链接服务器登录也将被删除。[b]@droplogins [/b]的数据类型为 [b]char(10)[/b],带有默认值 NULL。 返回代码值 0(成功)或 1(失败) 注释 如果某个服务器有相关的远程及链接服务器登录条目,当在该服务器上运行 [b]sp_dropserver[/b] 时,会导致一条错误信息,该消息说明:在删除远程或链接服务器之前,必须先删除相关的登录。当删除服务器时,为了删除服务器的所有远程及链接服务器登录,请使用 [b]droplogins[/b] 参数。 不能在用户定义的事务内执行 [b]sp_dropserver[/b]。 权限 只有 [b]sysadmin[/b] 或 [b]setupadmin[/b] 固定服务器角色的成员才可以执行 [b]sp_dropserver[/b]。 用法示例: EXEC sp_dropserver 'DBLink'     建立连接存储过程参数用法如下: a)sp_addlinkedserver 创建一个链接的服务器,使其允许对分布式的、针对 OLE DB 数据源的异类查询进行访问。在使用 [b]sp_addlinkedserver [/b]创建链接的服务器之后,此服务器就可以执行分布式查询。如果链接服务器定义为 Microsoft® SQL Server™,则可执行远程存储过程。 语法 [code][b]sp_addlinkedserver [/b][ [b]@server[/b] [b]= [/b]] [b]'[/b][i]server[/i][b]'[/b][/code][b]     [/b][code][ [b], [/b][ [b]@srvproduct[/b] [b]= [/b]] [b]'[/b][i]product_name[/i][b]' [/b]][/code]     [code][ [b], [/b][ [b]@provider[/b] [b]= [/b]] [b]'[/b][i]provider_name[/i][b]' [/b]][/code]     [code][ [b], [/b][ [b]@datasrc[/b] [b]= [/b]] [b]'[/b][i]data_source[/i][b]' [/b]][/code]     [code][ [b], [/b][ [b]@location[/b] [b]= [/b]] [b]'[/b][i]location[/i][b]' [/b]][/code]     [code][ [b], [/b][ [b]@provstr[/b] [b]= [/b]] [b]'[/b][i]provider_string[/i][b]' [/b]][/code]     [code][ [b], [/b][ [b]@catalog[/b] [b]= [/b]] [b]'[/b][i]catalog[/i][b]' [/b]][/code] 参数 [ [b]@server = [/b]] [b]'[/b][i]server[/i][b]'[/b] 要创建的链接服务器的本地名称,[i]server [/i]的数据类型为 [b]sysname[/b],没有默认设置。 如果有多个 SQL Server 实例,[i]server[/i] 可以为 [i]servername\instancename[/i]。此链接的服务器可能会被引用为下面示例的数据源:
[code]SELECT *FROM [servername\instancename.]pubs.dbo.authors. [/code]
如果未指定 [i]data_source[/i],则服务器为该实例的实际名称。 [ [b]@srvproduct = [/b]] [b]'[/b][i]product_name[/i][b]'[/b] 要添加为链接服务器的 OLE DB 数据源的产品名称。[i]product_name [/i]的数据类型为 [b]nvarchar(128)[/b],默认设置为 NULL。如果是 [b]SQL Server[/b],则不需要指定 [i]provider_name[/i]、[i]data_source[/i]、[i]location[/i]、[i]provider_string[/i] 以及目录。 [ [b]@provider = [/b]] [b]'[/b][i]provider_name[/i][b]'[/b] 与此数据源相对应的 OLE DB 提供程序的唯一程序标识符 (PROGID)。[i]provider_name [/i]对于安装在当前计算机上指定的 OLE DB 提供程序必须是唯一的。[i]provider_name [/i]的数据类型为[b]nvarchar(128)[/b],默认设置为 NULL。OLE DB 提供程序应该用给定的 PROGID 在注册表中注册。 [ [b]@datasrc = [/b]] [b]'[/b][i]data_source[/i][b]'[/b] 由 OLE DB 提供程序解释的数据源名称。[i]data_source [/i]的数据类型为 [b]nvarchar(4000)[/b],默认设置为 NULL。[i]data_source [/i]被当作 DBPROP_INIT_DATASOURCE 属性传递以便初始化 OLE DB 提供程序。 当链接的服务器针对于 SQL Server OLE DB 提供程序创建时,可以按照 [i]servername[/i]\[i]instancename[/i] 的形式指定 [i]data_source,[/i]它可以用来连接到运行于特定计算机上的 SQL Server 的特定实例上。[i]servername[/i] 是运行 SQL Server 的计算机名称,[i]instancename[/i] 是用户将被连接到的特定 SQL Server 实例的名称。 [ [b]@location = [/b]] [b]'[/b][i]location[/i][b]'[/b] OLE DB 提供程序所解释的数据库的位置。[i]location [/i]的数据类型为 [b]nvarchar(4000)[/b],默认设置为 NULL。[i]location [/i]作为 DBPROP_INIT_LOCATION 属性传递以便初始化 OLE DB 提供程序。 [ [b]@provstr = [/b]] [b]'[/b][i]provider_string[/i][b]'[/b] OLE DB 提供程序特定的连接字符串,它可标识唯一的数据源。[i]provider_string [/i]的数据类型为 [b]nvarchar(4000)[/b],默认设置为 NULL。[i]Provstr [/i]作为 DBPROP_INIT_PROVIDERSTRING 属性传递以便初始化 OLE DB 提供程序。 当针对 Server OLE DB 提供程序提供了链接服务器后,可将 SERVER 关键字用作 SERVER=[i]servername[/i]\[i]instancename[/i] 来指定实例,以指定特定的 SQL Server 实例。[i]servername[/i] 是 SQL Server 在其上运行的计算机名称,[i]instancename[/i] 是用户连接到的特定的 SQL Server 实例名称。 [ [b]@catalog = [/b]] [b]'[/b][i]catalog[/i][b]'[/b] 建立 OLE DB 提供程序的连接时所使用的目录。[i]catalog[/i] 的数据类型为[b]sysname[/b],默认设置为 NULL。[i]catalog [/i]作为 DBPROP_INIT_CATALOG 属性传递以便初始化 OLE DB 提供程序。 返回代码值 0(成功)或 1(失败) 结果集 如果没有指定参数,则 [b]sp_addlinkedserver[/b] 返回此消息:
[code]Procedure 'sp_addlinkedserver' expects parameter '@server', which was not supplied.[/code]
使用适当 OLE DB 提供程序和参数的 [b]sp_addlinkedserver[/b] 返回此消息:
[code]Server added.
用法示例:
[/code]EXEC sp_addlinkedserver 'DBLink', ' ', 'SQLOLEDB', "10.0.222.12"

b)sp_addlinkedsrvlogin创建或更新本地 Microsoft® SQL Server™ 实例上的登录与链接服务器上远程登录之间的映射。
语法[code][b]sp_addlinkedsrvlogin[/b] [ [b]@rmtsrvname = [/b]] [b]'[/b][i]rmtsrvname[/i][b]'[/b][/code]
    [code][ [b], [/b][ [b]@useself = [/b]] [b]'[/b][i]useself[/i][b]' [/b]][/code][b]
    [/b][code][ , [ [b]@locallogin[/b] [b]= [/b]] [b]'[/b][i]locallogin[/i][b]' [/b]][/code]
    [code][ [b], [/b][ [b]@rmtuser = [/b]] [b]'[/b][i]rmtuser[/i][b]' [/b]][/code][b]
    [/b][code][ [b], [/b][ [b]@rmtpassword = [/b]] [b]'[/b][i]rmtpassword[/i][b]' [/b]][/code]
参数[[b]@rmtsrvname[/b] [b]=[/b]] [b]'[/b][i]rmtsrvname[/i][b]'[/b]
是应用登录映射的链接服务器名称。[i]rmtsrvname[/i] 的数据类型为 [b]sysname[/b],没有默认设置。
[[b]@useself =[/b]] [b]'[/b][i]useself[/i][b]'[/b]
决定用于连接到远程服务器的登录名称。[i]useself [/i]的数据类型为 [b]varchar(8)[/b],默认设置为 TRUE。[b]true[/b] 值指定 SQL Server 验证的登录使用其自己的凭据以连接到


 [i]rmtsrvname[/i],而忽略 [i]rmtuser[/i] 和 [i]rmtpassword[/i] 参数。[b]false[/b] 值指定 [i]rmtuser[/i] 和 [i]rmtpassword[/i] 参数用来连接到特定 [i]locallogin[/i] 的 [i]rmtsrvname[/i]。


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


除非 Microsoft Windows NT® 环境支持安全帐户委托,并且,提供程序支持 Windows 身份验证(此时不再需要创建值为 [b]true[/b] 的映射,不过创建仍然有效)。
[ [b]@locallogin[/b] [b]=[/b]] [b]'[/b][i]locallogin[/i][b]'[/b]
本地服务器上的登录。[i]locallogin [/i]的数据类型为 [b]sysname[/b],默认设置为 NULL。NULL 值指定此条目将应用于所有连接到 [i]rmtsrvname [/i]的本地登录。如果值不为 NULL,


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



SQL Server 的权限。


[[b]@rmtuser =[/b]] [b]'[/b][i]rmtuser[/i][b]'[/b]


当 [i]useself[/i] 为 [b]false [/b]时,用来连接 [i]rmtsrvname [/i]的用户名,[i]rmtuser[/i] 的数据类型为 [b]sysname[/b],默认设置为 NULL。


[[b]@rmtpassword =[/b]] [b]'[/b][i]rmtpassword[/i][b]'[/b]


与 [i]rmtuser[/i] 相关的密码。[i]rmtpassword[/i] 的数据类型为 [b]sysname[/b],默认设置为 NULL。
返回代码值0(成功)或 1(失败)
注释当用户登录到本地服务器并执行分布式查询,以访问链接服务器上的表时,本地服务器必须登录链接服务器上,代表该用户访问该表。使用 [b]sp_addlinkedsrvlogin[/b] 来指定本地服


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



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


的默认映射或添加新映射。若要删除默认映射或任何其它映射,请使用 [b]sp_droplinkedsrvlogin[/b]。
当所有下列条件存在时,SQL Server 可以自动地使用正在发出查询的用户的 Windows NT 安全凭据(Windows NT 用户名称和密码),以连接到链接服务器,而不是必须使用
 [b]sp_addlinkedsrvlogin [/b]创建一个预设的登录映射。
[list=1]使用 Windows 身份验证模式,用户连接到 SQL Server。

在客户端和发送服务器上安全帐户委托是可用的。

提供程序支持 Windows 身份验证模式(例如,运行于 Windows NT 上的 SQL Server)。[/list]使用映射(此映射通过在本地 SQL Server 上执行 [b]sp_addlinkedsrvlogin[/b] 定义)的链接服务器执行身份验证后,远程数据库中单独对象的权限由链接服务器决定,


而不是由本地服务器决定。
不能从用户定义的事务中执行 [b]sp_addlinkedsrvlogin[/b]。
权限只有 [b]sysadmin[/b] 和 [b]securityadmin[/b] 固定服务器角色的成员才可以执行 [b]sp_addlinkedsrvlogin[/b]。
用法示例EXEC sp_addlinkedsrvlogin 'DBLink', 'false',null, 'ILM', '111111

介绍完建立连接的方式,下面正式介绍SQL JOB的开发。直接用步骤介绍了。
a)新建作业。如下图:
a、  新建作业。如下图:
[img]http://files.jb51.net/file_images/article/201304/2013042811542925.png[/img]
b、  点击【新建作业】对话框的【常规】选项卡,填写 SQL JOB的名称。如下图
[img]http://files.jb51.net/file_images/article/201304/2013042811542926.png[/img]
c、  点击【新建作业】对话框的【步骤】选项卡,填写 步骤名称。 [img]http://files.jb51.net/file_images/article/201304/2013042811542927.png[/img] [img]http://files.jb51.net/file_images/article/201304/2013042811542928.png[/img] d、  进行作业的第一个步骤------建立数据库连接操作。如下图: [img]http://files.jb51.net/file_images/article/201304/2013042811542929.png[/img] [img]http://files.jb51.net/file_images/article/201304/2013042811542930.png[/img] e、  进行作业的第下一个步骤。如下图:[img]http://files.jb51.net/file_images/article/201304/2013042811542931.png[/img] e、设置作业执行计划 [img]http://files.jb51.net/file_images/article/201304/2013042811542932.png[/img] f、点击确定,完成SQL JOB的开发。 g、完成后作业下面就多了刚开发的作业。如下: [img]http://files.jb51.net/file_images/article/201304/2013042811542933.png[/img] h、作业制作完成后,可以立即让它执行。如果不让它执行,它也会在按照制定频率执行。测试作业: [img]http://files.jb51.net/file_images/article/201304/2013042811542934.png[/img] [img]http://files.jb51.net/file_images/article/201304/2013042811542935.png[/img] [img]http://files.jb51.net/file_images/article/201304/2013042811542936.png[/img]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部