溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Sql server數(shù)據(jù)庫如何遠程連接

發(fā)布時間:2021-08-07 16:45:59 來源:億速云 閱讀:349 作者:Leah 欄目:數(shù)據(jù)庫

Sql server數(shù)據(jù)庫如何遠程連接,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

在同一網(wǎng)絡(luò)環(huán)境下,或者在可以訪問的IP地址下,我們利用SQL數(shù)據(jù)庫實現(xiàn)遠程連接訪問可以使用如下方法:

通過調(diào)用master.sys.sp_addlinkedserver創(chuàng)建訪問連接

EXEC master.sys.sp_addlinkedserver @server = NULL, -- sysname
    @srvproduct = N'', -- nvarchar(128)
    @provider = N'', -- nvarchar(128)
    @datasrc = N'', -- nvarchar(4000)
    @location = N'', -- nvarchar(4000)
    @provstr = N'', -- nvarchar(4000)
    @catalog = NULL -- sysname

[ @server= ] 'server'
要創(chuàng)建的鏈接服務(wù)器的名稱。 server 的數(shù)據(jù)類型為 sysname,無默認值。

[ @srvproduct= ] 'product_name'
要添加為鏈接服務(wù)器的 OLE DB 數(shù)據(jù)源的產(chǎn)品名稱。 product_name 的數(shù)據(jù)類型為 nvarchar(128),默認值為 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)前計算機中安裝的指定 OLE DB 訪問接口,provider_name 必須唯一。 provider_name 的數(shù)據(jù)類型為 nvarchar(128),默認值為 NULL;但如果忽略 provider_name,則使用 SQLNCLI。 (使用 SQLNCLI 并且 SQL Server 將重定向到 SQL Server Native Client 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),默認值為 NULL。 location 作為 DBPROP_INIT_LOCATION 屬性傳遞以初始化 OLE DB 訪問接口。

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

當(dāng)針對 SQL Server Native Client OLE DB 訪問接口創(chuàng)建鏈接服務(wù)器時,可以使用 SERVER 關(guān)鍵字來指定實例,即使用 SERVER=servername\instancename 指定特定 SQL Server 實例。 servername 是運行 SQL Server 的計算機的名稱,instancename 是用戶要連接的特定 SQL Server 實例的名稱


成功創(chuàng)建訪問鏈接后就需要登陸遠程服務(wù)器數(shù)據(jù)庫

exec master.sys.sp_addlinkedsrvlogin @rmtsrvname = NULL, -- sysname
    @useself = '', -- varchar(8)
    @locallogin = NULL, -- sysname
    @rmtuser = NULL, -- sysname
    @rmtpassword = NULL -- sysname

[ @rmtsrvname = ] 'rmtsrvname'
應(yīng)用登錄映射的鏈接服務(wù)器的名稱。 rmtsrvname 的數(shù)據(jù)類型為 sysname,無默認值。

[ @useself = ] 'TRUE' | 'FALSE' | 'NULL'
確定是否通過模擬本地登錄名或顯式提交登錄名和密碼來連接到 rmtsrvname。 數(shù)據(jù)類型為 varchar(8),默認值為 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,默認值為 NULL。 NULL 指定此項應(yīng)用于連接到 rmtsrvname 的所有本地登錄。 如果不為 NULL,則 locallogin 可以是 SQL Server 登錄或 Windows 登錄。 對于 Windows 登錄來說,必須以直接的方式或通過已被授權(quán)訪問的 Windows 組成員身份授予其訪問 SQL Server 的權(quán)限。

[ @rmtuser = ] 'rmtuser'
當(dāng) @useself 為 FALSE 時,用于連接到 rmtsrvname 的遠程登錄名。 當(dāng)遠程服務(wù)器是不使用 Windows 身份驗證的 SQL Server 實例時,rmtuser是一個 SQL Server 登錄名。 rmtuser 的數(shù)據(jù)類型為 sysname,默認值為 NULL。

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


接下來就要為遠程服務(wù)器和鏈接服務(wù)器設(shè)置服務(wù)器選項

    EXEC master.sys.sp_serveroption @server = NULL, -- sysname
        @optname = '', -- varchar(35)
        @optvalue = N'' -- nvarchar(128)

[ @server = ] 'server'
要為其設(shè)置選項的服務(wù)器的名稱。 server 的數(shù)據(jù)類型為 sysname,無默認值。

[ @optname = ] 'option_name'
為指定的服務(wù)器設(shè)置的選項。 option_name 的數(shù)據(jù)類型為 varchar(35),無默認值。 option_name 可以是下列任意值。

[ @optvalue =] 'option_value'
指定應(yīng)啟用(TRUE 或 on)還是禁用(FALSE 或 off)option_name。 option_value 的數(shù)據(jù)類型為 varchar(10),無默認值。

option_value 可以是用于 connect timeout 和 query timeout 選項的非負整數(shù)。 對于 collation name 選項,option_value 可以是排序規(guī)則名稱或 NULL。

通過上述步驟就可以實現(xiàn)遠程數(shù)據(jù)庫的訪問了

具體例子如下:

EXEC master.sys.sp_addlinkedserver
@server = 'HQDB2',
@srvproduct = '',
@provider = 'SQLOLEDB',
@datasrc = '10.82.21.69'
EXEC master.sys.sp_addlinkedsrvlogin 
    @rmtsrvname = 'HQDB2',
    @useself = N'false',
    @locallogin = NULL,
    @rmtuser = 'btscn',
    @rmtpassword = 'btscn' 
EXEC master.sys.sp_serveroption 
    @server = 'HQDB2', 
    @optname = 'RPC out', 
    @optvalue = N'true'
EXECUTE [HQDB2].[BTSHQ9903].[dbo].[stp_Generate_RentalReport] 
   @GenerateDate

可以執(zhí)行select * from sys.servers查詢當(dāng)前的遠程訪問鏈接是否存在

當(dāng)遠程連接使用完后需要釋放

EXEC master.sys.sp_dropserver @server = NULL, -- sysname
    @droplogins = '' -- char(10)

[ @server = ] 'server'
要刪除的服務(wù)器。 server 的數(shù)據(jù)類型為 sysname,無默認值。 server 必須存在。

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

實例:

EXEC master.sys.sp_dropserver 
    @server = 'HQDB2', 
    @droplogins = 'droplogins'

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI