当前位置:首页 » 编程语言 » sql复制数据库

sql复制数据库

发布时间: 2022-01-16 20:18:52

① 如何用sql语句复制表的结构,复制整个数据库

1.复制表结构:只能复制表的字段,不能复制主键、索引等

select top 0 * into 新表名 from 原表名

2.复制整个数据库结构及数据:

create datebase Test --创建目标数据库
exec P_CopyDB @Source_DB='aspnet',@Des_DB='test' --把源数据库整个复制到目标数据库

P_CopyDB存储过程创建过程如下

-----------------------创建存储过程开始--------------------

create proc P_CopyDB
@Des_DB sysname, --目标数据库
@Obj_Type nvarchar(4000)=N'',--复制的对象类型,可以是下列字符串行表:
-- O 所有对象,D 默认值,R 规则,P 存储过程
-- T 表,TR 触发器,DT 用户定义数据类型
-- V 视图,DATA 数据,DEL 删除目标对象
@Source_DB sysname=N'', --源数据库
@ServerName sysname=N'', --服务器名
@UserName sysname=N'', --用户名,不指定则表示使用 Windows 身份登录
@pwd sysname=N'' --密码
AS
SET NOCOUNT ON
DECLARE @srvid int,@Dbid int,@S_dbid int,@D_dbid int,@TransferID int,
@err int,@src varchar(255), @desc varchar(255)

IF ISNULL(@ServerName,N'')=N'' SET @ServerName='.'--默认为本地数据库
IF ISNULL(@Source_DB,N'')=N'' SET @Source_DB=DB_NAME()

--创建sqldmo对象·
EXEC @err=sp_oacreate 'sqldmo.sqlserver',@srvid OUT
IF @err<>0 GOTO lb_Err

--连接服务器
IF ISNULL(@UserName,N'')=N'' --使用 Windows 身份登录
BEGIN
EXEC @err=sp_oasetproperty @srvid,'loginsecure',-1
IF @err<>0 GOTO lb_Err

EXEC @err=sp_oamethod @srvid,'connect',NULL,@servername
END
ELSE
EXEC @err=sp_oamethod @srvid,'connect',NULL,@servername,@UserName,@pwd

IF @err<>0 GOTO lb_Err

--获取数据库集
EXEC @err=sp_oagetproperty @srvid,'databases',@Dbid OUT
IF @err<>0 GOTO lb_Err

--选择源数据库
EXEC @err=sp_oamethod @Dbid,'item',@S_dbid OUT,@Source_DB
IF @err<>0 GOTO lb_Err

--选择目标数据库
EXEC @err=sp_oamethod @Dbid,'item',@D_dbid OUT,@Des_DB
IF @err<>0 GOTO lb_Err

--设置复制的对象
EXEC @err=sp_oacreate 'SQLDMO.Transfer',@TransferID OUT
IF @err<>0 GOTO lb_Err

--设置目标服务器信息
EXEC @err=sp_oasetproperty @TransferID,'DestServer',@ServerName
IF @err<>0 GOTO lb_Err

--设置连接用户
IF ISNULL(@UserName,N'')=N'' --使用 Windows 身份登录
BEGIN
EXEC @err=sp_oasetproperty @TransferID,'DestUseTrustedConnection',1
IF @err<>0 GOTO lb_Err
END
ELSE
BEGIN
EXEC @err=sp_oasetproperty @TransferID,'DestLogin',@UserName
IF @err<>0 GOTO lb_Err

EXEC @err=sp_oasetproperty @TransferID,'DestPassword',@pwd
IF @err<>0 GOTO lb_Err
END

--设置复制对象信息
EXEC @err=sp_oasetproperty @TransferID,'DestDatabase',@Des_DB
IF @err<>0 GOTO lb_Err

DECLARE tb CURSOR FAST_FORWARD LOCAL
FOR
SELECT Name FROM(
SELECT KeyWord=N',D,', Name=N'CopyAllDefaults' UNION ALL
SELECT KeyWord=N',O,', Name=N'CopyAllObjects' UNION ALL
SELECT KeyWord=N',R,', Name=N'CopyAllRules' UNION ALL
SELECT KeyWord=N',P,', Name=N'CopyAllStoredProceres' UNION ALL
SELECT KeyWord=N',T,', Name=N'CopyAllTables' UNION ALL
SELECT KeyWord=N',TR,', Name=N'CopyAllTriggers' UNION ALL
SELECT KeyWord=N',DT,', Name=N'CopyAllUserDefinedDatatypes' UNION ALL
SELECT KeyWord=N',V,', Name=N'CopyAllViews' UNION ALL
SELECT KeyWord=N',DATA,',Name=N'CopyData' UNION ALL
SELECT KeyWord=N',DEL,', Name=N'DropDestObjectsFirst'
)A WHERE CHARINDEX(KeyWord,
CASE WHEN ISNULL(@Obj_Type,N'')='' THEN ',O,DATA,' ELSE @Obj_Type END)>0
OPEN tb
FETCH tb INTO @src
WHILE @@FETCH_STATUS=0
BEGIN
EXEC @err=sp_oasetproperty @TransferID,@src,1
IF @err<>0 GOTO lb_Err
FETCH tb INTO @src
END
CLOSE tb
DEALLOCATE tb

--复制对象
EXEC @err=sp_oamethod @S_dbid,'Transfer',null,@TransferID
IF @err<>0 GOTO lb_Err

--结束
SET @err=0
GOTO lb_Exit

--错误处理
lb_Err:
EXEC sp_oageterrorinfo NULL, @src OUT, @desc OUT
RAISERROR(N'错误编号 %#x, 错误源 "%s", 错误描述 "%s"',16,1,@err,@src,@desc)
RETURN -1

