***种情况:将a数据库.dbo.a表的数据追加到b数据库.dbo.b表中 (条件:此时b数据库中已创建好了b表)
inert into b数据库.dbo.b表
select * from a数据库.dbo.a表 [where 条件]
此T-SQL语句会有异常 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'b数据库.dbo.b表'中的标识列指定显式值。
原因:b数据库.dbo.b表中某列别设置成自动增长(一般为主键ID)。
解决:把 * 变成 指定 [列名] ,把自动增长的那一列去掉。
第二种情况:将a数据库.dbo.a表的数据复制到b数据库.dbo.b表中 (条件:此时b数据库中没有创建b表或同名的表)
select * into b数据库.dbo.b表 from a数据库.dbo.a表 [where 条件]
执行完此语句后,b数据库中将会创建和a数据库.dbo.a表 一样结构的b表。通过此语句创建的b表没有主键。
1、同服务器 select * from 数据库名.dbo.表名 where 条件
2、不同服务器
SELECT * FROM OpenRowset('MSDASQL', 'Driver=SQL Server;Server=服务器名(或IP);UID=sa;PWD=服务器数据库密码', 数据库名.dbo.表 ) where 条件
SELECT *
FROM OPENROWSET('SQLOLEDB','服务器名(或IP)';'sa';'服务器数据库密码',
'查询的sql语句')
SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=服务器名(或IP);User ID=sa;Password=服务器数据库密码'
).数据库名.dbo.表 where 条件