sql语句 访问不同数据库服务器中的数据库对象的方法
在我们做数据库程序开发的时候,经常会遇到这种情况:需要将一个数据库服务器中的数据导入到另一个数据库服务器的表中。通常我们会使用这种方法:先把一个数据库中的数据取出来放到某出,然后再把这些数据一条条插入到目的数据库中,这种方法效率较低,写起程序来也很繁琐,容易出错。另外一种方法是使用bcp或BULK INSERT语句,将数据导入到一个文件中,再从此文件中导出到目的数据库,这种方法虽然效率稍高,但也有很多不如意的地方,单是在导入时怎样找到另外一台机器上的数据导入文件就很麻烦。
最方便的一种方法,我想也是效率最高的方法,应该是这样:
比如有两个数据库服务器:ln和gx,里面都有一个数据库taxitemp(也可以不同名),数据库里有一个表,叫users,我们现在想把ln中的users数据导入到gx中,可以这样写sql语句(假设现在连接的是zl数据库):
insert into gx.taxitemp.dbo.users
select * from users
这样,通过一条sql语句就完成了不同数据库服务器之间的数据复制。
有人会说,这种sql语句我也会写,我也想到了,但是没办法执行。
的确,单纯的这样一条语句没办法执行,因为数据库不知道gx是什么服务器,也不知道怎样登录,当然会报错。
我们可以这样解决注册远程数据库服务器和登录的问题:
注册远程数据库服务器:
EXEC sp_addlinkedserver 'gx', N'SQL Server'
注册远程数据库服务器的登录方法:
EXEC sp_addlinkedsrvlogin 'gx', 'false', NULL, 'sa', 'zz'
只要我们先执行远程数据库服务器注册和登录方法注册,然后就可以把远程数据库当成本地数据库使用了
相关文档:
表结构和数据如下(表名Test):
NO VALUE NAME
1 a 测试1
1 b 测试2
1 c ......
getdate //获得系统当前日期
datepart //获取日期指定部分(年月日时分表)
getdate()函数:取得系统当前的日期和时间。返回值为datetime类型的。
用法:getdate()
例子:
select getdate() as dte,dateadd(day,-1,getdate()) as nowdat
输出结果:
dte nowdat
--------------------------- ----------------- ......
有些时候我们需要查询数据库中的时间字段,例如2009-11-11 11:11:11:111 这样的时间格式。
而我们有些时候不用把整个的字段查询出来,需要把前面的日期截取出来,或者把后面的时间截取出来。
这个时候就要用到SQL里面的时间函数了:
select convert(char(10),字段名,108) from 表名
上述语句是将后面的时间查询出来,格 ......
在SQL UPDATE语句中,对换两个变量的值,不需要临时变量。=右侧的值在整个UPDATE语句中都是一致的;所有的更新同时发生,而不是一个接着一个发生。
例如:
UPDATE offenceTeam
SET goalShooter=wingAttack,
& ......
SQL数据恢复软件 Log Explorer for SQL Server v4.0
log explorer使用的几个问题
1)对数据库做了完全 差异 和日志备份
备份时选用了删除事务日志中不活动的条目
再用Log explorer打试图看日志时
提示No log recorders found that match the filter,would you like to view unfiltered ......