異なるサーバー上の異なるSQL Serverデータベース間の操作

クロスサーバの操作は何ですか?

リモートサーバ上のローカルデータベースに接続することができるクロスサーバ操作は、あなたは、このようなCRUDとして、データベースの他の側にデータベース操作を実行することができます。

なぜクロスサーバー操作

データ量の増加とともに、事業拡大のボリュームは、ビジネスニーズので、時々、異なるサーバーからのデータがクロスサーバ運用の必要性について、この時間を統合し、異なるデータベースに別のサーバーにインストールする必要があります。

クロスサーバ運用にどのようなツールがありますか?

DBLINK(データベース・リンク)、名前が示唆するだけで、電話回線のように、リンクデータベースで、我々はローカルデータベースを横断しなければならないチャネルである、テーブル内のアクセスデータ別のデータベース、ローカルデータベースには、リモートデータベースのデータベース・リンクを作成する必要がありますあなたは、ローカル・データベースのデータベース・リンクを介するなどのローカルデータベースへのアクセスなどのリモートデータベーステーブル内のデータにアクセスすることができます。

一つの方法:

SQL Serverのリモートリンクを作成します。

ローカルデータベースにログオンします - >サーバーオブジェクト - >リンクサーバー(右) - >新規リンクサーバー

2.ダイアログボックスで、適切な情報を入力します。

「セキュリティ」の左側にある3.次のページでは、他のデータベースにアカウントのパスワードを入力してください

正常に作成した後、以下のチャートは、あなたが作成したリンクサーバーを参照することができ4.「OK」

5.確認するために、他のサーバの優れたルックアップテーブルを作成しようとするには次のリンクを使用します

 オリジナル住所:http://baijiahao.baidu.com/s?id=1601340639397887562&wfr=spider&for=pc

 

 

第二の方法:

同じサーバの異なるデータベース

SELECT  *  からデータベース名...テーブル名またはSELECT  *  からデータベース名.dbo。テーブル

1.リンクサーバーを作成します。

1.1リンク名を作成します

execし sp_addlinkedserverをのLinkName 「」SQLOLEDB リモートサーバー名またはIPアドレスが   - カスタムインスタンス名プラスを持っている「と/の例は、」

 / * 例:幹部sp_addlinkedserverを「TonyLink」、「 」、 'SQLOLEDB'、 '192.168.2.110' * /  

1.2ログインを作成(またはマッピングと呼ばれるリンクサーバーのログイン名を作成します)(ただ、片道を選択してください)

Windows認証モードへ1.2.1ログイン

幹部 sp_addlinkedsrvloginが' のLinkName '   - 或幹部sp_addlinkedsrvloginが'のLinkName'、 'true'に

 / * 例如:幹部sp_addlinkedsrvloginが'TonyLink'   * /  

1.2.2 SQL認証では、ログオンします                                                                    

execし sp_addlinkedsrvloginが' のLinkNameがある'' falseに'NULL' ユーザ名'' パスワード' 

/ * sp_addlinkedsrvloginがExecの'TonyLink'、NULL、 'SA' 'をfalseに'、 '123456':例えば/ *

 

2.リンクサーバーのデータ操作

2.1クエリ

SELECT  *  からのテーブルのリンク名データベーススキーマ名名名... 

/ * 例:TonyLink.LoadData.dbo.XimaAreaからSELECT * * /

データの新しいローカルテーブルに2.2リモートデータベースクエリ(テーブルはローカルに事前に存在する必要はない、それが自動的に作成されます)

SELECT   *  INTOテーブル名から...のLinkNameデータベーステーブルのスキーマ名名名

/ * 例:Newtb fromTonyLink.LoadData.dbo.XimaAreaに選択* / *

2.3アップデート

更新 ...のLinkNameは、データベース・スキーマ名テーブルの名前である一連のフィールド=  WHEREフィールド= 条件

/ * 例:ArealD 8 =更新TonyLink.LoadData.dbo.XimaArea設定領域=「中国」領域* /

2.4削除

削除 ...のLinkNameは、データベース・スキーマ名テーブルの名前であるフィールド名= 条件/ * 例:ArealDは= TonyLink.LoadData.dbo.XimaAreaの削除1 * /

とき、もはや使用されているリンクサーバーを削除しません

execの sp_dropserverを' リンク名'' droplogins '

行セット関数によって3(OPENQUERY / OPENROWSET / OPENDATASOURCE)動作

3.1 OPENQUERY方法(作成したばかりのリンクサーバーを必要とします):

