如何方便的建立遠程鏈接服務器

 

-- 很多朋友問局域網多數據庫服務器訪問該如何操作?下面簡單說明如何配置遠程鏈接訪問。

/*********** 環境說明 ***********/

--http://www.wpf123.com

-- 源機器 IP  10. 0.0.211 ,在該機器所在數據庫建立與目標機器的遠程數據庫鏈接。

-- 目標機器 IP  10. 0.0.222 

-- 步驟(一)是指直接用 IP 進行遠程鏈接,個人覺得用 IP 鏈接雖然麻煩,但是直觀而且在多服務器操作時不會出現誤鏈接的情況。

-- 步驟(二)是指直接用別名進行遠程鏈接,較方便;但在高壓力,大腦暫時短路情況下容易出現誤鏈接數據庫情況發生。

 

/*********** 步驟(一) ***********/

-- 建立連接服務器

EXEC sp_addlinkedserver   '10.0.0.222' , 'SQL Server'

 

/*-- 如果數據庫有架構名需要做遠程登錄之間的映射

-- 創建鏈接服務器上遠程登錄之間的映射

--http://www.wpf123.com

EXEC sp_addlinkedsrvlogin '10.0.0.222','false','SA',' 架構名 ',' 登錄密碼 '

*/

-- 查詢數據

-- 含架構名

select top 10 * from [10.0.0.222]. 數據庫名 . 架構名 . 表名

-- 不含架構名

select top 10 * from [10.0.0.222]. 數據庫名 . dbo. 表名

 

 

-- 查看鏈接服務器信息

select name , product, provider, data_source, query_timeout, lazy_schema_validation, is_remote_login_enabled, is_rpc_out_enabled

  from sys.servers

where is_linked= 1

 

/*********** 建立步驟(二) ***********/

/*-- 如果用 IP 連接覺得麻煩,可以新建別名

-- 配置鏈接服務器屬性

exec sp_serveroption '222','name','10.0.0.222'

*/

-- 查詢數據

--http://www.wpf123.com

-- 含架構名

select top 10 * from 222. 數據庫名 . 架構名 . 表名

-- 不含架構名

select top 10 * from 222. 數據庫名 . dbo. 表名

 

 

-- 刪除鏈接服務器登錄名映射

exec sp_droplinkedsrvlogin '10.0.0.222' ,NULL

 

-- 刪除鏈接服務器屬性

exec sp_dropserver '222'

 

--注:如果執行 刪除鏈接服務器時提示如下錯誤時,

消息 15190,級別 16,狀態 1,過程 sp_dropserver,第 56 行
仍有對服務器 'XXXX' 的遠程登錄或鏈接登錄。

執行

exec sp_dropserver ' 鏈接服務器 ' , 'droplogins'

 

 select * from [Form_016336CC-C7FA-43D2-9EA5-C3F9A5B47A50_0]


use 庫名 

go

SELECT objtype, objname, name, value
FROM fn_listextendedproperty(defaultdefaultdefaultdefaultdefaultdefaultdefault);

select * from sys.extended_properties

SELECT objtype, objname, name, value 
FROM fn_listextendedproperty(NULL'schema''dbo''table''form''column'default);

select * from information_schema.columns where table_name= 'form'


SELECT DISTINCT 
      
TOP 100 PERCENT isnull(p.name,''AS 父對象, o.xtype, 
      
CASE o.xtype WHEN 'C' THEN 'CHECK 約束' WHEN 'D' THEN '默認值或DEFAULT約束'
       
WHEN 'F' THEN 'FOREIGNKEY約束' WHEN 'L' THEN '日誌' WHEN 'FN' THEN '標量函數'
       
WHEN 'IF' THEN '內嵌表函數' WHEN 'P' THEN '存儲過程' WHEN 'PK' THEN 'PRIMARYKEY約束'
       
WHEN 'RF' THEN '複製篩選存儲過程' WHEN 'S' THEN '系統表' WHEN 'TF' THEN '表函數'
       
WHEN 'TR' THEN '觸發器' WHEN 'U' THEN '用戶表' WHEN 'UQ' THEN 'UNIQUE 約束'
       
WHEN 'V' THEN '視圖' WHEN 'X' THEN '擴展存儲過程' WHEN 'R' THEN '規則' ELSE NULL
       
END AS 類型, o.name AS 對象名, o.crdate AS 創建時間, o.refdate AS 更改時間, 
      c.
text AS 聲明語句,OBJECTPROPERTY(o.id, N'IsMSShipped')
FROM dbo.sysobjects o Left JOIN
      dbo.sysobjects p 
ON o.parent_obj = p.id LEFT OUTER JOIN
      dbo.syscomments c 
ON o.id = c.id
WHERE --(o.xtype IN ('C','D','F','PK','UQ','L','FN','IF','TF','TR','P','R','RF','X','S','U','V')) AND 
      (OBJECTPROPERTY(o.id, N'IsMSShipped'= 0AND (isnull(p.name,''<> N'dtproperties'and o.xtype = 'U'
ORDER BY o.xtype DESC


if exists(select 1 from sysobjects  where     id   =   object_id'BarCode'and type   =   ''
      
drop table BarCode 
go 

/*==============================================================*/ 
/*   Table:   BarCode      http://www.wpf123.com                                                                  */ 
/*==============================================================*/ 
create   table   BarCode   ( 
      ID    
int    not   null
      Style   
char(18null
      Content 
varchar(512null
      Height  
int  null
      Wdith   
int  null
      Remark 
varchar(512null
      
constraint   PK_BARCODE   primary   key   (ID) 

go 

select * from Form where id = '016336CC-C7FA-43D2-9EA5-C3F9A5B47A50'
select * from [Form_016336CC-C7FA-43D2-9EA5-C3F9A5B47A50_0]

select o.name,c.text,'N' from [InsulationExpertSystem_CD_2010-02-16_backup].dbo.sysobjects o ,dbo.syscomments c 
     
where o.id = c.id and o.xtype = 'V' and o.name = 'View_1'


--創建鏈接服務器:
exec master.sys.sp_addlinkedserver 'srv_lnk','','SQLOLEDB','DEVELOPPC-PC'
exec master.sys.sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','sa'
exec master.sys.sp_serveroption 'srv_lnk','rpc out','true' --這個允許調用鏈接服務器上的存儲過程
go
--exec master.sys.sp_dropserver 'srv_lnk','droplogins' --不用就刪除
--
go

 

用SQL語句將遠程SQL Server數據庫中表數據導入到本地數據庫相應的表中

 怎樣用SQL語句將一個遠程SQL Server數據庫中各個表的數據導入到本地數據庫相應的表中

      http://www.wpf123.com

  怎樣用SQL語句將一個遠程SQL Server數據庫中各個表的數據導入到本地數據庫相應的表中?
  表結構完全相同,聽說DTS比較方便,但是不會用

  一、方法一

  1、遠程數據庫註冊到本地的方法

 

exec sp_addlinkedserver '名稱','','SQLOLEDB','遠程數據庫的地址'

exec sp_addlinkedsrvlogin '名稱','false','本地用戶名稱','遠程用戶名稱','遠程用戶密碼'

 

  2、倒入表

 

insert 數據庫.dbo.表
select * from 遠程名稱.dbo.表 

 

  建立了連接後,試試看

  二、方法二

  訪問不同電腦上的數據庫(遠程訪問,只好聯好網就一樣),如果經常訪問或數據量較大,建議用鏈接服務器方法。

  1、創建鏈接服務器

 

exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','遠程服務器名或IP地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用戶名','密碼'
exec sp_serveroption 'srv_lnk','rpc out','true'  --這個允許調用鏈接服務器上的存儲過程
go 


   2、使用示例

 

 

--查詢示例
select * from srv_lnk.數據庫名.dbo.表名

--導入示例
select * into 表 from srv_lnk.數據庫名.dbo.表名

go 

 

   3、若不再使用時,刪除鏈接服務器

 

exec sp_dropserver 'srv_lnk','droplogins' 

 


  三、方法三

  如果只是臨時訪問,可以直接使用openrowset。 

  1、示例1

 

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

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


  2、示例2(此示例使用測試正常)

 

 

insert 數據庫名稱.dbo.表
select * from 
from  openrowset('MSDASQL',
'DRIVER={SQL Server};SERVER=遠程服務器地址;UID=用戶名;PWD=密碼',表) AS a 


  四、相關問題

 

  問:當導入的數據量很大,而網絡突然中斷,會不會出現問題?

  答:中斷的話,就等於什麼也沒做,也就是事務回滾,重新運行。

  五、隨後的問題

  問:由於在表中,通常都定義了自增量列及主鍵,而自增量列還進行了關連。由於在倒表時,自增量列不隨原表變化,就造成了關聯關係的丟失,通常的做法是:      http://www.wpf123.com

SET IDENTITY_INSERT 表名 ON
insert into 表名(字段,字段,字段) values (64,'han','guo')
SET IDENTITY_INSERT 表名OFF

 

即使用“SET IDENTITY_INSERT 表名 ON”將自增量關閉,但是,需要注意的是,當該表中沒有自增量字段時,使用該命令會產生一個錯誤。

因此,在沒有自增量字段的表中進行“插入”操作時,請不要使用“SET IDENTITY_INSERT 表名 ON”。

 

發佈了37 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章