如何在运行 SQL Server 的计算机之间移动数据库

如何在运行 SQL Server 的计算机之间移动数据库,第1张

您可以使用相同的方法从 SQL Server 70 或 SQL Server 2000 迁移数据。但是,Microsoft SQL
Server 2005 中的管理工具与 SQL Server 70 或 SQL Server 2000 中的管理工具有所不同。您应该使用
SQL Server Management Studio(而不是 SQL Server 企业管理器)以及 SQL Server 导入和导出向导
(DTSWizardexe)(而不是数据转换服务导入和导出数据向导)。
备份和还原
在源服务器上备份用户数据库,然后将用户数据库还原到目标服务器上。
在备份过程中时可能有人使用数据库。如果用户在备份完成后对数据库执行
INSERT、UPDATE 或 DELETE
语句,则备份中不会包含这些更改。如果您必须传输所有更改,那么,假如您既执行事务日志备份又执行完整数据库备份,您可以以尽可能短的停止时间来传输这些更改。
在目标服务器上还原完整数据库备份,并指定 WITH NORECOVERY 选项。
注意:为防止对数据库做进一步的修改,请指导用户在源服务器上退出数据库活动。
执行事务日志备份,然后使用 WITH RECOVERY 选项将事务日志备份还原到目标服务器上。停止时间仅限于事务日志备份和恢复的时间。有关更多信息,请参阅 SQL Server 联机丛书的“Transact-SQL 参考”主题中的“还原”子主题。
目标服务器上的数据库将与源服务器上的数据库大小相同。要减小数据库的大小,您必须在执行备份前压缩源数据库的大小,或者在完成还原后压缩目标数据库的大小。有关更多信息,请参阅 SQL Server 联机丛书的“创建和维护数据库”标题下的“压缩数据库”子主题。
如果您将数据库还原到的文件位置不同于源数据库的文件位置,则必须指定 WITH MOVE 选项。例如,在源服务器上,数据库位于 D:\Mssql\Data 文件夹中。目标服务器没有 D 驱动器,因而您需要将数据库还原到 C:\Mssql\Data 文件夹。
有关如何将数据库还原到其他位置的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
221465
INF:结合使用 WITH MOVE 选项和 RESTORE 语句
304692 INF:使用 BACKUP 和 RESTORE 将 SQL Server 70 数据库移到新的位置
如果您想覆盖目标服务器上的一个现有数据库,则必须指定 WITH REPLACE 选项。有关更多信息,请参阅 SQL Server 联机丛书的“Transact-SQL 参考”主题中的“还原”子主题。
源服务器和目标服务器上的字符集、排序顺序和 Unicode 整序可能必须相同,具体取决于您要还原到 SQL Server 的哪种版本。有关更多信息,请参阅本文中的“关于排序规则的说明”一节。
Sp_detach_db 和 Sp_attach_db 存储过程
要使用 sp_detach_db 和 sp_attach_db 这两个存储过程,请按下列步骤 *** 作:
使用 sp_detach_db 存储过程分离源服务器上的数据库。您必须将与数据库关联的 mdf、ndf 和 ldf 这三个文件复制到目标服务器上。参见下表中对文件类型的描述:
文件扩展名
说明
mdf 主要数据文件
ndf 辅助数据文件
ldf 事务日志文件
使用 sp_attach_db 存储过程将数据库附加到目标服务器上,并指向您在上一步骤中复制到目标服务器的文件。
有关如何使用这些方法的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
224071
如何通过使用 SQL Server 中的分离和附加功能将 SQL Server 数据库移到新位置
分离数据库后将无法访问该数据库,并且复制文件时也无法使用该数据库。在进行分离的那一时刻数据库中包含的所有数据都被移动。
在您使用附加或分离方法时,两个服务器上的字符集、排序顺序和 Unicode 整序都必须相同。有关更多信息,请参阅本文中的“关于排序规则的说明”一节。
关于排序规则的说明
如果您使用备份和还原或附加和分离方法在两个
SQL Server 70 服务器之间移动数据库,则两个服务器上的字符集、排序顺序和 Unicode 整序都必须相同。如果您将数据库从
SQL Server 70 移到 SQL Server 2000,或者在不同的 SQL Server 2000
服务器之间移动数据库,则数据库将保留源数据库的整序。这意味着,如果运行 SQL Server 2000
的目标服务器的整序与源数据库的整序不同,则目标数据库的整序也将与目标服务器的 master、model、tempdb 和 msdb 数据库的整序不同。有关更多信息,请参见 SQL Server 2000 联机丛书中的“混合整序环境”主题。
导入和导出数据(在 SQL Server 数据库之间复制对象和数据)
您可以使用数据转换服务导入和导出数据向导来复制整个数据库或有选择地将源数据库中的对象和数据复制到目标数据库。
在传输过程中,可能有人在使用源数据库。如果在传输过程中有人在使用源数据库,您可能会看到传输过程中出现一些阻滞现象。
在您使用导入和导出数据向导时,源服务器与目标服务器的字符集、排序顺序和整序不必相同。
因为源数据库中未使用的空间不会移动,所以目标数据库不必与源数据库一样大。同样,如果您只移动某些对象,则目标数据库也不必与源数据库一样大。
SQL Server 70 数据转换服务可能无法正确地传输大于 64 KB 的文本和图像数据。但 SQL Server 2000 版本的数据转换服务不存在此问题。
有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
257425
FIX:DTS 对象传输不能传输大于 64 KB 的 BLOB 数据
第 2 步:如何传输登录和密码
如果您不将源服务器中的登录传输到目标服务器,当前的 SQL Server 用户就无法登录到目标服务器。您可以按照下面的 Microsoft 知识库文章中的说明来传输登录和密码:
246133 如何在 SQL Server 实例之间传输登录和密码
目标服务器上的登录的默认数据库可能与源服务器上的登录的默认数据库不同。您可以使用 sp_defaultdb 存储过程来更改登录的默认数据库。有关更多信息,请参见 SQL Server 联机丛书中的“Transact-SQL 参考”主题的“sp_defaultdb”子主题。
第 3 步:如何解决孤立用户
在您向目标服务器传输登录和密码后,用户可能还无法访问数据库。登录与用户是靠安全识别符 (SID) 关联在一起的;在您移动数据库后,如果 SID
不一致,SQL Server 可能会拒绝用户访问数据库。此问题称为孤立用户。如果您使用 SQL Server 2000 DTS
传输登录功能来传输登录和密码,就可能会产生孤立用户。此外,被允许访问与源服务器处于不同域中的目标服务器的集成登录帐户,也会导致出现孤立用户。
查找孤立用户。在目标服务器上打开查询分析器,然后在您移动的用户数据库中运行以下代码:
exec sp_change_users_login 'Report'
此过程将列出任何未链接到一个登录帐户的孤立用户。如果没有列出用户,请跳过第 2 步和第 3 步,直接进行第 4 步。
解决孤立用户问题。如果一个用户是孤立用户,数据库用户可以成功登录到服务器,但却无权访问数据库。如果您尝试向数据库授予登录访问权,则会因该用户已经存在而出现下列错误消息:
Microsoft SQL-DMO (ODBC SQLState:42000) 错误 15023:当前数据库中已存在用户或角色 '%s'。
有关如何解决孤立用户的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
240872
如何解决在运行 SQL Server 的服务器之间移动数据库时的权限问题
此文章介绍如何将登录映射到数据库用户,以及如何解决标准的 SQL Server 登录和集成登录产生的孤立用户。
274188 PRB:联机丛书中的“孤立用户疑难解答”主题不完整
上面的文章介绍了如何使用 sp_change_users_login 存储过程来逐个纠正孤立用户。sp_change_users_login 存储过程仅能解决标准的 SQL Server 登录帐户的孤立用户问题。
如果数据库所有者 (dbo) 被当作孤立用户列出,请在用户数据库中运行下面的代码:
exec sp_changedbowner 'sa'
此存储过程会将数据库所有者更改为 dbo 并解决这个问题。要将数据库所有者更改为另一用户,请使用您想使用的用户再次运行 sp_changedbowner。有关更多信息,请参见 SQL Server 联机丛书的“Transact-SQL 参考”主题中的“sp_changedbowner”子主题。
如果您的目标服务器运行的是 SQL Server 2000 Service Pack 1,则在您执行附加 *** 作或还原 *** 作(或两种 *** 作都执行)后,企业管理器的用户文件夹中的列表中可能没有数据库所有者用户。
有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
305711
BUG:在企业管理器中没有显示 DBO 用户
如果目标服务器上不存在映射到源服务器上的 dbo 的登录,您在尝试通过企业管理器更改系统管理员 (sa) 密码时,可能会收到以下错误消息:
错误 21776:[SQL-DMO] 名称 'dbo' 在 Users 集合中没有找到。如果该名称是合法名称,则使用 [] 来分隔名称的不同部分,然后重试。
有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
218172
PRB:在企业管理器中不能更改 SA 密码
警告:如果您再次还原或附加数据库,则数据库用户可能会再次被孤立,这样您就必须重复第 3 步 *** 作。
第 4 步:如何移动作业、警报和运算符
第 4 步是可选 *** 作。您可以为源服务器上的所有作业、警报和运算符生成脚本,然后在目标服务器上运行脚本。
要移动作业、警报和运算符,请按照下列步骤 *** 作: 您可以用右键单击选择为所有警报、所有作业或所有运算符生成脚本。
打开 SQL Server 企业管理器,然后展开管理文件夹。
展开 SQL Server 代理,然后右键单击警报、作业或运算符。
单击所有任务,然后单击生成 SQL 脚本。对于 SQL Server 70,请单击为所有作业生成脚本、警报或运算符。
您可以将作业、警报和运算符从 SQL Server 70 移到 SQL Server 2000,也可以在运行 SQL Server 70 和运行 SQL Server 2000 计算机之间移动。
如果在源服务器上为运算符设置了 SQLMail 通知,则目标服务器上也必须设置 SQLMail,才能具有相同的功能。
有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
263556
INF:如何配置 SQL Mail
第 5 步:如何移动 DTS 包
第 5 步是可选 *** 作。如果 DTS 包在源服务器上存储在 SQL Server 中或存储库中,您可以在需要时移动这些包。要在服务器之间移动 DTS 包,请使用下列方法之一。
方法 1
在源服务器上将 DTS 包保存到一个文件中,然后在目标服务器上打开 DTS 包文件。
将目标服务器上的包保存到 SQL Server 或存储库中。
注意:您必须用单独的文件逐个地移动这些包。
方法 2
在 DTS 设计器中打开每个 DTS 包。
在包菜单上,单击另存为。
指定目标 SQL Server。
注意:在新服务器上,包可能无法正常运行。您可能必须对包进行更改,更改包中任

