首页 > 代码库 > SQL JOB

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,而忽略 rmtuser 和 rmtpassword 参数。false 值指定 rmtuser 和 rmtpassword 参数用来连接到特定 locallogin 的 rmtsrvname。如果 rmtuser 和 rmtpassword 也设置为 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‘当 useself 为 false 时,用来连接 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‘,Nullb)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。权限只有 sysadmin 或 setupadmin 固定服务器角色的成员才可以执行 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 = http://www.mamicode.com/] ‘data_source‘ ]"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,而忽略 rmtuser 和 rmtpassword 参数。false 值指定 rmtuser 和 rmtpassword 参数用来连接到特定 locallogin 的 rmtsrvname。如果 rmtuser 和 rmtpassword 也设置为 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‘当 useself 为 false 时,用来连接 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。权限只有 sysadmin 和 securityadmin 固定服务器角色的成员才可以执行 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、作业制作完成后,可以立即让它执行。如果不让它执行,它也会在按照制定频率执行。测试作业:      2、发布、订阅。    发布订阅下节再介绍吧。这节东西有点多了。哈哈其中几个存储过程的参数参照了资料。有兴趣了解更多的可以参考下面的地址:参考:http://www.yesky.com/imagesnew/software/tsql/ts_sp_drop_9c1e.htmhttp://www.yesky.com/imagesnew/software/tsql/ts_sp_drop_59v2.htmhttp://www.yesky.com/imagesnew/software/tsql/ts_sp_adda_8gqa.htmhttp://www.yesky.com/imagesnew/software/tsql/ts_sp_adda_6e26.htm

参考网址:http://www.cnblogs.com/tyb1222/archive/2011/05/27/2060075.html