當前位置:首頁 » 編程語言 » sql事務塊
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql事務塊

發布時間: 2022-05-11 23:24:32

『壹』 sql中事務有幾種

有三種。第一種是顯式聲名的事務,這種事務要以begin
transaction為事務的起始標志。第二種是自動提交事務,這是sql
server的預設設置。每一個t-sql語句在執行完成後會被自動提交。第三種是隱含事務,在這種方式下,sql
server會在當前事務被提交或回滾後自動啟動一個新的事務,這個新事務直到用戶執行commit或rollback為止,這時系統又會啟動一個新事務。這樣就形成了一個連續的事務鏈。

『貳』 sql事務訪問資料庫多少次

一、跨資料庫訪問
第一種方式
SELECT * FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=遠程ip;User ID=sa;Password=密碼'
).庫名.dbo.表名
WHERE 條件
第二種方式
在sql server組->服務->安全性->鏈接伺服器下建立一個具有別名的鏈接伺服器。然後通過以下方式訪問:
SELECT * FROM [鏈接伺服器名].庫名.dbo.表名
WHERE 條件
需要注意的是建立鏈接資料庫伺服器類型如果選擇「SQL server」,那麼鏈接伺服器名稱必須用要鏈接的伺服器的在網路中的機器名或IP,如果要使用其它別名,可以在WINDOWS\system32\drivers\etc\hosts文件里添加一個別名的映射。

解除SQL阻止(sqlserver 2005情況)
SQL Server 阻止了對組件 『Ad Hoc Distributed Queries』 的 STATEMENT』OpenRowset/OpenDatasource』 的訪問,因為此組件已作為此伺服器安全配置的一部分而被關閉。系統管理員可以通過使用 sp_configure 啟用 『Ad Hoc Distributed Queries』。有關啟用 『Ad Hoc Distributed Queries』 的詳細信息,請參閱 SQL Server 聯機叢書中的 「外圍應用配置器」。
因為SQL2005默認是沒有開啟』Ad Hoc Distributed Queries』 組件,開啟方法如下
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO
關閉Ad Hoc Distributed Queries:
exec sp_configure 'Ad Hoc Distributed Queries', 0
reconfigure
exec sp_configure 'show advanced options', 0
reconfigure

二、分布式事務的配置

1.用DTCPing.exe工具測試兩台機器的DTC服務是否可以聯通。
2.如果有問題檢查MSDTC服務是否啟動。
3.MSDTC依賴於RPC,RPC使用的埠是135,測試135埠是否打開.是否有防火牆?如果有先關了防火牆. telnet IP 135 如果是關閉的打開它.
4.打開「控制面板->管理工具->組件服務」,然後展開「組件服務->計算機->我的電腦」右鍵屬性。選擇MSDTC的Tab欄,點擊安全性配置按鈕,打開窗口,將「網路DTC訪問」選項選中,並將「允許遠程客戶端」,「允許入站」,「允許出站」都選中,並選擇「不要求進行驗證」,「啟用事務Internet協議(TIP)事務」,「啟用XA事務」都選中。然後確定即可。(以上選項windows默認不開放,必須配置)
5.檢查你的兩台伺服器是否在同一個域中. 如果不在同一個域中,是否建立可信任聯接.
6.如果是WIN2000,升級到SP4
7.確認MDAC版本是2.6以上,最好是2.8.
8.在SQL server存儲過程中使用分布式事務時,必須SET XACT_ABORT ON --設置分布式事務如果發生問題主動回滾操作
9.可以聲明使用BEGIN DISTRIBUTED TRANSACTION,如果未明確生明,在事務塊中包含鏈接伺服器的訪問,SQL server會自動升級成分布式事務。

『叄』 sql 中 事務是用來幹嘛的 到底應該怎麼寫語句

SQL事務主要應用於保證多個表
數據更新
的一致性。如很多場合,要求一個表中更新或插入一條數據,另一個表也要更新或插入數據。要麼都做,要麼都不做,不能出現不一致的情況。例如從ATM中取錢需要以下幾個步驟:輸入一個PIN號碼,選擇一個帳戶類型和輸入你想要提取的資金的金額。如果你試圖從ATM中取出50元,然後操作失敗,你肯定不願意在沒有拿到錢的情況下被扣除50元。事務就可以被用來保證這種一致性。

『肆』 SQL事務概念是什麼,舉個例子說明什麼樣的東西是事務,與程序又有何區別,

資料庫事務是構成單一邏輯工作單元的操作集合。

舉例:轉賬是生活中常見的操作,比如從A賬戶轉賬100元到B賬號。站在用戶角度而言,這是一個邏輯上的單一操作,然而在資料庫系統中,至少會分成兩個步驟來完成:

1、將A賬戶的金額減少100元

2、將B賬戶的金額增加100元。

與程序的區別:一個程序中包含多個事務。在關系資料庫中,一個事務可以是一條SQL語句,一組SQL語句或整個程序。

(4)sql事務塊擴展閱讀:

事務必須具備四個屬性,簡稱ACID屬性:

1、原子性(Atomicity):事務是一個完整的操作。事務的各步操作是不可分的(原子的);要麼都執行,要麼都不執行。

2、一致性(Consistency):當事務完成時,數據必須處於一致狀態。

3、隔離性(Isolation):對數據進行修改的所有並發事務是彼此隔離的,這表明事務必須是獨立的,它不應以任何方式依賴於或影響其他事務。

4、永久性(Durability):事務完成後,它對資料庫的修改被永久保持,事務日誌能夠保持事務的永久性。

『伍』 事務在SQL中有什麼作用

