SQL疑難問題 跨域訪問資料庫(未解決)

2021-05-25 05:43:16 字數 2258 閱讀 5579

原文

--  整了一上午終於把樓主這個問題給整好了!

--  比如說:在本地 test 資料庫 與區域網 245 的 hlldb資料庫中 都有一張結構如下的表 t

create table t(

id int,

name varchar(20)

);-- 現在假設當 本地 test 資料庫 中的 表 t中插入記錄行的同時向  區域網 245 的 hlldb資料庫 的表t 插入相同的記錄行,

-- 實現如下(用觸發器實現)

-- step 1 :建立鏈結伺服器、及其登入授權(在本地 test資料庫執行)

--建立鏈結伺服器

-- 示例**:

-- exec sp_addlinkedserver   'itsv ', ' ', 'sqloledb ', '遠端伺服器名或ip位址 '

-- exec sp_addlinkedsrvlogin  'itsv ', 'false ',null, '使用者名稱 ', '密碼 '

-- 實際操作**:

exec sp_addlinkedserver   'it245 ', ' ', 'sqloledb ', '192.168.1.245'

exec sp_addlinkedsrvlogin  'it245 ', 'false ',null, 'sa', 'go2wan@szty'

-- step 2 :建立觸發器(在本地 test資料庫執行)

create trigger tr_in_t on [dbo].[t]

for insert

asbegin

set nocount on

set xact_abort on

declare @id int, @name varchar(20);

select @id=id, @name=name from inserted;

insert into it245.hlldb.dbo.t(id,name) values(@id,@name);

endinsert into t(id,name) values(1,'luoyoumou1');

-- 如果出現這樣的錯誤:(請參考以下五個**的文件)

鏈結伺服器"it245"的 ole db 訪問介面 "sqlncli" 返回了訊息 "該夥伴事務管理器已經禁止了它對遠端/網路事務的支援。"。

-- --

-- --

-- insert into t(id,name) values(1,'luoyoumou1');

select * from t;

select * from it245.hlldb.dbo.t;

如上參考,設計出跨域觸發器

1)exec sp_addlinkedserver   'pc237_3 ', ' ', 'sqloledb ', '192.168.161.237'

exec sp_addlinkedsrvlogin  'pc237_3 ', 'false ',null, 'sa', 'infact'

2)alter trigger [servercross_trigger]

on [dbo].[a]

for insert

asbegin

declare @a tinyint, @b int,@c nvarchar(50);

select @a=a, @b=b ,@c=c from inserted;

insert into pc237_3.laocaotestdb.dbo.a_servertest(a,b,c) values(@a,@b,@c)

end------------------------------執行某insert語句後,出現下面問題-------------------------------------

——【伺服器上的msdtc不可用】

——解決方法:啟動 distributed transaction coordinator 服務。若該服務不讓啟動,提示與廠商聯絡,進行如下操作

解決辦法:

把 c:/windows/system32/dtclog 這個目錄重新命名(如果有),然後重新建立該目錄。

在命令列下: msdtc -resetlog

---------------------------------再次執行時,出現下面問題---------------

——【無法執行該操作,因為鏈結伺服器 "pc237_3" 的 ole db 訪問介面 "sqlncli" 無法啟動分布式事務。】

解決方法:

參考檔案過於複雜,待以後執行。

資料庫 mysql 跨庫訪問 資料庫跨庫訪問問題

sql server中的所有權鏈及其問題 沒有多少朋友對所有權鏈真的理解的。我自己有時候經常回過來看看這些資料,覺得還是很有意思的。下面的內容摘自微軟文件,介紹得比較好 簡而言之 1.如果在同乙個資料庫中,只要兩個物件的所有者是一樣的,那麼他們之間的訪問是不檢查訪問者身份的。例如乙個檢視和乙個表是屬...

在論壇中出現的各種疑難問題 資料庫儲存配置

首先,日誌和資料,最好分到不同的物理磁碟上,可以吧資料io和日誌io,分到不同的硬碟上,提高io效率 然後,資料,也要分到不同的物理磁碟上,這樣可以通過並行的io,提高讀取資料的效率。而tempdb,可以新增多個檔案,主要是當在tempdb中建立大量臨時表的時候,減少閂鎖的爭用。每個檔案的大小要相同...

資料庫跨庫訪問問題

sql server中的所有權鏈及其問題 沒有多少朋友對所有權鏈真的理解的。我自己有時候經常回過來看看這些資料,覺得還是很有意思的。下面的內容摘自微軟文件,介紹得比較好 簡而言之 1.如果在同乙個資料庫中,只要兩個物件的所有者是一樣的,那麼他們之間的訪問是不檢查訪問者身份的。例如乙個檢視和乙個表是屬...