SQL Server高手解答

SQL Server高手解答,第1张

此解决方案来自网络
解决的方式是使用opendatasource来跨SQL server执行SQL语句。
1:做数据同步
2:作业里同步
不同服务器数据库之间的数据 *** 作
--创建链接服务器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 '
--查询示例
select from ITSV数据库名dbo表名
--导入示例
select into 表 from ITSV数据库名dbo表名
--以后不再使用时删除链接服务器
exec sp_dropserver 'ITSV ', 'droplogins '
--连接远程/局域网数据(openrowset/openquery/opendatasource)
--1、openrowset
--查询示例
select from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名dbo表名)
--生成本地表
select into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名dbo表名)
--把本地表导入远程表
insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名dbo表名)
select from 本地表
--更新本地表
update b
set b列A=a列A
from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名dbo表名)as a inner join 本地表 b
on acolumn1=bcolumn1
--openquery用法需要创建一个连接
--首先创建一个连接创建链接服务器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
--查询
select
FROM openquery(ITSV, 'SELECT FROM 数据库dbo表名 ')
--把本地表导入远程表
insert openquery(ITSV, 'SELECT FROM 数据库dbo表名 ')
select from 本地表
--更新本地表
update b
set b列B=a列B
FROM openquery(ITSV, 'SELECT FROM 数据库dbo表名 ') as a
inner join 本地表 b on a列A=b列A
--3、opendatasource/openrowset
SELECT
FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' )testdboroy_ta
--把本地表导入远程表
这里还有详细解说,看看吧,希望对你有帮助
>SQLServer2000使用三种类型的复制1快照复制快照复制可精确地复制数据或数据库对象在任一时刻的瞬时状态。快照发布通常被定义为按调度发生。订阅服务器包含发布的项目在上次快照复制时的复本。当源数据相对来说是静态的,订阅服务器可能已有些过期,以及要复制的数据量很少时,使用快照复制。2事务复制在事务复制中,一般先通过快照复制使订阅服务器与发布服务器同步,然后,当发布数据被修改时,捕获事务并将其发送到订阅服务器。通过在发布服务器上进行所有的修改,然后将所有修改复制到订阅服务器,得以在订阅服务器间维护事务完整性。当必须在数据被修改时对其进行复制,必须保留事务,以及发布服务器和订阅服务器通过网络可靠和/或经常地连接在一起时,使用事务复制。3合并复制合并复制使多个站点得以自主地使用一组订阅服务器,然后过一段时间将工作合在一起合并到发布服务器。通过快照复制使订阅服务器与发布服务器同步。对订阅服务器和发布服务器上的更改进行跟踪。过一段时间,合并更改以形成单个的数据版本。在合并过程中,如果多个订阅服务器修改相同的数据,可能会发生冲突。合并复制支持冲突解决程序的定义,即用来定义如何解决上述冲突的规则集。也可以编写自定义冲突解决程序脚本,以处理正确解决复杂冲突情形所需的任何逻辑。当自主运行对于订阅服务器计算机(例如移动的脱接用户)很重要时,或者当多个订阅服务器必须更新相同的数据时,使用合并复制。
Microsoft SQL Server 2000复制的概念:在数据库之间对数据和数据库对象进行复制和分发并进行同步以确保其一致性的一组技术。
使用复制可以将数据分发到不同位置,通过局域网、使用拨号连接、通过 Internet 分发给远程或移动用户。复制还能够使用户提高应用程序性能,根据数据的使用方式物理分隔数据(例如,将联机事务处理 (OLTP) 和决策支持系统分开),或者跨越多个服务器分布数据库处理。
SQL复制的基本元素包括:
发布服务器、订阅服务器、分发服务器、发布、项目。
发布服务器
发布服务器是提供数据以便复制到其它服务器的服务器。发布服务器可以具有一个或多个发布,每个发布代表一组逻辑相关的数据。除了指定其中哪些数据需要复制之外,发布服务器还检测事务复制期间发生更改的数据并维护有关此站点上所有发布的信息。
分发服务器
分发服务器是作为分发数据库宿主并存储历史数据和/或事务以及元数据的服务器。分发服务器的角色根据执行的复制类型而不同。有关更多信息,请参见复制类型。
远程分发服务器是独立于发布服务器并配置为复制的分发服务器的服务器。本地分发服务器是既配置为复制的发布服务器又配置为复制的分发服务器的服务器。
订阅服务器
订阅服务器是接收复制数据的服务器。订阅服务器订阅的是发布而不是发布中分离的项目;并且订阅服务器只订阅其需要的发布,而不是发布服务器上所有可用的发布。根据复制的类型和所选择的复制选项,订阅服务器还可以将数据更改传播回发布服务器或将数据重新发布到其它订阅服务器。
发布
发布是一个数据库中的一个或多个项目的集合。这种多个项目的分组使得指定逻辑相关的一组数据和数据库对象以一起复制变得更容易。
项目
项目是指定要复制的数据表、数据分区或数据库对象。项目可以是完整的表、某几列(使用垂直筛选)、某几行(使用水平筛选)、存储过程或视图定义、存储过程的执行、视图、索引视图或用户定义函数。
订阅
订阅是对数据或数据库对象的复本的请求。订阅定义将接收的发布和接收的时间、地点。订阅的同步或数据分发可以由发布服务器(强制订阅)或订阅服务器(请求订阅)请求。发布可以支持强制订阅和请求订阅的混合。
SQL复制的工作原理
SQL SERVER 主要采用出版物、订阅的方式来处理复制。源数据所在的服务器是出版服务器,负责发表数据。出版服务器把要发表的数据的所有改变情况的拷贝复制到分发服务器分发服务器包含有一个分发数据库,可接收数据的所有改变,并保存这些改变,再把这些改变分发给订阅服务器。
SQL SERVER复制技术类型,三种复制技术,分别是
1、快照复制
2、事务复制
3、合并复制
下介绍实现复制的步骤。(以快照复制为例)
准备工作:
1发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户。
--我的电脑
--控制面板
--管理工具
--计算机管理
--用户和组
--右键用户
--新建用户
--建立一个隶属于administrator组的登陆windows的用户
2在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录, *** 作:
我的电脑--D:\ 新建一个目录,名为: PUB
--右键这个新建的目录
--属性--共享
--选择“共享该文件夹”
--通过“权限”按纽来设置具体的用户权限,保证第一步中创建的用户具有对该文件夹的所有权限
--确定
3设置SQL代理(SQLSERVERAGENT)服务的启动用户(发布/订阅服务器均做此设置)
开始--程序--管理工具--服务
--右键SQLSERVERAGENT
--属性--登陆--选择“此账户”
--输入或者选择第一步中创建的windows登录用户名
--“密码”中输入该用户的密码
4设置SQL Server身份验证模式,解决连接时的权限问题(发布/订阅服务器均做此设置)
企业管理器
--右键SQL实例--属性
--安全性--身份验证
--选择“SQL Server 和 Windows”
--确定
5在发布服务器和订阅服务器上互相注册
企业管理器
--右键SQL Server组
--新建SQL Server注册。
--下一步--可用的服务器中,输入你要注册的远程服务器名--添加
--下一步--连接使用,选择第二个“SQL Server身份验证”
--下一步--输入用户名和密码
--下一步--选择SQL Server组,也可以创建一个新组
--下一步--完成
6对于只能用IP,不能用计算机名的,为其注册服务器别名
(在连接端配置,比如,在订阅服务器上配置的话,服务器名称中输入的是发布服务器的IP)
开始--程序--Microsoft SQL Server--客户端网络实用工具
--别名--添加
--网络库选择“tcp/ip”--服务器别名输入SQL服务器名
--连接参数--服务器名称中输入SQL服务器ip地址
--如果你修改了SQL的端口,取消选择“动态决定端口”,并输入对应的端口号
正式开始:
1配置发布服务器
a 选中指定 〔服务器〕 节点
b 从 〔工具〕 下拉菜单的 〔复制〕 子菜单中选择 〔发布、订阅服务器和分发〕 命令
c 系统d出一个对话框点 〔下一步〕 然后看着提示 *** 作
--直到“指定快照文件夹”
--在“快照文件夹”中输入准备工作中创建的目录: \\《服务器名》\pub
一〔下一步〕 直 *** 作到完成。
d 当完成了出版服务器的设置以后系统会为该服务器的树形结构中添加一个复制监视器同时也生成一个分发数据库(distribution)
2创建发布
a 选中指定的服务器
b 从 〔工具〕 菜单的 〔复制〕 子菜单中选择 〔创建和管理发布〕 命令。此时系统会d出一个对话框
c 选择要创建发布的数据库,然后单击 〔创建发布〕
d 在 〔创建发布向导〕 的提示对话框中单击 〔下一步〕 系统就会d出一个对话框。对话
框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个
大家可以去看看帮助)
e 单击 〔下一步〕 系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在
不同的数据库如 ORACLE或ACCESS之间进行数据复制。但是在这里我们选择运行
“SQL SERVER 2000”的数据库服务器
f 单击 〔下一步〕 ,选择要发布的对象(如表,视图,存储过程,一般是表)
g 然后 〔下一步〕 直到 *** 作完成。当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库。
---------------------------------------------------------------------------
3设计订阅
a 选中指定的订阅服务器
b 从 〔工具〕 下拉菜单中选择 〔复制〕 子菜单的 〔请求订阅〕
c 按照提示单击 〔下一步〕 *** 作直到系统会提示检查SQL SERVER代理服务的运行状态,执行
复制 *** 作的前提条件是SQL SERVER代理服务必须已经启动。
d 单击 〔完成〕 完成订阅 *** 作。
----------------------------------------------------------------------------
完成上面的步骤其实复制也就是成功了。但是如何来知道复制是否成功了呢?
这里可以通过这种方法来快速看是否成功。
展开出版服务器下面的复制——发布内容——右键发布内容——属性——击活——状态然后点立即运行代理程序接着点代理程序属性击活调度
把调度设置为每一天发生,每一分钟,在0:00:00和23:59:59之间。
接下来就是判断复制是否成功了,打开C:\Program Files\Microsoft SQL Server\MSSQL\REPLDATA\unc\XIAOWANGZI_database_database下面,观察是否有一些以时间做为文件名的文件夹(几乎一分中产生一个)。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10737128.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存