SQL Server2005 远程数据操作任务



背景:数据库优化任务,客户的数据库服务器的内存快撑不住了,现在需要我们优化备份数据。wRs思考者日记网-束洋洋个人博客

思路:wRs思考者日记网-束洋洋个人博客

  1. 将每日的数据备份到另一台机器上
  2. 每周末删除上周的数据

根据以上思路需求,我想到使用来实现。(可能有些人说了,使用分布式来发布和订阅,那种麻烦稍显麻烦,本篇不做说明研究)wRs思考者日记网-束洋洋个人博客

大家可以先想想,是可以执行维护计划的,维护计划主要分为以下几类:wRs思考者日记网-束洋洋个人博客

QQ截图20130406150001.jpgwRs思考者日记网-束洋洋个人博客

备份数据库?差异和完整看起来都不符合我的要求,那么我们可以使用执行T-SQL语句任务。wRs思考者日记网-束洋洋个人博客

语句?那么T-SQL语句中怎么在本地连接操作远程的数据库数据呢?wRs思考者日记网-束洋洋个人博客

我搜了网上一圈,发现可以使用服务器对象中的链接服务器来实现(SQLServer的功能相当强大,建议大家不会的东西上MSDN查找资料)wRs思考者日记网-束洋洋个人博客

exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '172.16.1.244'   
exec sp_addlinkedsrvlogin  'ITSV ', 'false ',null, 'sa', '123456'

 wRs思考者日记网-束洋洋个人博客

语句后面的参数解释:wRs思考者日记网-束洋洋个人博客

以下来自MSDN在中国的解释wRs思考者日记网-束洋洋个人博客

语法:wRs思考者日记网-束洋洋个人博客

sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ] 
     [ , [ @provider= ] 'provider_name' ]
     [ , [ @datasrc= ] 'data_source' ] 
     [ , [ @location= ] 'location' ] 
     [ , [ @provstr= ] 'provider_string' ] 
     [ , [ @catalog= ] 'catalog' ]wRs思考者日记网-束洋洋个人博客

[ @server= ] 'server' 要创建的链接服务器的名称。 server 的数据类型为 sysname,无默认值。wRs思考者日记网-束洋洋个人博客

[ @srvproduct= ] 'product_name' 要添加为链接服务器的 OLE DB 数据源的产品名称。 product_name 的数据类型为 nvarchar(128),默认值为 NULL。 如果为 SQL Server,则不必指定provider_name、data_source、location、provider_string 和 catalog。wRs思考者日记网-束洋洋个人博客

[ @provider= ] 'provider_name' 与此数据源对应的 OLE DB 访问接口的唯一编程标识符 (PROGID)。 对于当前计算机中安装的指定 OLE DB 访问接口,provider_name 必须唯一。 provider_name 的数据类型为 nvarchar(128),默认值为 NULL;但如果忽略 provider_name,则使用 SQLNCLI。 (使用 SQLNCLI 并且 SQL Server 将重定向到 SQL Server Native Client OLE DB 访问接口的最新版本。)OLE DB 访问接口应以指定的 PROGID 在注册表中注册。wRs思考者日记网-束洋洋个人博客

[ @datasrc= ] 'data_source' 由 OLE DB 访问接口解释的数据源的名称。 data_source 的数据类型为 nvarchar(4000)。 data_source 作为 DBPROP_INIT_DATASOURCE 属性传递以初始化 OLE DB 访问接口。wRs思考者日记网-束洋洋个人博客

[ @location= ] 'location' 由 OLE DB 访问接口解释的数据库的位置。 location 的数据类型为 nvarchar(4000),默认值为 NULL。 location 作为 DBPROP_INIT_LOCATION 属性传递以初始化 OLE DB 访问接口。wRs思考者日记网-束洋洋个人博客

