自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL Server跨數(shù)據(jù)庫服務(wù)器查詢和跨表更新的詳細(xì)操作

數(shù)據(jù)庫 SQL Server
本文我們主要介紹了SQL Server跨數(shù)據(jù)庫服務(wù)器查詢和跨表更新的詳細(xì)操作方法,希望能夠?qū)δ兴鶐椭?/div>

SQL Server數(shù)據(jù)庫跨數(shù)據(jù)庫服務(wù)器查詢跨表更新的相關(guān)知識是本文我們主要要介紹的內(nèi)容,接下來我們就通過一個實(shí)例來介紹這一過程。實(shí)例是這樣的:想實(shí)現(xiàn)的功能很簡單, 在我的本地一個表用來保存省的信息: T_Province,在另外一臺服務(wù)器上也有一個保存省的表province,其中有我本地沒有的provience_name_en和provience_id信息.我希望將它們保存到我的表中.

準(zhǔn)備工作

首先我在本地 T_Province 表中添加了 ProvinceNameEn 和 ProvinceId 兩個字段.接下來就要想辦法為這兩個字段填充數(shù)據(jù).

跨服務(wù)器查詢

首先需要解決跨服務(wù)器查詢的問題. 先來看我的最終實(shí)現(xiàn):

--創(chuàng)建鏈接服務(wù)器

  1. exec sp_addlinkedserver @server'SQL2', @srvproduct'',  
  2. @provider='SQLNCLI', @datasrc = '192.168.9.123' --登錄鏈接服務(wù)器   
  3. exec sp_addlinkedsrvlogin @rmtsrvname = 'SQL2',   
  4. @useself = 'false ', @locallogin = null,   
  5. @rmtuser ='sa', @rmtpassword = '123456'  

 

上面使用sp_addlinkedserver和sp_addlinkedsrvlogin 與服務(wù)器建立了鏈接, 接下來就可以直接查詢遠(yuǎn)程服務(wù)器上的數(shù)據(jù)了:

 

  1. --創(chuàng)建臨時表   
  2. create table #t (ProvinceName nvarchar(50), ProvinceNameEn nvarchar(50),   
  3. ProvinceID nvarchar(50)) INSERT INTO #t(ProvinceName, ProvinceNameEn, ProvinceID)   
  4. ( SELECT localDB.ProvinceName, serverDB.province_name_en, serverDB.province_ID   
  5. FROM T_Province as localDB, SQL2.bdg_web_retail.dbo.province   
  6. as serverDB WHERE localDB.ProvinceName = serverDB.Province_Name )   
  7. --跨服務(wù)器查詢生成的臨時表結(jié)果  
  8. SELECT * FROM #t 

 

通過上面的SQL語句,我將兩個服務(wù)器,兩個數(shù)據(jù)庫的兩個表做了內(nèi)聯(lián)查詢,并且將結(jié)果保存到了本地的臨時表#t中.

跨表更新

接下來希望將#t 中的數(shù)據(jù)更新到T_Province表中.其實(shí)跨表更新很簡單, 但是一開始頭腦中這個概念, 不知道set子句如何寫.下面是最后的成果:

--更新本地的 T_Province表數(shù)據(jù)

  1. UPDATE T_Province SET T_Province.ProvinceNameEn = ( SELECT #t.ProvinceNameEn) , T_Province.ProvinceID = (SELECT #t.ProvinceID)   
  2. ROM T_Province, #t WHERE T_Province.ProvinceName = #t.ProvinceName 

 

需要注意的是我最開始使用了Declare建立表變量的形式創(chuàng)建了@t,但是執(zhí)行update操作時提示"必須聲明標(biāo)量變量@t", 換成了臨時表#t就沒有問題。

跨服務(wù)器查詢相關(guān)知識

下面對跨服務(wù)器查詢用到的知識進(jìn)行講解.

創(chuàng)建鏈接服務(wù)器 sp_addlinkedserver

創(chuàng)建鏈接服務(wù)器。鏈接服務(wù)器讓用戶可以對OLE DB 數(shù)據(jù)源進(jìn)行分布式異類查詢。在使用 sp_addlinkedserver 創(chuàng)建鏈接服務(wù)器后,可對該服務(wù)器運(yùn)行分布式查詢。如果鏈接服務(wù)器定義為 SQL Server 實(shí)例,則可執(zhí)行遠(yuǎn)程存儲過程。

語法

sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ] [ , [ @provider= ] 'provider_name' ] [ , [ @datasrc= ] 'data_source' ] [ , [ @location= ] 'location' ] [ , [ @provstr= ] 'provider_string' ] [ , [ @catalog= ] 'catalog' ]