lb_Exit:
EXEC sp_OADestroy @Dbid
EXEC sp_OADestroy @srvid
EXEC sp_OADestroy @TransferID
RETURN @err
GO

-----------------------创建存储过程结束--------------------

② sql 数据库拷贝复制

这个多了,如果老空间和新空间的数据库是一样的(如都是sqlserver的),一般情况下使用数据库的备份恢复到新空间的数据库即可,如果不是同一种数据库,这个相对较为麻烦,一般情况下在旧空间使用每张表采用文本文件方式进行数据导出,然后在新空间将每个表的文本文件数据导入到新空间的每张表里,如旧空间数据库是sqlserver,一般采用sqlserver自带的bcp工具将每张表数据导出成文本文件,然后将这些文本文件以asc码方式传输到新空间里去,假设新空间数据库是oracle的,则在新空间使用oracle的自带文本导入工具sqlldr将来自sqlserver的文本文件数据导入到oracle的数据库对应的表里即可。

③ Sql Server 怎么复制一个数据库

法一:在企业管理器里找到数据库,右键,属性,可以看到数据库文件路径,然后停止服务管理器,就是右下角的绿色三角,然后去拷贝一份数据文件。
然后在企业管理器里附加数据库,换一个名字里就可以了。这样就是2份一模一样的数据库。到时候程序里选择性的连接就OK了
法二。企业管理器,新建一个数据库,选择该数据库,右键,备份数据库。好了后选择还原数据库。要在选项卡的“在现有数据库上强制还原”复选框那里打勾
效果一样,但是要注意路径要是本身存在的,否则报错,(此方法无需停止服务管理器,但是操作不细致容易出错)

④ sql server 2000 复制数据库

数据库表间数据复制 在利用数据库开发时,常常会将一些表之间的数据互相导入。当然可以编写程序实现,但是,程序常常需要开发环境,不方便。最方便是利用sql语言直接导入。既方便而修改也简单。以下就是导入的方法。
1。表结构相同的表,且在同一数据库(如,table1,table2)

Sql :insert into table1 select * from table2 (完全复制)

insert into table1 select distinct * from table2(不复制重复纪录)

insert into table1 select top 5 * from table2 (前五条纪录)

2。 不在同一数据库中(如,db1 table1,db2 table2)

sql: insert into db1..table1 select * from db2..table2 (完全复制)

insert into db1..table1 select distinct * from db2table2(不复制重复纪录)

insert into tdb1..able1 select top 5 * from db2table2 (前五条纪录)

3. 表结构不同的表或复制部分纪录(如,dn_user,dn_user2)

a. 建一个新表[DN_UserTemp](在老表dn_user上增加一列)

⑤ SQL中复制一个表到另外一个数据库中

在SQL Server Management Studio中,使用“SQL Server导入和导出向导”,可以很容易地复制表。

如果一定要使用语句,假设你的架构是dbo,在DBERP数据库中运行:
select * into U_物料编码 from DBTEST.dbo.U_物料编码
如果有索引,创建索引。如果有约束,创建约束。
如果两个数据库不在同一个实例,先创建连接服务器。

⑥ SQL语句 怎么把一个表的数据复制到另外一个表里面

SQL语句把一个表的数据复制到另外一个表里面的步骤:

1、打开SQL,登录到一个数据库中,依次点击“工具”——“导出表”,在弹出的界面中选择一个用户,列出这个用户下面的所有表。

⑦ sql server 怎么复制一个整个数据库到另一个数据库

  • 首先,新建一个数据库,数据库名字为【fu】

  • 然后【右击】选择想要从中获取数据的数据库,选择【任务】,选择【导入数据】

  • 然后进入导入第一个页面,然后点击下一步

  • 然后填写想要从中导入数据的数据库配置信息,点击下一步

  • 然后填写fu的配置信息,点击下一步

  • 然后选择第一个,点击下一步

  • 然后选择所有的表数据,点击下一步

  • 选中立即运行,点击下一步

  • 然后都是下一步,然后完成,就可以导入数据了

  • 导入完成之后,就可以看到fu的数据里的表数据了

或者把SQL服务先停止,然后拷出来mdf文件和ldf文件,然后"分离和附加",提示改名,就OK了。

⑧ 如何用sql,复制一个数据库

自认为不是高手
--------------------------------

--在master中创建student表
use master
go
create table student
(
id int IDENTITY (1,1),
name varchar(20),
age int
)

--插入2条测试数据
insert into student
select '周杰伦','100'
union
select '蔡依林','1000'

--查询数据
select * from student

--创建测试数据库
create database test

--复制插入到新的数据库test
--语句原型 select * into 数据库.dbo.新表名 from 要复制的表
--fromstudent这个表不需要创建由into自动创建
select * into test.dbo.fromstudent from master.dbo.student

--查询新表的数据
select * from test.dbo.fromstudent

--fromstudent和student的表结构数据都一样

⑨ sql server复制数据库

假如你是通过脚本写的,直接复制脚本就可以了

热点内容
绿色linux 发布:2024-11-14 12:56:11 浏览:349
游戏本缓存 发布:2024-11-14 12:55:28 浏览:649
微软提供的编译软件 发布:2024-11-14 12:55:16 浏览:17
长沙java培训机构哪家好 发布:2024-11-14 12:40:53 浏览:228
外存储器硬盘能存储的高清电影数 发布:2024-11-14 12:33:23 浏览:265
python分号作用 发布:2024-11-14 12:31:50 浏览:223
方舟编译器下载要钱吗 发布:2024-11-14 12:29:20 浏览:62
jspoa源码 发布:2024-11-14 12:21:31 浏览:420
不记得了密码怎么办 发布:2024-11-14 12:18:58 浏览:442
python字符串的大小 发布:2024-11-14 12:17:24 浏览:222