如何实现MS SQL中同一数据库中表与表之间的数据复制

如何实现MS SQL中同一数据库中表与表之间的数据复制,第1张

分类: 电脑/网络 >> 程序设计 >> 其他编程语言

问题描述:

MS SQL中如何添加大量数据?希望你能帮我想想!

解析:

1 通过工具DTS的设计器进行导入或导出

DTS的设计器功能强大,支持多任务,也是可视化界面,容易 *** 作,但知道的人一般不多,如果只是进行SQL Server数据库中部分表的移动,用这种方法最好,当然,也可以进行全部表的移动。在SQL Server Enterprise Manager中,展开服务器左边的+,选择数据库,右击,选择All tasks/Import Data(或All tasks/Export Data),进入向导模式,按提示一步一步走就行了,里面分得很细,可以灵活的在不同数据源之间复制数据,很方便的。而且可以另存成DTS包,如果以后还有相同的复制任务,直接运行DTS包就行,省时省力。也可以直接打开DTS设计器,方法是展开服务器名称下面的Data Transformation Services,选Local Packages,在右边的窗口中右击,选New Package,就打开了DTS设计器。值得注意的是:如果源数据库要拷贝的表有外键,注意移动的顺序,有时要分批移动,否则外键主键,索引可能丢失,移动的时候选项旁边的提示说的很明白,或者一次性的复制到目标数据库中,再重新建立外键,主键,索引。

其实建立数据库时,建立外键,主键,索引的文件应该和建表文件分开,而且用的数据文件也分开,并分别放在不同的驱动器上,有利于数据库的优化。

2 利用Bcp工具

这种工具虽然在SQL Server7的版本中不推荐使用,但许多数据库管理员仍很喜欢用它,尤其是用过SQL Server早期版本的人。Bcp有局限性,首先它的界面不是图形化的,其次它只是在SQL Server的表(视图)与文本文件之间进行复制,但它的优点是性能好,开销小,占用内存少,速度快。有兴趣的朋友可以查参考手册。

3 利用备份和恢复

先对源数据库进行完全备份,备份到一个设备(device)上,然后把备份文件复制到目的服务器上(恢复的速度快),进行数据库的恢复 *** 作,在恢复的数据库名中填上源数据库的名字(名字必须相同),选择强制型恢复(可以覆盖以前数据库的选项),在选择从设备中进行恢复,浏览时选中备份的文件就行了。这种方法可以完全恢复数据库,包括外键,主键,索引。

4 直接拷贝数据文件

把数据库的数据文件(mdf)和日志文件(ldf)都拷贝到目的服务器,在SQL Server Query Analyzer中用语句进行恢复:

EXEC sp_attach_db @dbname = 'test',

@filename1 = 'd:\mssql7\data\test_datamdf',

@filename2 = 'd:\mssql7\data\test_logldf'

这样就把test数据库附加到SQL Server中,可以照常使用。如果不想用原来的日志文件,可以用如下的命令:

EXEC sp_detach_db @dbname = 'test'

EXEC sp_attach_single_file_db @dbname = 'test',

@physname = 'd:\mssql7\data\test_datamdf'

这个语句的作用是仅仅加载数据文件,日志文件可以由SQL Server数据库自动添加,但是原来的日志文件中记录的数据就丢失了。

5 在应用程序中定制

可以在应用程序(PB、VB)中执行自己编写的程序,也可以在Query Analyzer中执行,这种方法比较灵活,其实是利用一个平台连接到数据库,在平台中用的主要时SQL语句,这种方法对数据库的影响小,但是如果用到远程链接服务器,要求网络之间的传输性能好,一般有两种语句:

1> select into new_tablename where

2> insert (into) old_tablename select from where

区别是前者把数据插入一个新表(先建立表,再插入数据),后者是把数据插入已经存在的一个表中,我个人喜欢后者,因为在编程的结构上,应用的范围上,第二条语句强于前者。

6 SQL Server的复制功能

SQL Server提供了强大的数据复制功能,也是最不易掌握的,具体应用请参考相关资料,值得注意的是要想成功进行数据的复制工作,有些条件是必不可少的:

1>SQL Server Agent必须启动,MSDTC必须启动。

2>所有要复制的表必须有主键。

3>如果表中有text或image数据类型,必须使用with log选项,不能使用with no_log选项。

另外max text repl size选项控制可以复制的文本和图像数据的最大规模,超过这个限制的 *** 作将失败。

4>在要进行复制的计算机上,应该至少是隐含共享,即共享名是C$或D$…。

5>为SQL Server代理使用的Windows NT帐号不能是一个本地的系统帐号,因为本地的系统帐号不允许网络存取。

6>如果参与复制的服务器在另外的计算机域中,必须在这些域之间建立信任关系。本人从事的工作是数据库管理员,要维护多台服务器中的数据库,经常把某台服务器中的某个数据库移动到另外一台服务器,对数据的移动有些心得体会,希望和大家共同交流。

