`

sql sever跨数据库复制数据的方法

阅读更多

详细的用法已经注释在sql代码中了。这个是在sqlserver到sqlserver之间的倒数据。2005,2008,2012应该都是适用的。

复制代码
--从远程服务器192.168.66.154上查询100条数据,然后导入到dbo.dquestiondata中
insert into dbo.dquestiondata
select top 100 * from
opendatasource('sqloledb','data source=192.168.6.154;user id=sa;password=xxxxxx').Answer.dbo.DQuestionData
--opendatasource 是一个系统函数,第一个参数是Provider Name,第二个参数是Oledb链接字符串,
--注意连接字符串里没有指定数据库;数据库名称,Schema,表名在opendatasource函数后面书写。

--执行上面的语句会报如下的错,原因是没有开启远程查询支持
    --SQL Server blocked access to STATEMENT 'OpenRowset/OpenDatasource' of component 'Ad Hoc Distributed Queries' 
    --because this component is turned off as part of the security configuration for this server. 
    --A system administrator can enable the use of 'Ad Hoc Distributed Queries' by using sp_configure. 
    --For more information about enabling 'Ad Hoc Distributed Queries', see "Surface Area Configuration" in SQL Server Books Online.

--解决办法1:在图形界面中,SQL Server 安全配置-->机能的安全配置-->开启远程查询Openrowset和opendatasource的支持

--解决办法2:用sp_confing系统存储过程,以命令行的方式开启
--首先必须开启‘show advanced options’高级选项,因为‘Ad Hoc Distributed Queries’属于高级选项
exec sp_configure 'show advanced options' ,1
reconfigure
--下面这步可以省略,不带参数的sp_configure,表示查看所有可用的选项
--记住上面一定要加reconfigure语句,目的是使选项立即生效,不然我们
--还是看不到'Ad Hoc Distributed Queries'高级选项
exec sp_configure
--打开'Ad Hoc Distributed Queries'选项
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure

--记得用完选项后,关闭这些选项
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure
--查看一下是不是关闭了
exec sp_configure
复制代码

 2,用openrowset系统函数

复制代码
--1,Microsoft OLE DB Provider for SQL Server
--注意第二部分链接字符串的写法很是奇怪Server,user,passwrod是用“;”连接的。
select top 100 * from
openrowset('sqloledb','192.168.6.154';'sa';'xxxxx',Answer.dbo.DQuestionData) 

--2,ODBC数据源的方式:Microsoft OLE DB Provider for ODBC Drivers
select  top 100 * from
openrowset('MSDASQL','DRIVER={SQL Server};SERVER=192.168.6.154;UID=sa;PWD=xxxxx',Answer.dbo.DQuestionData) 
复制代码

 上面的两种方法都会用到oledb提供商的名称,下面的这个系统存储过程可以查看oledb提供程序的名称

--用于查看oledb提供者名称
EXEC master..xp_enum_oledb_providers 

3,用链接服务器

如果要多次用到远程查询,每次都写那么长的链接字符串有点麻烦。可以考虑重复利用。

用链接服务器可以很好的解决这个问题

复制代码
-- 创建链接服务器
exec sp_addlinkedserver 'svr_link','','sqloledb','192.168.6.154'
-- 创建登录信息
exec sp_addlinkedsrvlogin 'svr_link','false',null,'sa','xxxx'

--查询 格式为:链接服务器.数据库名.架构名.表名
select top 100 * from svr_link.Answer.dbo.DQuestionData

-- 删除链接服务器
exec sp_dropserver 'svr_link','droplogins'
复制代码

需要注意的几点:

1,虽然上面的例子都是从远程服务器select数据到本地,

但我们同样可以将本地的数据导向远程服务器

-- 往远程数据库192.168.6.154的Answer数据库的test表插入两条数据
insert into svr_link.Answer.dbo.test
select 1,'zhang' union all
select 2,'wang'

2,有了链接服务器,就可以用openquery系统函数了

复制代码
--检索数据
select * from 
openquery(svr_link,'select  * from Answer.dbo.test')
-- 插入数据
insert into openquery(svr_link,'select  * from Answer.dbo.test')
select 3,'li'
复制代码

3,opendatasource和链接服务器都是只返回Server部分,要查询表需要进一步指定数据库,架构和表名。而openrowset和openquery返回的是记录集。

 

方法二:

1、新建一个连接服务器,连接到你要导入的服务器的IP地址(或者机器名)

2、点击安全性,使用此安全上下文建立连接,输入数据库服务器的用户名和密码

3、选择要导出的数据库,使用如下sql导数据:

select * into   laobao from [10.180.116.121].ynpdeicp.dbo.LaoBao

Sql解释:

select 要导入的字段 into   要导入的数据表 from [IP地址].数据库名.dbo.数据表名

 

方法三:

使用Sql 工具自带的导入导出功能。

 

方法四:

sql server 数据库导出表里所有数据成insert 语句

 

    有时候,我们想把数据库的某张表里的所有数据导入到另外一个数据库或另外一台计算机上的数据库,对于sql server有这样的一种方法

下面我以sql server 2008 R2,数据库是Northwind数据库为例,

目标:把Northwind数据库的Orders表导出成insert语句。

 

第一步:选择Northwind数据库,右键-任务-生成脚本:

 

第二步:在弹出的“生成和发布脚本”的简介窗口,按“下一步”按钮:

 

第三步:在“选择对象”窗口,选中“选择特定数据库对象”,展开表,

勾选要生成insert语句的表,我这里选的是order表,

按“下一步”按钮:

 

第四步:在弹出的“设置脚本编写选项”窗口,按“高级”按钮,

在弹出的“高级脚本编写选项”中下拉下拉条至底部,

设置“要编写脚本的数据类型”为“仅限数据”(“仅限数据”是只导出数据为insert语句,如果是导出表结构的话选择“仅限架构”,选择“架构和数据”则架构和insert语句都生成),按“确定”按钮:

 

第五步:在“设置脚本编写选项”窗口,

“指定如何保存或发布脚本”的“输出类型”选中“将脚本保存到特定位置”,

勾选“保存到文件”,则可以指定一个保存的路径,保存为.sql文件,

勾选“保存到新建查询窗口”,则会新打开一个查询窗口,把所有insert 语句放到新查询窗口:

 

第六步:在“设置脚本编写选项”窗口,按“下一步”按钮,弹出:

第七步:在“摘要”窗口,按“下一步”按钮:

第八步:在“保存或发布脚本”窗口,按“完成”按钮:

最终会自动新建一个查询窗口,order表里的所有数据都转换成insert语句。

分享到:
评论

相关推荐

    SQL Sever数据库

    首先,SQL Sever数据库是由Microsoft公司开发的,一种用于存储、管理和检索数据的数据库管理系统(DBMS)。作为商业关系数据库管理系统,SQL Sever支持T-SQL (Transact-SQL),这是SQL Server专用的数据库查询语言。在...

    sql sever 2000数据库实验模板

    SQL Server 2000是微软公司推出的一款关系型数据库管理系统,它在20世纪末至21世纪初广泛应用于企业级数据管理。这个“sql sever 2000数据库实验模板”似乎提供了一些用于教学或实践的源代码示例,帮助用户了解和...

    最新SQL SEVER数据库课件

    SQL(结构化查询语言)是用于管理和操作数据库的标准语言,包括创建、修改和查询数据。SQL Server支持标准的SQL语法,如SELECT语句用于查询数据,INSERT、UPDATE、DELETE分别用于插入、更新和删除数据。此外,还有...

    基于Python实现SQL SEVER与Excel间数据的批量导出.pdf

    为解决这一问题,本文提出了一种使用Python语言实现SQL Server数据库向Excel文件批量导出数据的方法。 Python是一种解释性、互动性、编译性和面向对象的高层次脚本语言。它具有极佳的可读性、可扩展性、易读性和...

    SQLsever2000数据库的建立.doc

    总结来说,这份文档提供了SQL Server 2000创建数据库的基本步骤,ODBC数据源的配置方法,以及搅拌站控制系统的一些基础故障排除指南和软件授权规定。对于使用SQL Server 2000进行数据管理的初学者而言,是一份实用的...

    浅谈SQL Sever数据库的备份与恢复方法.pdf

    SQL Sever数据库备份与恢复是数据库管理员必须掌握的关键技能之一,尤其在大数据时代背景下,数据安全和完整性的重要性更是凸显。在讨论备份与恢复的策略之前,我们首先要明确一点,备份的目的是为了能够在未来某个...

    浅谈SQL Sever 2008数据库的备份和恢复 (1).pdf

    在探讨SQL Server 2008数据库的备份和恢复过程中,需要了解的关键知识点包括数据库备份的意义、备份方法、恢复流程、数据库维护和清理策略。 首先,数据库备份的重要性体现在确保数据的安全性和完整性。由于数据库...

    SQL sever 数据库期末试卷

    SQL Server是Microsoft公司推出的一种关系型数据库管理系统,广泛应用于企业级数据存储和管理。这份"SQL Server数据库期末试卷"包含了对这个系统深入理解和应用的测试题目及答案,旨在帮助学生或学习者评估自己在SQL...

    C#+SQL Sever

    1. **分布式数据库原理**:理解分布式数据库的基本概念,包括数据分片、复制、故障恢复机制等。 2. **ADO.NET访问数据库**:掌握如何使用ADO.NET连接和操作SQL Server数据库,实现数据的读取、插入、更新和删除操作...

    sql sever自学教程 pdf格式

    8. 高级主题:随着技能的提升,你可能需要探索索引优化、事务处理、数据库复制、性能监控和调优等高级主题,以提升SQL Server的效率和稳定性。 本“SQL Server自学教程”PDF格式的资料将详细讲解这些内容,非常适合...

    sql sever数据库内部学习培训资料

    12. **复制技术**:学习SQL Server的复制功能,如事务复制、合并复制和快照复制,用于数据同步和分发。 13. **高可用性与灾难恢复**:理解SQL Server的高可用性解决方案,如镜像、故障转移群集、Always On可用性组...

    适用于2019 sql sever 的northwnd,pubs,studentinto示例数据库

    - 将`.mdf`文件复制到SQL Server的数据文件路径下。 - 在SQL Server Management Studio (SSMS) 中,连接到你的服务器实例。 - 执行T-SQL命令 `CREATE DATABASE [database_name] ON (FILENAME = 'path_to_mdf_file') ...

    sqlsever 2005 操作数据库

    数据库的特性包括数据的独立性(与管理系统分离)、共享性(多用户、多程序语言访问)、冗余性控制(减少不必要的数据复制)、结构化(良好的数据结构)以及安全性与完整性(确保数据安全和准确)。 SQL Server ...

    迷你sql2000,SqlServer数据库

    6. **复制服务**:实现数据库的同步和备份,确保数据在多个地点的一致性和可用性。 7. **集成服务**:前身是DTS(Data Transformation Services),用于数据迁移、转换和加载。 8. **全文搜索**:提供对非结构化...

    My SQL and SQL Sever 对比

    3. 安全性: MySQL 有一个用于改变数据的二进制日志,可以快速地从主机上复制数据到客户机上。 SQL Server 也可以记录 SQL 的有关查询,但是需要付出很高的代价。 4. 恢复性: MySQL 的恢复性主要体现在 MyISAM 配置...

    SQL SEVER数据库课程教学研究与实践.pdf

    7. **数据库复制**:介绍数据库复制技术,包括事务复制、合并复制和快照复制,以及它们在分布式系统中的应用。 8. **SSIS(SQL Server Integration Services)**:学习使用SSIS进行数据集成,包括ETL(提取、转换、...

    图书管理数据库SQLSEVER

    SQL Server 2005还提供了多种附加服务,如复制服务用于数据的同步和分布,分析服务支持商业智能分析,集成服务处理数据集成和转换,报表服务生成各种报表,通知服务则用于发送定制的通知,全文检索则增强了对文本...

    《数据库原理与SQL Sever教程》

    2. 复制技术:学习SQL Server的复制功能,包括发布、订阅和同步,用于数据分发和备份策略。 3. 游标与事务:理解游标的应用场景和操作,以及事务的ACID属性和并发控制。 4. 分析服务与报告服务:简单介绍SQL Server ...

    SQL SEVER 从入门到精通

    SQL(Structured Query Language)是用于管理和处理关系数据库的标准语言,它的应用广泛,对于数据分析、数据存储和业务逻辑实现等方面都有着至关重要的作用。下面将对SQL Server的基础知识、主要功能以及学习路径...

    java连接sqlserver数据库示例以及jar包

    总的来说,通过理解和实践这个示例,开发者可以掌握Java连接SQL Server数据库的基本步骤,从而实现数据的读写操作。在实际项目中,可能还需要考虑更多因素,如连接池管理、事务控制等,这些都是更高级的JDBC应用。

Global site tag (gtag.js) - Google Analytics