sql server 跨庫操做

SELECT *FROM OPENDATASOURCE('SQLOLEDB','Data Source=sql服務器名;User ID=用戶名;Password=密碼;').PersonDb.dbo.Table_1sql

exec sp_dropserver 'SQL2','droplogins'數據庫

exec sp_addlinkedserver @server= 'SQL2', @srvproduct= '',
@provider='SQLNCLI', @datasrc = 'sql服務器名' --登陸連接服務器
exec sp_addlinkedsrvlogin @rmtsrvname = 'SQL2',
@useself = 'false ', @locallogin = null,
@rmtuser ='用戶名', @rmtpassword = '密碼'服務器

select * from SQL2.PersonDb.dbo.Table_1ide

 

-------------------------------------------------------------------------------------------------------測試

 

 

用openrowset鏈接遠程SQL或插入數據spa

 

--若是隻是臨時訪問,能夠直接用openrowsetcode

 

--查詢示例server

 

select * from openrowset('SQLOLEDB'ip

 

,'sql服務器名';'用戶名';'密碼'io

 

,數據庫名.dbo.表名)

 

 

 

--導入示例

 

select * into 表 from openrowset('SQLOLEDB'

 

,'sql服務器名';'用戶名';'密碼'

 

,數據庫名.dbo.表名)

 

 

--建立連接服務器

 

exec sp_addlinkedserver  'srv_lnk','','SQLOLEDB','遠程服務器名或ip地址'

 

exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用戶名','密碼'

 

go

 

 

--查詢示例

 

select * from srv_lnk.數據庫名.dbo.表名

 

 

--導入示例

 

select * into 表 from srv_lnk.數據庫名.dbo.表名

 

 

--之後再也不使用時刪除連接服務器

 

exec sp_dropserver 'srv_lnk','droplogins'

 

go

 

--下面的示例訪問來自某個表的數據,該表在 SQL Server 的另外一個實例中。

 

SELECT *FROM OPENDATASOURCE('SQLOLEDB','Data Source=ServerName;User ID=MyUID;Password=MyPass').Northwind.dbo.Categories

 

下面是個查詢的示例,它經過用於 Jet 的 OLE DB 提供程序查詢 Excel 電子表格。

 

SELECT *FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:Financeaccount.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions

 

 

 

例如:

 

SELECT *

 

FROM OPENQUERY(Far_MDB, 'SELECT * FROM MDB_Member')

 

這就是從個人連接服務器當中去查詢MDB_Member表的數據

 

備註:

 

一、關於連接服務器的詳細狀況請參閱聯機叢書中的sp_addlinkedserver、 sp_addlinkedsrvlogin、sp_addserver、sp_dropserver、sp_serveroption、sp_linkedservers等系統級存儲過程。

 

二、關於此連接服務器的建立及其使用在不一樣環境下(所有內網服務器、一內網一公網服務器、全公網服務器)測試,均告經過。

 

三、有時候在存儲過程當中訪問連接服務器的時候可能會碰到以下的提示,必需要對ANSI warning 和ANSI nulls進行設置,這時候按照以下的方法進行設置:

 

設置本地數據庫的屬性-->鏈接-->選上ANSI warning 和 ANSI nulls

 

如何用sql語句進行跨庫查詢

 

在機器B上的數據庫database2中建立一個臨時表#tmp,

 

內容就是機器A上的數據庫database1裏面的Table1。

 

如何用sql語句完成?(不借用dts等)

 

SQL code --建立連接服務器

 

exec sp_addlinkedserver  'ITSV','','SQLOLEDB','遠程服務器名或ip地址'

 

exec sp_addlinkedsrvlogin 'ITSV','false',null,'用戶名','密碼'

 

--查詢示例

 

select * from ITSV.數據庫名.dbo.表名

 

--導入示例

 

select * into 表 from ITSV.數據庫名.dbo.表名

 

--之後再也不使用時刪除連接服務器

 

exec sp_dropserver 'ITSV','droplogins'

 

--鏈接遠程/局域網數據(openrowset/openquery/opendatasource)

 

--一、openrowset

 

--查詢示例

 

select * from openrowset('SQLOLEDB','sql服務器名';'用戶名';'密碼',數據庫名.dbo.表名)

 

--生成本地表

 

select * into 表 from openrowset('SQLOLEDB','sql服務器名';'用戶名';'密碼',數據庫名.dbo.表名)

 

--把本地表導入遠程表

 

insert openrowset('SQLOLEDB','sql服務器名';'用戶名';'密碼',數據庫名.dbo.表名)

 

select *from 本地表

 

--更新本地表

 

update b

 

set b.列A=a.列A

 

from openrowset('SQLOLEDB','sql服務器名';'用戶名';'密碼',數據庫名.dbo.表名)as a inner join 本地表 b

 

on a.column1=b.column1

 

--openquery用法須要建立一個鏈接

 

--首先建立一個鏈接建立連接服務器

 

exec sp_addlinkedserver  'ITSV','','SQLOLEDB','遠程服務器名或ip地址'

 

--查詢

 

select *

 

FROM openquery(ITSV, 'SELECT *  FROM 數據庫.dbo.表名')

 

--把本地表導入遠程表

 

insert openquery(ITSV, 'SELECT *  FROM 數據庫.dbo.表名')

 

select * from 本地表

 

--更新本地表

 

update b

 

set b.列B=a.列B

 

FROM openquery(ITSV, 'SELECT * FROM 數據庫.dbo.表名') as a

 

inner join 本地表 b on a.列A=b.列A

 

--三、opendatasource/openrowset

 

SELECT   *

 

FROM   opendatasource('SQLOLEDB', 'Data Source=ip/ServerName;User ID=登錄名password=密碼' ).test.dbo.roy_ta

 

--把本地表導入遠程表

 

insert opendatasource('SQLOLEDB', 'Data Source=ip/ServerName;User ID=登錄名password=密碼').數據庫.dbo.表名

 

select * from 本地表

 

用   連接服務器

 

OPENROWSET

 

OPENDATASOURCE

 

均可以

 

連接服務器.database1.dbo.table1

 

連接服務器.database1.dbo.table1

 

SQL code

 

select * into #

 

from openrowset('sqloledb','ip';'sa';'','select * from pubs.dbo.jobs')

 

若是隻是偶爾使用   就用opendatasource/openrowset   固定的頻繁使用建linked   server

相關文章
相關標籤/搜索