问题一:常用数据库有哪些? 1 IBM 的DB2

作为关系数据库领域的开拓者和领航人,IBM在1997年完成了System R系统的原型,1980年开始提供集成的数据库服务器―― System/38,随后是SQL/DSforVSE和VM,其初始版本与SystemR研究原型密切相关。DB2 forMVSV1 在1983年推出。该版本的目标是提供这一新方案所承诺的简单性,数据不相关性和用户生产率。1988年DB2 for MVS 提供了强大的在线事务处理(OLTP)支持,1989 年和1993 年分别以远程工作单元和分布式工作单元实现了分布式数据库支持。最近推出的DB2 Universal Database 61则是通用数据库的典范,是第一个具备网上功能的多媒体关系数据库管理系统,支持包括Linux在内的一系列平台。

2 Oracle

Oracle 前身叫SDL,由Larry Ellison 和另两个编程人员在1977创办,他们开发了自己的拳头产品,在市场上大量销售,1979 年,Oracle公司引入了第一个商用SQL 关系数据库管理系统。Oracle公司是最早开发关系数据库的厂商之一,其产品支持最广泛的 *** 作系统平台。目前Oracle关系数据库产品的市场占有率名列前茅。

3 Informix

Informix在1980年成立,目的是为Unix等开放 *** 作系统提供专业的关系型数据库产品。公司的名称Informix便是取自Information 和Unix的结合。Informix第一个真正支持SQL语言的关系数据库产品是Informix SE(StandardEngine)。InformixSE是在当时的微机Unix环境下主要的数据库产品。它也是第一个被移植到Linux上的商业数据库产品。

4 Sybase

Sybase公司成立于1984年,公司名称“Sybase”取自“system”和 “database” 相结合的含义。Sybase公司的创始人之一Bob Epstein 是Ingres 大学版(与System/R同时期的关系数据库模型产品)的主要设计人员。公司的第一个关系数据库产品是1987年5月推出的Sybase SQLServer10。Sybase首先提出Client/Server 数据库体系结构的思想,并率先在Sybase SQLServer 中实现。

5 SQL Server

1987 年,微软和 IBM合作开发完成OS/2,IBM 在其销售的OS/2 ExtendedEdition 系统中绑定了OS/2Database Manager,而微软产品线中尚缺少数据库产品。为此,微软将目光投向Sybase,同Sybase 签订了合作协议,使用Sybase的技术开发基于OS/2平台的关系型数据库。1989年,微软发布了SQL Server 10 版。

6 PostgreSQL

PostgreSQL 是一种特性非常齐全的自由软件的对象――关系性数据库管理系统(ORDBMS),它的很多特性是当今许多商业数据库的前身。PostgreSQL最早开始于BSD的Ingres项目。PostgreSQL 的特性覆盖了SQL-2/SQL-92和SQL-3。首先,它包括了可以说是目前世界上最丰富的数据类型的支持;其次,目前PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统

>>

问题二:数据库名称和用户是什么 数据库名称是你建立的database 的名字! 用户,就是你登录数据库这一类软件用户名 比如SQL2000或者2005:一般用户名和密码都是sa,如果是mysql:一般用户名和密码都是root。

问题三:数据库名称和数据源名称有何区别 没有联系,数据源是一个变量,我们定义的一个数据源,可以随时修改指向不同的数据库,而处据库是个存在的实体。

问题四:什么是数据库名称?还有用户名和密码? 你说的要看空间服务商提供的是什么数据库类型

1、如果说数据库是Access,那么数据库名称就是你上传的文件名(即xxxmdb文件,可修改),

用户名和密码即自己在文件里设置,无需询问空间服务商

2、如果说数据库是SQL-Server(即MsSQL),那么数据库服务器IP地址、数据库名称、登录用户名和密码空间服务商会告诉你的,他们告诉你什么你就填上去就可以了,一般来说网站和数据库会被安装到一台服务器上,那么服务器IP地址项就为(local)

数据库服务器IP地址:即你要恭录到那一台服务器上,互联网上服务器很多,你要登录哪一台?

数据库名称:一台数据库服务器空间服务商不可能只为你服务,他们还要为其他人服务,

所以他们为每一个人开通一个数据库名称,一般不允许你修改

用户名和密码:你登录服务器的验证方式,不是任何人都能登录使用的,只有知道的才能使用

3、如果说是MySQL那么原理和MsSQL原理一样,不过使用时要注意中文编码

问题五:数据库有多少种?一般公司,常用有哪些? 这为朋友您好,很高兴本团队能为您作答 中小型企业一般用SQL Server 大型企业,并且数据量庞大,用Oracle 越来越多的企业,出于更安全的考虑,用Linux系统加MySQL等linux平台的数据库,简洁方便,尤其是安全。 这些具体你可以百度随便查下都有,具体这些公司用的比较多, 希望能帮助到您