[ @provstr= ] 'provider_string' OLE DB 访问接口特定的连接字符串,它可标识唯一的数据源。 provider_string 的数据类型为 nvarchar(4000),默认值为 NULL。 provstr 或传递给 IDataInitialize 或设置为 DBPROP_INIT_PROVIDERSTRING 属性,以初始化 OLE DB 访问接口。 当针对 SQL Server Native Client OLE DB 访问接口创建链接服务器时,可以使用 SERVER 关键字来指定实例,即使用 SERVER=servernameinstancename 指定特定 SQL Server 实例。 servername 是运行 SQL Server 的计算机的名称,instancename 是用户要连接的特定 SQL Server 实例的名称。 注意:若要访问镜像数据库,则连接字符串必须包含数据库名称。 该名称是数据访问接口启用故障转移尝试所必需的。 可以在 @provstr 或 @catalog 参数中指定数据库。 此外,连接字符串还可以提供故障转移伙伴名称。wRs思考者日记网-束洋洋个人博客

[ @catalog= ] 'catalog' 与 OLE DB 访问接口建立连接时所使用的目录。 catalog 的数据类型为 sysname,默认值为 NULL。 catalog 作为 DBPROP_INIT_CATALOG 属性传递以初始化 OLE DB 访问接口。 在针对 SQL Server 实例定义链接服务器时,目录指向链接服务器映射到的默认数据库。wRs思考者日记网-束洋洋个人博客

具体的可以参考这里:http://msdn.microsoft.com/zh-cn/library/ms190479.aspxwRs思考者日记网-束洋洋个人博客

QQ截图20130406150121.jpgwRs思考者日记网-束洋洋个人博客

 wRs思考者日记网-束洋洋个人博客

我们可以看到,这里已经新建完成了,具体大家也可以在链接服务器上右键单击新建。我自己新建了好几遍,没有试成功,访问接口我选步了SQL Native Client,每次选中后就变了,具体没找到原因,大家知道的可以给我说说。wRs思考者日记网-束洋洋个人博客

好了,现在我们在本地的查询界面窗口中,可以增、删、改、查远程的数据库了。wRs思考者日记网-束洋洋个人博客

第一种:wRs思考者日记网-束洋洋个人博客

SELECT  * FROM OPENROWSET( 'SQLOLEDB', '172.16.1.244'; 'sa '; '123456',siccdb .dbo. WGS_MAINCDR)  

 wRs思考者日记网-束洋洋个人博客

第二种:wRs思考者日记网-束洋洋个人博客

SELECT * FROM [ITSV] .[SICCDB]. [DBO].[WGS_MAINCDR] 

 wRs思考者日记网-束洋洋个人博客

其他方法:wRs思考者日记网-束洋洋个人博客

把本地表导入远程表wRs思考者日记网-束洋洋个人博客

INSERT OPENROWSET('SQLOLEDB','SQL服务器名';'用户名';'密码';数据库名.dbo.表名)

 wRs思考者日记网-束洋洋个人博客

参考资料:SQLserver2005 使用openquery访问远程数据wRs思考者日记网-束洋洋个人博客

用了以上的链接方式后就方便了,大家可以新建任务来定期执行了。后面的大家懂的。wRs思考者日记网-束洋洋个人博客

 

(转载本站文章请注明作者和出处 思考者日记网|束洋洋个人博客 ,请勿用于任何商业用途)

『访问 思考者日记网404页面 寻找遗失儿童』

告知
  •     本站90%以上文章均属原创,部分转载已加上原作者出处。 如需转载本站文章请您务必保留本站出处!
  •     打广告评论者请自重,请为广大网友提供一个健康干净的网络空间。
  •  感谢主机屋提供网站空间;
  •  感谢万网阿里云提供域名解析;
  •  感谢EmpireCMS提供CMS系统;
  •  感谢bootstrap展示本站前端页面;
  •  感谢Glyphicons Halflings提供字体;
  •  感谢大家一直以来对本站的喜爱,感谢大家!
近期文章 建议与反馈