一、在本机电脑打开sqlserver2000的企业管理器;

1、新建SQL注册

2、添加本站的SQL数据库所在服务器IP,注:由于购买的数据库类型不同所在服务器IP也会不同,请在数据库管理的基本信息中查看,以保证正确。

3、选择第二项“系统管理给我分配的SQLserver登录信息”

4、输入您在本站开通的MSSQL数据库的用户名和密码

5、存放位置,没必要修改,当然也可以选第二项新建一个组

6、点完成后将进行远程数据库连接,如果刚才所设置的参数正确并且本机的防火墙充许了1433端口将会连接成功。

二、打开本机电脑上的“开始-MicrosoftSQLServer2000-企业管理器”在SQL2000企业管理器中会看到刚才新注册的数据库和本站服务器IP

1、双击前面的号进行远程数据库服务器连接,连接成功后会看到数据库结构

2、点开数据库前面的号将展开远程服务器上的数据库列表,从中找到数据库

3、至此已经成功连接到远程数据库,就可以像在本机 *** 作一样去管理数据库了

网络中数据传输过程

我们每天都在使用互联网,我们电脑上的数据是怎么样通过互联网传输到到另外的一台电脑上的呢?

   我们知道现在的互联网中使用的TCP/IP协议是基于,OSI(开放系统互联)的七层参考模型的,(虽然不是完全符合)从上到下分别为 应用层 表示层 会话层 传输层 网络层 数据链路层和物理层。其中数据链路层又可是分为两个子层分别为逻辑链路控制层(Logic Link Control,LLC )和介质访问控制层((Media Access Control,MAC )也就是平常说的MAC层。LLC对两个节点中的链路进行初始化,防止连接中断,保持可靠的通信。MAC层用来检验包含在每个桢中的地址信息。在下面会分析到。还要明白一点路由器是在网路层的,而网卡在数据链路层。

   我们知道,ARP(Address Resolution Protocol,地址转换协议)被当作底层协议,用于IP地址到物理地址的转换。在以太网中,所有对IP的访问最终都转化为对网卡MAC地址的访问。如果主机A的ARP列表中,到主机B的IP地址与MAC地址对应不正确,由A发往B数据包就会发向错误的MAC地址,当然无法顺利到达B,结 果是A与B根本不能进行通信。

   首先我们分析一下在同一个网段的情况。假设有两台电脑分别命名为A和B,A需要相B发送数据的话,A主机首先把目标设备B的IP地址与自己的子网掩码进行“与” *** 作,以判断目标设备与自己是否位于同一网段内。如果目标设备在同一网段内,并且A没有获得与目标设备B的IP地址相对应的MAC地址信息,则源设备(A)以第二层广播的形式(目标MAC地址为全1)发送ARP请求报文,在ARP请求报文中包含了源设备(A)与目标设备(B)的IP地址。同一网段中的所有其他设备都可以收到并分析这个ARP请求报文,如果某设备发现报文中的目标IP地址与自己的IP地址相同,则它向源设备发回ARP响应报文,通过该报文使源设备获得目标设备的MAC地址信息。为了减少广播量,网络设备通过ARP表在缓存中保存IP与MAC地址的映射信息。在一次 ARP的请求与响应过程中,通信双方都把对方的MAC地址与IP地址的对应关系保存在各自的ARP表中,以在后续的通信中使用。ARP表使用老化机制,删除在一段时间内没有使用过的IP与MAC地址的映射关系。一个最基本的网络拓扑结构:

 如果中间要经过交换机的话,根据交换机的原理,它是直接将数据发送到相应端口,那么就必须保有一个数据库,包含所有端口所连网卡的MAC地址。它通过分析Ethernet包的包头信息(其中包含不原MAC地址,目标MAC地址,信息的长度等信息),取得目标B的MAC地址后,查找交换机中存储的地址对照表,(MAC地址对应的端口),确认具有此MAC地址的网卡连接在哪个端口上,然后将数据包发送到这个对应的端口,也就相应的发送到目标主机B上。这样一来,即使某台主机盗用了这个IP地址,但由于他没有这个MAC地址,因此也不会收到数据包。

 现在我们讨论两台不在同一个网段中的主机,假设网络中要从主机PC-A发送数据包PAC到PC-C主机中,如下图所示:

   

  PC-A并不需要获取远程主机(PC-C)的MAC地址,而是把IP分组发向缺省网关,由网关IP分组的完成转发过程。如果源主机(PC-A)没有缺省网关MAC地址的缓存记录,则它会通过ARP协议获取网关的MAC地址,因此在A的ARP表中只观察到网关的MAC地址记录,而观察不到远程主机的 MAC地址。在以太网(Ethernet)中,一个网络设备要和另一个网络设备进行直接通信,

除了知道目标设备的网络层逻辑地址(如IP地址)外,还要知道目标设备的第二层物理地址(MAC地址)。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。     数据包在网络中的发送是一个及其复杂的过程,上图只是一种很简单的情况,中间没有过多的中间节点,其实现实中只会比这个更复杂,但是大致的原理是一致的。

(1)PC-A要发送数据包到PC-C的话,如果PC-A没有PC-C的IP地址,则PC-A首先要发出一个dns的请求,路由器A或者dns解析服务器会给PC-A回应PC-C的ip地址,这样PC-A关于数据包第三层的IP地址信息就全了:源IP地址:PC-A,目的ip地址:PC-C。

(2)接下来PC-A要知道如何到达PC-C,然后,PC-A会发送一个arp的地址解析请求,发送这个地址解析请求,不是为了获得目标主机PC-C的MAC地址,而是把请求发送到了路由器A中,然后路由器A中的MAC地址会发送给源主机PC-A,这样PC-A的数据包的第二层信息也全了,源MAC地址:PC-A的MAC地址,目的MAC地址:路由器A的MAC地址,

(3)然后数据会到达交换机A,交换机A看到数据包的第二层目的MAC地址,是去往路由器A的,就把数据包发送到路由器A,路由器A收到数据包,首先查看数据包的第三层ip目的地址,如果在自己的路由表中有去往PC-C的路由,说明这是一个可路由的数据包。 (4)然后路由器进行IP重组和分组的过程。首先更换此数据包的第二层包头信息,路由器PC-A到达PC—C要经过一个广域网,在这里会封装很多广域网相关的协议。其作用也是为了找下一阶段的信息。同时对第二层和第三层的数据包重校验。把数据经过Internet发送出去。最后经过很多的节点发送到目标主机PC_C中。

 现在我们想一个问题,PC-A和PC-C的MAC地址如果是相同的话,会不会影响正常的通讯呢!答案是不会影响的,因为这两个主机所处的局域网被广域网分隔开了,通过对发包过程的分析可以看出来,不会有任何的问题。而如果在同一个局域网中的话,那么就会产生通讯的混乱。当数据发送到交换机是,这是的端口信息会有两个相同的MAC地址,而这时数据会发送到两个主机上,这样信息就会混乱。因此这也是保证MAC地址唯一性的一个理由。

我暂且按我的理解说说吧。

先看一下计算机网络OSI模型的七个层次:

┌—————┐

│ 应用层 │←第七层

├—————┤

│ 表示层 │

├—————┤

│ 会话层 │

├—————┤

│ 传输层 │

├—————┤

│ 网络层 │

├—————┤

│数据链路层│

├—————┤

│ 物理层 │←第一层

└—————┘

而我们现在用的网络通信协议TCP/IP协议者只划分了四成:

┌—————┐

│ 应用层 │ ←包括OSI的上三层

├—————┤

│ 传输层 │

├—————┤

│ 网络层 │

├—————┤

│网络接口层 │←包括OSI模型的下两层,也就是各种不同局域网。

└—————┘

两台计算机通信所必须需要的东西:IP地址(网络层)+端口号(传送层)。

两台计算机通信(TCP/IP协议)的最精简模型大致如下:

主机A---->路由器(零个或多个)---->主机B

举个例子:主机A上的应用程序a想要和主机B上面的应用程序b通信,大致如下

程序a将要通信的数据发到传送层,在传送层上加上与该应用程序对应的通信端口号(主机A上不同的应用程序有不同的端口号),如果是用的TCP的话就加上TCP头部,UDP就加上UDP头部。

在传送成加上头部之后继续向往下传到网络层,然后加上IP头部(标识主机地址以及一些其他的数据,这里就不详细说了)。

然后传给下层到数据链路层封装成帧,最后到物理层变成二进制数据经过编码之后向外传输。

在这个过程中可能会经过许多各种各样的局域网,举个例子:

主机A--->(局域网1--->路由器--->局域网2)--->主机B

这个模型比上面一个稍微详细点,其中括号里面的可以没有也可能有一个或多个,这个取决于你和谁通信,也就是主机B的位置。

主机A的数据已经到了具体的物理介质了,然后经过局域网1到了路由器,路由器接受主机A来的数据先经过解码,还原成数据帧,然后变成网络层数据,这个过程也就是主机A的数据经过网络层、数据链路层、物理层在路由器上面的一个反过程。

然后路由器分析主机A来的数据的IP头部(也就是在主机A的网络层加上的数据),并且修改头部中的一些内容之后继续把数据传送出去。

一直到主机B收到数据为止,主机B就按照主机A处理数据的反过程处理数据,直到把数据交付给主机B的应用程序b。完成主机A到主机B的单方向通信。

这里的主机A、B只是为了书写方便而已,可能通信的双方不一定就是个人PC,服务器与主机,主机与主机,服务器与服务器之间的通信大致都是这样的。

再举个例子,我们开网页上百度:

就是我们的主机浏览器的这个应用程序和百度的服务器之间的通信。应用成所用的协议就是>

大致过程就是上面所说,其中的细节很复杂,任何一个细节都可以写成一本书,对于非专业人员也没有必要深究。

我没明白你们公司装了一台什么服务器,比如FTP,WEB,或其他的数据、应用服务器,它之能与之相关的服务。
如果是安全防护方面的服务器,有些系统有这些功能,但是作为管理员,他不会没事去看别人的机器上的东西。
举例:我们单位使用VRV桌面管理系统,客户端只有注册了以后就可以纳入它的管理。当然,如果要求必须注册,而你不注册的话,服务器可以设置让你关机、断网、重启、提示注册等办法督促你进行注册。
对于已注册微机,具有管理员身份的人员可以点对点控制,里面有远程协助功能,将它可以设置为远程时通知对方或不通知,还可以设置为仅屏幕查看或完全控制。与你本机设不设共享或开没开启远程没有关系,他都可以控制。
我一般设置为通知对方的远程桌面查看。就是我要远程你先要给你提示,你确定后我才可以登陆你的电脑。我等远程一般也是对方有问题没法解决时远程登陆对方指导对方做 *** 作。
如果你们单位服务器有这类的软件,你要是担心管理员的素质,可以通过如下方法做:
1、Windows要设口令,本人短时离开时将计算机锁定(设屏保,恢复时使用密码保护;压CTRl旁边的那个类似Windows图标的键加L)
2、关键文件加密,类似Office的文件加密很方便,如果想对文件夹或分区加密,可以下载个绿色版的Ulock,使用很方便。
这样,即使他登陆了你的机子,也没办法看见你的加密文件。另外,如果你确认你机子被他远程了,还对你的关键文件进行了剽窃,可以申请公司查验,一般的安全系统对于管理员的所有 *** 作都有日志记载的,他这属犯罪行为。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存