问题六:dede数据库名称是什么 DEDE数据库名称,需要你填写你服务器(或者空间)带的SQL数据库的那个名称

安装DEDE数据库这部分,有三个地方需要更改:

1、数据库主机(一般有的主机,只要写localhost就可以了,但有些空间的数据库有自己的地址,所以需要单独写);

搐2、数据库用户,这个一般是数据库的名字;

3、数据库名称,一般是空间商的数据库给定的名字(如果你想用自己起的名字,需要去数据库手动添加,才可以使用)

具体 *** 作如下图:

问题七:数据库中的列名表及表名列表有什么区别 列名表即字段列表,表名列表即表名称的列表。

比如有表学生表,包括字段学号,姓名,性别等,学号,姓名,性别 即列名表,学生表 即为表名列表

问题八:什么是主站数据库名称? 40分 你可以这样来查看

1、从网站的数据库连接程序代码,即可知道数据库类型,比如

Provider=MicrosoftJetOLEDB40;Data Source= & ServerMapPath(aamdb)

一看就知道是Access数据库

2、数据库名字,也是从上面的连接信息里看得出为aamdb,其它的也能看得出,比如

ConnStr = Provider = Sqloledb; User id = & SqlUsername & ; Password = & SqlPassword & ; initial Catalog = & SqlDatabaseName & ; Data Source = & SqlHostIP & ;

信息里面的initial Catalog等于的就是数据库名称信息,是mssql类型数据库

3、关于字段,由于字段是包含在表里面的,打开表就能看到字段及记录,当然也可以修改

一般右击数据表,都有字段设计功能

4、关于索引,加索引的目的一般是使数据库检索信息时能提高速度,大多在主键上建立

楼主可以百度一把看看,应该有不少关于数据库的信息

问题九:数据库的命令都有哪些? 1、显示当前存在的数据库 mysql> show databases;

2、选择数据库 mysql> USE mysql Database changed (USE 和 QUIT 命令不需要分号结束。),显示当前选择的数据库 mysql> select database();

3、显示当前数据库中存在的表 mysql> SHOW TABLES;

4、显示表(db)的内容 mysql>select from db;

5、命令的取消 当命令输入错误而又无法改变(多行语句情形)时,只要在分号出现前就可以用 c来取消该条命令 mysql> select -> user() -> c

6、创建一个数据库abccs mysql> CREATE DATABASE abccs;

7、选择你所创建的数据库 mysql> USE abccs Database changed;

8、创建一个数据库表 首先看现在你的数据库中存在什么表: mysql> SHOW TABLES; Empty set (000 sec) 说明刚才建立的数据库中还没有数据库表。下面来创建一个数据库表mytable: 我们要建立一个你公司员工的生日表,表的内容包含员工姓名、性别、出生日期、出生城市。 mysql> CREATE TABLE mytable (name VARCHAR(20), sex CHAR(1), birth DATE, birthaddr VARCHAR(20));

9、显示表的结构: mysql> DESCRIBE mytable;

10、 往表中加入记录 我们先用SELECT命令来查看表中的数据: mysql> select from mytable; Empty set (000 sec) 这说明刚才创建的表还没有记录。 加入一条新记录: mysql> insert into mytable values ('abccs','f','1977-07-07','china');

11、用文本方式将数据装入一个数据库表 如果一条一条地输入,很麻烦。我们可以用文本文件的方式将所有记录加入你的数据库表中。 创建一个文本文件“mysqltxt”,每行包含一个记录,用定位符(tab)把值分开,并且以在 CREATE TABLE语句中列出的列次序给出,例如: abccs f 1977-07-07 china mary f 1978-12-12 usa tom m 1970-09-02 usa 使用下面命令将文本文件“mytabletxt”装载到mytable表中: mysql> LOAD DATA LOCAL INFILE mytabletxt INTO TABLE pet; 再使用如下命令看看是否已将数据输入到数据库表中: mysql> select from mytable;

12、从数据库表中检索信息 select语句格式一般为: SELECT 检索关键词 FROM 被检索的表 WHERE 检索条件

13、查询所有数据: mysql> select from mytable;

14、修正错误记录: 假如tom的出生日期有错误,应该是1973-09-02,则可以用update语句来修正: mysql> u>>

问题十:数据库文件都有哪些后缀名呢? 数据库文件如果你不改的话都是固定的文件后缀名mdf,但是你可以把他改成任何一个后缀名,然后用数据库相关程序打开

以上就是关于如何实现MS SQL中同一数据库中表与表之间的数据复制全部的内容,包括:如何实现MS SQL中同一数据库中表与表之间的数据复制、数据库名称有哪些、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/10047378.html

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

发表评论

登录后才能评论

评论列表(0条)

保存