a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數據庫 > SQL Server > 正文

簡單實用SQL腳本Part SQLServer 2005 鏈接服務器

2020-10-30 19:10:00
字體:
來源:轉載
供稿:網友

適用場景:對遠程的DB進行操作。

20002005對比:SQL Server 2000版本中也有鏈接遠程DBSQL,但是功能比較弱,擴展性差,支持的查詢比較簡單。而SQL Server 2005版本的SSMS中已經有了 服務器對象->鏈接服務器 的功能點,用戶首先創建一個遠程DB的鏈接對象,之后就可以像本地表一樣執行表的DML了。

創建步驟:SQL Server 2005版本打開SSMS,服務器對象->鏈接服務器->右擊 新建鏈接服務器,在圖2中是一種設置方式,也有其它的設置方式,比如:[圖解]sqlserver中創建鏈接服務器,圖3是安全性選項中設置遠程數據庫的賬號和密碼。

 

(圖1:新建鏈接) 

 

(圖2:設置鏈接) 

 

(圖3:設置帳號) 

 

注意事項: MSSQL2005Rpc的默認設置如圖4所示, 需要把它設置為圖5, 右鍵點擊遠程鏈接->屬性->服務器選項->RpcRpc Out,這兩個值需要設置為True

 

(圖4: 默認設置) 

 

(圖5: 正確設置) 

但在MSSQL2008下不能直接修改鏈接服務器 'ETV2_LINK' RPC配置成TURE,可以通過語句修改如下:

USE [master]
GO
EXEC master.dbo.sp_serveroption @server=N'ETV2_LINK'@optname=N'rpc'@optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'ETV2_LINK'@optname=N'rpc out'@optvalue=N'true'
GO

 

生成腳本:如果已經通過操作界面生成了 'ETV2_LINK' 的鏈接服務器,那么我們如果需要把它移植到其它數據庫(部署、更新)的時候,就可以通過下面的方法來生產SQL腳本,你也可以通過修改SQL腳本來快速新建或修改鏈接服務器,比如修改@server鏈接服務器名稱,修改@datasrc遠程鏈接的數據庫對象。

 

(圖6: 生成SQL腳本) 

 

SQL Server 2005生成遠程鏈接對象的SQL腳本:
/****** 對象:  LinkedServer [ETV2_LINK]    腳本日期: 09/08/2010 17:36:11 ******/
EXEC master.dbo.sp_addlinkedserver @server = N'ETV2_LINK'@srvproduct=N'ETV2_LINK'@provider=N'SQLNCLI'@datasrc=N'BWA035/BWA035_2K5'
GO
EXEC master.dbo.sp_serveroption @server=N'ETV2_LINK'@optname=N'collation compatible'@optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'ETV2_LINK'@optname=N'data access'@optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'ETV2_LINK'@optname=N'dist'@optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'ETV2_LINK'@optname=N'pub'@optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'ETV2_LINK'@optname=N'rpc'@optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'ETV2_LINK'@optname=N'rpc out'@optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'ETV2_LINK'@optname=N'sub'@optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'ETV2_LINK'@optname=N'connect timeout'@optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'ETV2_LINK'@optname=N'collation name'@optvalue=null
GO
EXEC master.dbo.sp_serveroption @server=N'ETV2_LINK'@optname=N'lazy schema validation'@optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'ETV2_LINK'@optname=N'query timeout'@optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'ETV2_LINK'@optname=N'use remote collation'@optvalue=N'true'

 

使用假設已經創建了名為ETV2_LINK的遠程鏈接對象,那么你就可以像下面的方式來使用這個對象操作遠程DB

使用場景1查詢ETV2_LINK這個遠程鏈接對象的[etV2_Online]數據庫中VisiteLog_20100629表的數據。模板形如:Select * From [鏈接服務器名].[遠程數據庫名].[所有者].[表名]
--查詢遠程DB表TableName
select * from ETV2_LINK.[etV2_Online].dbo.VisiteLog_20100629

 

使用場景2判斷ETV2_LINK這個遠程鏈接對象的[etV2_Online]數據庫中是否存在名為VisiteLog_20100629的表。

--注意:是sys.objects不是sysobjects
--
判斷遠程用戶是否存在某張表
IF EXISTS (SELECT * FROM ETV2_LINK.[etV2_Online].sys.objects WHERE name = N'VisiteLog_20100629' AND type in (N'U'))
BEGIN
    
--邏輯處理
    print '存在表'
END

 

使用場景3判斷遠程DB[etV2_Online]數據庫中是否存在名為VisiteLog_20100629的表。只不過這個表名是參數化的,可以通過傳入的參數進行判斷。這里只是簡單的設置變量的值并使用OUT來返回變量。 

--判斷遠程用戶是否存在某張表(參數化表名),返回變量
DECLARE @IsExistTable VARCHAR(10)
DECLARE @Tablename VARCHAR(50)
DECLARE @sqlString NVARCHAR(4000)
SET @IsExistTable = 'False'
SET @Tablename = 'VisiteLog_'+convert(varchar(9),getdate()-1,112--例如VisiteLog_20100629
SET @sqlString = 
'IF EXISTS (SELECT * FROM ETV2_LINK.[etV2_Online].sys.objects WHERE name = N'''+@Tablename+''' AND type in (N''U''))
    set @IsExistTableOUT =
''True'''
EXEC sp_executesql @sqlString,N'@IsExistTableOUT varchar(10) OUTPUT',@IsExistTableOUT=@IsExistTable OUTPUT

IF (@IsExistTable = 'True')--存在
BEGIN
    
--邏輯處理
    print '存在表'
END

 

補充: SQL Server 2000版本連接遠程服務器的SQL腳本,更多相關腳步可以參考:在T-SQL語句中訪問遠程數據庫(openrowset/opendatasource/openquery) 

--方法1:
select *  from openrowset('SQLOLEDB','server=192.168.0.67;uid=sa;pwd=password','SELECT * FROM BCM2.dbo.tbAppl')

--方法2:
select *  from openrowset('SQLOLEDB','192.168.0.67';'sa';'password','SELECT * FROM BCM2.dbo.tbAppl'
作者:聽風吹雨
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美日韩综合精品 | 福利一区二区 | 日日精品| 亚洲二区在线 | 免费观看一级毛片 | 国产高清一区 | www.欧美| 91亚洲精品乱码久久久久久蜜桃 | 国产免费拔擦拔擦8x高清在线人 | 求av网站 | 日本亚洲国产一区二区三区 | 亚洲精品免费观看 | 在线观看xxx | 欧美性影院 | 日本一区二区精品 | 国产福利电影一区 | 本道综合精品 | 日韩久久精品电影 | 亚洲久草 | 欧美一区2区三区3区公司 | 欧美精品一区二区免费 | 国产99久久精品一区二区永久免费 | 亚洲三级在线播放 | 中文字幕在线观看网站 | 一区二区av| 婷婷久久综合 | 精品国产31久久久久久 | 免费观看一级特黄欧美大片 | 在线一区二区三区 | 成人在线视频播放 | 亚洲tv久久爽久久爽 | 国产精品久久嫩一区二区 免费 | 九一视频在线播放 | 姐姐在线观看动漫第二集免费 | 国产精品免费看 | 欧美日韩视频一区二区 | 亚洲三级在线观看 | 高清视频一区 | 国产精品久久久久久久久久99 | 欧日韩不卡在线视频 | 免费国产羞羞网站视频 |