事務的好處在於,當你需要對多個表進行相關性操作時,使用BeginTrans()開啟事務,然後操作,如果中間哪個表更新出錯了,或者數據有問題,你可以用RollBack()方法在取消之前的相關性操作,如果沒有錯,那就使用Commit()方法提交你的修改。另外,在這個過程中,所有你改動的內容只對你自己有效,別人不能知道你改了什麼,也不能對你正在改的表做修改,直到你提交之後,別人才能修改這些表,檢索出你修改過的內容。

『陸』 C#事務和sql事務的區別

在.NET 2.0中新添加了一個名為System.Transactions的命名空間,其提供了一個「輕量級」的、易於使用的事務框架,通過這個框架可以大大簡化事務的操作。
這個框架提供了如下優點:
(1)在簡單(不涉及分布式)事務中也可以使用聲明式的事務處理方法,而不必使用Com+容器和目錄注冊。
(2)用戶根本不需要考慮是簡單事務還是分布式事務。它實現一種所謂自動提升事務機制(Promotable Transaction),會自動根據事務中涉及的對象資源判斷使用何種事務管理器。
TransactionScope事務類,它可以使代碼塊成為事務性代碼。並自動提升為分布式事務
在ADO.NET 中,可以使用Connection 和Transaction 對象來控制事務。若要執行事務,請執行下列操作:
調用Connection 對象的BeginTransaction 方法來標記事務的開始。
將Transaction 對象分配給要執行的Command的Transaction 屬性。
執行所需的命令。

調用Transaction 對象的Commit 方法來完成事務,或調用Rollback 方法來取消事務。
優點:簡單,效率和資料庫事務差不多快。

缺點:事務執行在資料庫連接層上,所以你需要在事務過程中手動的維護一個連接。
二者來說 TransactionScope是對所有事務介面的管理(包括資料庫,分布式事務、文件,自定義事務管理等等) ,sql事務只是其管理中的一種。

『柒』 請詳細解釋一下SQL中事務的定義以及實例。

事務是一種機制,是一個操作序列。事務包含了一組資料庫操作命令,所有的命令作為一個整體一起向系統提交或撤銷,這些命令要麼都執行要麼都不執行,因此事務是一個不可分割的邏輯工作單元。一個事務可能包括一條Transact-SQL語句,也可能包括多條Transact-SQL語句。
實例:設計一個簡單的事務。
USE 學生成績管理
GO
BEGIN TRAN -----開始一個事務
UPDATE 課程表 SET 學分=學分+1
DELETE FROM 成績表 WHERE 成績<60
COMMIT TRAN ------結束一個事務
GO

『捌』 如何編寫SQL事務

給你一個參考的sql吧:

--創建帳戶表bank--
if exists(select* from sysobjects where name='bank')
drop table bank
create table bank
(
customerName char(10), --顧客姓名
currentMoney money --當前余額
)
go
/**//*--添加約束,帳戶不能少於元--*/
alter table bank add
constraint CK_currentMoney check(currentMoney>=1)
/**//*--插入測試數據--*/
insert into bank(customerName,currentMoney)
select '張三',1000 union
select '李四',1

select * from bank
go

/**//*--使用事務--*/
use stuDB
go
--恢復原來的數據
--update bank set currentMoney=currentMoney-1000 where customerName='李'
set nocount on --不顯示受影響的行數
print '查看轉帳事務前的余額'
select * from bank
go

/**//*--開始事務--*/
begin transaction
declare @errorSum int --定義變數,用於累計事務執行過程中的錯誤
/**//*--轉帳--*/
update bank set currentMoney=currentMoney-800 where customerName='張三'
set @errorSum=@errorSum+@@error --累計是否有錯誤
update bank set currentMoney=currentMoney+800 where customerName='李四'
set @errorSum=@errorSum+@@error --累計是否有錯誤

print '查看轉帳事務過程中的余額'
select * from bank

/**//*--根據是否有錯誤,確定事務是提交還是回滾--*/
if @errorSum>0
begin
print '交易失敗,回滾事務.'
rollback transaction
end
else
begin
print '交易成功,提交事務,寫入硬碟,永久保存!'
commit transaction
end
go

print '查看轉帳後的余額'
select * from bank
go

『玖』 SQL事務的概念,四個特性

(1):事務(transaction)是並發控制的單位,是用戶定義的一個操作序列。這些操作要麼都做,要麼都不做,是一個不可分割的工作單位。通過事務,sql
server能將邏輯相關的一組操作綁定在一起,以便伺服器保持數據的完整性。
(2):事務通常是以begin
transaction開始,以commit或rollback結束。
commit表示提交,即提交事務的所有操作。具體地說就是將事務中所有對資料庫的更新寫回到磁碟上的物理資料庫中去,事務正常結束。
rollback表示回滾,即在事務運行的過程中發生了某種故障,事務不能繼續進行,系統將事務中對資料庫的所有以完成的操作全部撤消,滾回到事務開始的狀態。
(3):事務運行的三種模式:
a:自動提交事務
每條單獨的語句都是一個事務。每個語句後都隱含一個commit。
b:顯式事務
以begin
transaction顯式開始,以commit或rollback顯式結束。
c:隱性事務
在前一個事務完成時,新事務隱式啟動,但每個事務仍以commit或rollback顯式結束。
(4):事務的特性(acid特性)
a:原子性(atomicity)
事務是資料庫的邏輯工作單位,事務中包括的諸操作要麼全做,要麼全不做。
b:一致性(consistency)
事務執行的結果必須是使資料庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。
c:隔離性(isolation)
一個事務的執行不能被其他事務干擾。
d:持續性/永久性(rability)
一個事務一旦提交,它對資料庫中數據的改變就應該是永久性的。
注:事務是恢復和並發控制的基本單位。
((1)是回答事務的概念到底是什麼——即你的提問,至於(2)、(3)、(4)只是作的稍許補充而已,不必深究,呵呵……)