sql语句跨服务器跨数据库执行
第一种方法:
select * from OPENDATASOURCE('SQLOLEDB','server=服务器ip;uid=sa;pwd=密码').库名.dbo.表名
第二种方法:
先使用联结服务器:
EXEC sp_addlinkedserver '别名','','MSDASQL',NULL,NULL,'DRIVER={SQL Server};SERVER=远程名;UID=用户;PWD=密码;'
exec sp_addlinkedsrvlogin @rmtsrvname='别名',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密码'
GO
然后你就可以如下:
select * from 别名.库名.dbo.表名
insert 库名.dbo.表名 select * from 别名.库名.dbo.表名
select * into 库名.dbo.新表名 from 别名.库名.dbo.表名
go
如果是Access数据库
select * from OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','my.mdb')...表名
Access数据库,别名方法
sp_addlinkedserver 'jcmdb','OLE DB Provider for Jet','Microsoft.Jet.OLEDB.4.0','my.mdb';
sp_addlinkedsrvlogin 'jcmdb', false, 'sa', 'Admin', NULL
以上两行只要在查询分析器中执行一次。
然后就可以在程序中使用:
select * from jcmdb...表名
select * from OPENDATASOURCE('SQLOLEDB','server=服务器ip;uid=sa;pwd=密码').库名.dbo.表名
第二种方法:
先使用联结服务器:
EXEC sp_addlinkedserver '别名','','MSDASQL',NULL,NULL,'DRIVER={SQL Server};SERVER=远程名;UID=用户;PWD=密码;'
exec sp_addlinkedsrvlogin @rmtsrvname='别名',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密码'
GO
然后你就可以如下:
select * from 别名.库名.dbo.表名
insert 库名.dbo.表名 select * from 别名.库名.dbo.表名
select * into 库名.dbo.新表名 from 别名.库名.dbo.表名
go
如果是Access数据库
select * from OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','my.mdb')...表名
Access数据库,别名方法
sp_addlinkedserver 'jcmdb','OLE DB Provider for Jet','Microsoft.Jet.OLEDB.4.0','my.mdb';
sp_addlinkedsrvlogin 'jcmdb', false, 'sa', 'Admin', NULL
以上两行只要在查询分析器中执行一次。
然后就可以在程序中使用:
select * from jcmdb...表名