參數(shù)

[ @server = ] 'server'

要創(chuàng)建的鏈接服務(wù)器的名稱。server 的數(shù)據(jù)類型為 sysname,沒有默認(rèn)值。

[ @srvproduct = ] 'product_name'

要添加為鏈接服務(wù)器的OLE DB 數(shù)據(jù)源的產(chǎn)品名稱。product_name 的數(shù)據(jù)類型為 nvarchar(128),默認(rèn)值為 NULL。如果為 SQL Server,則不必指定 provider_name、data_source、location、provider_string 和 catalog。

[ @provider = ] 'provider_name'

與此數(shù)據(jù)源對應(yīng)的 OLE DB 訪問接口的唯一編程標(biāo)識符 (PROGID)。對于當(dāng)前計(jì)算機(jī)中安裝的指定 OLE DB 訪問接口,provider_name 必須唯一。provider_name 的數(shù)據(jù)類型為 nvarchar(128),默認(rèn)值為 NULL;但如果忽略 provider_name,則使用 SQLNCLI。SQLNCLI 是 SQL 本機(jī) OLE DB 訪問接口。OLE DB 訪問接口應(yīng)以指定的 PROGID 在注冊表中注冊。

[ @datasrc = ] 'data_source'

由OLE DB 訪問接口解釋的數(shù)據(jù)源的名稱。data_source 的數(shù)據(jù)類型為 nvarchar(4000)。data_source 作為 DBPROP_INIT_DATASOURCE 屬性傳遞以初始化 OLE DB 訪問接口。

[ @location = ] 'location'

由 OLE DB 訪問接口解釋的數(shù)據(jù)庫的位置。location 的數(shù)據(jù)類型為 nvarchar(4000),默認(rèn)值為 NULL。location 作為 DBPROP_INIT_LOCATION 屬性傳遞以初始化 OLE DB 訪問接口。

[ @provstr = ] 'provider_string'

OLE DB 訪問接口特定的連接字符串,它可標(biāo)識唯一的數(shù)據(jù)源。provider_string 的數(shù)據(jù)類型為 nvarchar(4000),默認(rèn)值為 NULL。provstr 或傳遞給 IDataInitialize 或設(shè)置為 DBPROP_INIT_PROVIDERSTRING 屬性以初始化 OLE DB 訪問接口。

在針對 SQL 本機(jī)客戶端 OLE DB 訪問接口創(chuàng)建鏈接服務(wù)器后,可將 SERVER 關(guān)鍵字用作 SERVER=servername\instancename 來指定實(shí)例,以指定特定的 SQL Server 實(shí)例。servername 是運(yùn)行 SQL Server 的計(jì)算機(jī)名稱,instancename 是用戶將連接到的特定 SQL Server 實(shí)例的名稱。

[ @catalog = ] 'catalog'

與 OLE DB 訪問接口建立連接時所使用的目錄。catalog 的數(shù)據(jù)類型為 sysname,默認(rèn)值為 NULL。catalog 作為 DBPROP_INIT_CATALOG 屬性傳遞以初始化 OLE DB 訪問接口。在針對 SQL Server 實(shí)例定義鏈接服務(wù)器時,目錄指向鏈接服務(wù)器映射到的默認(rèn)數(shù)據(jù)庫。

登錄鏈接服務(wù)器 sp_addlinkedsrvlogin

語法

sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname' [ , [ @useself = ] 'useself' ] [ , [ @locallogin = ] 'locallogin' ] [ , [ @rmtuser = ] 'rmtuser' ] [ , [ @rmtpassword = ] 'rmtpassword' ]

參數(shù)

[ @rmtsrvname = ] 'rmtsrvname'

應(yīng)用登錄映射的鏈接服務(wù)器的名稱。rmtsrvname 的數(shù)據(jù)類型為 sysname,沒有默認(rèn)值。

[ @useself = ] 'useself'

確定用于連接遠(yuǎn)程服務(wù)器的登錄名。useself 的數(shù)據(jù)類型為 varchar(8),默認(rèn)值為 TRUE。

