SQL跨服查询
今日产品部要导批数据,但是需要连接查询查询的几个表不在同一服务器上。所以我开始是这么干的:
1.查询一台服务器的数据,并导入本地Excel
2.查询另一台服务器的数据,并导入本地Excel
3.Excle导入数据库,数据库自带了Excel导入数据库的功能
4.连接查询,OVER!
后来才知道产品部要全国50多个城市的数据,所以每个城市的我都要重复这样干一遍。
这时才想起跨库查询了。
1.开通分布式查询权限
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
2.查询
select a.ProjCode as '楼盘编号',b.projname as '楼盘名称',count(1) as '房源量' from
openrowset( 'SQLOLEDB ', 'IP地址(服务器名)'; '用户名'; '密码',[数据库名].[dbo].[表名]) a
, openrowset( 'SQLOLEDB ', 'IP地址(服务器名)'; '用户名'; '密码',[数据库名].[dbo].[表名]) b
where a.ProjCode=b.newcode GROUP by a.ProjCode ,b.projname order by count(1) desc
3.然后换城市,只需要改IP、 库名和表名了。
4.关闭
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure
相关文档:
一.数据完整性
就是为了防止数据库中存在不符合语义规定的数据,和防止因输入输出错误而造成的无效操作或者错误信息而提出的,制定的一些对元组、属性和域的一些约束和规定。
解决办法由:规则,默认值,约束和触发器等。
二.约束
......
USE [sfaecrm]
GO
/****** 对象: StoredProcedure [dbo].[proc_insert] 脚本日期: 05/29/2009 06:16:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[proc_insert] (@tablename varchar(256))
as
begin
set ......
表中有一些记录内容重复,也就是说这些记录除了ID不同之外,其他的信息都相同。需要把重复的记录保留一条,剩下的删除
--第一种方法
delete from temp where id not IN (select min(id) from temp group by col1,col2)
--对col1,col2,即要删除的数据col1,col2两个列都相同,删除id大的行
--第二种方法
with a as
(sel ......
CONVERT 函数 [数据类型转换]
--------------------------------------------------------------------------------
功能
返回转换成提供的数据类型的表达式。
语法
CONVERT ( data type, expression [ , format-style ] )
参数
data&nbs ......
转自
http://topic.csdn.net/t/20050110/09/3711952.html
access中时间要用#,不是双引号
select * from kc where rq < #2000-01-01# and rq>#2002-01-01#
不要用between,它的效率泰低
使用# 而不是 ......