3.1.1クエリ

SELECT  *  から OPENQUERY(リンク名、' データベーススキーマ名名テーブルからSELECT * ' 

/ * たとえば:OPENQUERY(TonyLink、 'LoadData.dbo.XimaAreaからSELECT *')SELECT * FROM * /

3.1.2インポート

リモートテーブルに(ローカルテーブルは、事前の存在を必要とする)ローカルテーブルを3.1.2.1(表に2つの列の間の対応関係)
INSERT  OPENQUERY(リンク名、' データベーススキーマ名名テーブルからSELECT * .. 'SELECT  *  からローカルテーブル

/ * 例えば:INSERT OPENQUERY(TonyLink、 'LoadData.dbo.XimaArea SELECTからエリア')TTTエリアSELECTから* /
ローカルテーブル(ローカルテーブルは、事前の存在を必要とする)(2つのテーブル間の対応の列)指定されたリモート表の列を導入3.1.2.2
私はnsert OPENQUERY(リンク名、' .. * SELECTスキーマ名データベーステーブル名の名前から' )(列、行...)SELECTカラム、カラム... からローカルテーブル/ *を例えば:選択」、(TonyLinkをOPENQUERY挿入します * (jxsName、荷受人、アドレス))」からLoadData.dbo.ximajxs 
    jxsName、荷受人を選択、TTTアドレスから   / * 




3.1.3アップデート

update openquery(linkname, 'select * from 数据库名.架构名.表名') set 字段='' where 字段='条件'

/*例如:update openquery(TonyLink, 'select * from LoadData.dbo.ximajxs') set JxsName='北京有限公司' where jxsId=10 */

3.1.4 删除

delete openquery(linkname, 'select * from 数据库名.架构名.表名') where 字段名='条件'

/*例如:delete openquery(TonyLink, 'select * from LoadData.dbo.ximajxs') where jxsId=10 */

3.2 openrowset:

3.2.1 查询

select * from openrowset('SQLOLEDB', 'SQL服务器名'; '用户名'; '密码', 数据库名.dbo.表名)

报错问题:

解决方法:

在数据库服务实例名(如图1-3,GP-PC\sql2008位置)点击鼠标右键【方面】,在窗口【查看方面】— 点击【常规】— 【方面】— 选择【外围应用配置器】,找到【AdHocRemoteQueriesEnabled】— 选择【True】— 点击【确定】

3.2.2 生成本地表

select * into 表名 from openrowset('SQLOLEDB', 'SQL服务器名'; '用户名'; '密码', 数据库名.dbo.表名)

3.2.3 把本地表导入到远程表

insert openrowset('SQLOLEDB', 'SQL服务器名'; '用户名'; '密码', 数据库名.dbo.表名)

select * from 本地表

3.2.4 更新本地表

update b
set b.address = a.area
from openrowset('SQLOLEDB', '192.168.2.110'; 'sa'; '123456', LoadData.dbo.XimaArea) as a
inner join ttt b
on a.areaid=b.areaid

3.3 opendatasource

3.3.1  查询

select * from opendatasource('SQLOLEDB', 'Data Source=192.168.2.110; uid=sa; pwd=123456').LoadData.dbo.XimaArea

 4. 具体例子

if exists(select 1 from master.dbo.sysservers where srvname='linktest')
begin
    exec sys.sp_droplinkedsrvlogin 'linktest', 'sa'
    exec sys.sp_dropserver 'linktest'
end

exec sys.sp_addlinkedserver
    @server = 'linktest', -- sysname
    @srvproduct = N'', -- nvarchar(128)
    @provider = N'SQLOLEDB', -- nvarchar(128)
    @datasrc = N'192.168.2.110' -- nvarchar(4000)

exec sys.sp_addlinkedsrvlogin 
    @rmtsrvname = 'linktest', -- sysname
    @useself = 'false', -- varchar(8)
    @locallogin = null, -- sysname
    @rmtuser = 'sa', -- sysname
    @rmtpassword = '123456' -- sysname

select * from linktest.LoadData.dbo.ximalss

if exists(select 1 from master.dbo.sysservers where srvname='linktest')
begin
    exec sys.sp_droplinkedsrvlogin 'linktest', 'sa'
    exec sys.sp_dropserver 'linktest'
end

go

参考链接:https://www.cnblogs.com/w-y-f/archive/2012/05/07/2488474.html

 

 

 

 

 

 

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/zhaoyl9/p/11527090.html