值為true 時指定登錄使用自己的憑據(jù)連接 rmtsrvname,忽略 rmtuser 和 rmtpassword 參數(shù)。false 指定使用 rmtuser 和 rmtpassword 參數(shù)連接指定 locallogin 的 rmtsrvname。如果 rmtuser 和 rmtpassword 也設(shè)置為 NULL,則不使用登錄名或密碼來連接鏈接服務(wù)器。

[ @locallogin = ] 'locallogin'

本地服務(wù)器上的登錄。locallogin 的數(shù)據(jù)類型為 sysname,默認(rèn)值為 NULL。NULL 指定此項(xiàng)應(yīng)用于連接到 rmtsrvname 的所有本地登錄。如果不為 NULL,則 locallogin 可以是 SQL Server 登錄或Windows 登錄。對于 Windows 登錄來說,必須以直接的方式或通過已被授權(quán)訪問的 Windows 組成員身份授予其訪問 SQL Server 的權(quán)限。

[ @rmtuser = ] 'rmtuser'

當(dāng) useself 為 false 時,表示用于連接 rmtsrvname 的用戶名。rmtuser 的數(shù)據(jù)類型為 sysname,默認(rèn)值為 NULL。

[ @rmtpassword = ] 'rmtpassword'

與 rmtuser 關(guān)聯(lián)的密碼。rmtpassword 的數(shù)據(jù)類型為 sysname,默認(rèn)值為 NULL。

使用鏈接服務(wù)器

服務(wù)器名.數(shù)據(jù)庫名.dbo.表名

刪除鏈接服務(wù)器 sp_dropserver

語法

sp_dropserver [ @server = ] 'server' [ , [ @droplogins = ] { 'droplogins' | NULL} ]

參數(shù)

[ @server = ] 'server'

要刪除的服務(wù)器。server 的數(shù)據(jù)類型為 sysname,無默認(rèn)值。server 必須存在。

[ @droplogins = ] 'droplogins' | NULL

指示如果指定了 droplogins,那么對于server,還必須刪除相關(guān)的遠(yuǎn)程服務(wù)器和鏈接服務(wù)器登錄名。@droplogins 的數(shù)據(jù)類型為 char(10),默認(rèn)值為 NULL。

關(guān)于SQL Server跨數(shù)據(jù)庫服務(wù)器查詢和跨表更新的相關(guān)知識就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!

【編輯推薦】

  1. Oracle數(shù)據(jù)庫PL/SQL快捷鍵設(shè)置詳解
  2. Oracle數(shù)據(jù)庫診斷工具RDA的安裝與使用詳解
  3. Oracle數(shù)據(jù)庫GLOBAL_NAMES參數(shù)的詳細(xì)研究
  4. Oracle數(shù)據(jù)庫歸檔模式的切換及其相關(guān)操作詳解
  5. Oracle 10g UNDO表空間過大導(dǎo)致磁盤空間不足的解決
責(zé)任編輯:趙鵬 來源: CSDN博客
相關(guān)推薦

2010-11-09 14:47:46

SQL Server跨

2010-11-08 17:13:21

SQL Server跨

2011-07-14 15:24:26

MSSQL數(shù)據(jù)庫跨數(shù)據(jù)庫查詢

2010-09-26 14:21:43

sql跨服務(wù)器查詢

2010-11-08 17:20:54

SQL Server跨

2020-02-03 14:25:36

跨表MySQL數(shù)據(jù)庫

2010-05-07 09:58:27

SQL Server

2023-11-29 07:34:25

2023-11-30 07:15:57

MySQL數(shù)據(jù)庫

2011-07-28 17:02:59

MYSQL數(shù)據(jù)庫跨表更新數(shù)據(jù)并合

2011-04-01 16:00:35

SQL Server 數(shù)據(jù)庫服務(wù)器

2010-04-01 17:43:56

Oracle實(shí)現(xiàn)跨服務(wù)

2010-07-08 11:23:41

SQL Server還

2010-07-06 13:22:13

SQL Server

2011-03-30 10:52:07

SQL Server數(shù)服務(wù)器

2011-08-03 14:25:16

SQL Server注冊遠(yuǎn)程服務(wù)器數(shù)據(jù)庫

2010-10-28 16:12:01

Oracle數(shù)據(jù)庫配置

2011-04-07 13:53:04

SQL Server數(shù)

2011-08-25 09:46:02

SQL Server數(shù)負(fù)載均衡集群

2010-07-22 16:07:02

SQL Server數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號