成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

SQL Server常用到的幾個設置選項

瀏覽:186日期:2023-11-01 13:33:16

1. SET DEADLOCK_PRIORITY2. SET LOCK_TIMEOUT3.@@LOCK_TIMEOUT4.SET IDENTITY_INSERT5.SET IMPLICIT_TRANSACTIONS6.SET NOCOUNT7.@@ROWCOUNT8.SET ROWCOUNT9.SET TRANSACTION ISOLATION LEVEL10.SET XACT_ABORT 1. SET DEADLOCK_PRIORITY

說明:控制在發生死鎖情況時會話的反應方式。如果兩個進程都鎖定數據,并且直到其它進程釋放自己的鎖時,每個進程才能釋放自己的鎖,即發生死鎖情況。

語法:SET DEADLOCK_PRIORITY { LOW | NORMAL | @deadlock_var }

參數:LOW; 指定當前會話為首選死鎖犧牲品。Microsoft® SQL Server™ 自動回滾死鎖犧牲品的事務,并給客戶端應用程序返回 1205 號死鎖錯誤信息。NORMAL; 指定會話返回到默認的死鎖處理方法。@deadlock_var 是指定死鎖處理方法的字符變量。如果指定 LOW,則 @deadlock_var 為 3;如果指定 NORMAL,則 @deadlock_var 為 6。

注釋:SET DEADLOCK_PRIORITY 的設置是在執行或運行時設置,而不是在分析時設置。

權限:SET DEADLOCK_PRIORITY 權限默認授予所有用戶。

2. SET LOCK_TIMEOUT

說明:指定語句等待鎖釋放的毫秒數。

語法:SET LOCK_TIMEOUT timeout_period

參數:timeout_period 是在 Microsoft® SQL Server™ 返回鎖定錯誤前經過的毫秒數。值為 -1(默認值)時表示沒有超時期限(即無限期等待)。當鎖等待超過超時值時,將返回錯誤。值為 0 時表示根本不等待,并且一遇到鎖就返回信息。

注釋:在連接開始時,該設置的值為 -1。設置更改后,新設置在其余的連接時間里一直有效。SET LOCK_TIMEOUT 的設置是在執行或運行時設置,而不是在分析時設置。READPAST 鎖定提示為該 SET 選項提供了另一種方式。

權限:SET LOCK_TIMEOUT 權限默認授予所有用戶。

示例:下例將鎖超時期限設置為 1,800 毫秒。

SET LOCK_TIMEOUT 1800GO

3. @@LOCK_TIMEOUT

說明:返回當前會話的當前鎖超時設置,單位為毫秒。

語法:@@LOCK_TIMEOUT

返回類型:integer

注釋:SET LOCK_TIMEOUT 允許應用程序設置語句等待阻塞資源的最長時間。當一條語句已等待超過 LOCK_TIMEOUT 所設置的時間,則被鎖住的語句將自動取消,并給應用程序返回一條錯誤信息。在一個連接的開始,@@LOCK_TIMEOUT 返回一個 –1值。

示例:下面的示例顯示當一個 LOCK_TIMEOUT 值未被設置時的結果集。

SELECT @@LOCK_TIMEOUT下面是結果集:-----------------1

下面的示例設置 LOCK_TIMEOUT 為 1800 毫秒,然后調用 @@LOCK_TIMEOUT。

SET LOCK_TIMEOUT 1800SELECT @@LOCK_TIMEOUT

下面是結果集:------------------------------1800

4. SET IDENTITY_INSERT

說明:允許將顯式值插入表的標識列中。

語法:SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF }

參數:database 是指定的表所駐留的數據庫名稱。owner 是表所有者的名稱。table 是含有標識列的表名。

注釋:任何時候,會話中只有一個表的 IDENTITY_INSERT 屬性可以設置為 ON。如果某個表已將此屬性設置為 ON,并且為另一個表發出了 SET IDENTITY_INSERT ON 語句,則 Microsoft® SQL Server™ 返回一個錯誤信息,指出 SET IDENTITY_INSERT 已設置為 ON 并報告此屬性已設置為 ON 的表。如果插入值大于表的當前標識值,則 SQL Server 自動將新插入值作為當前標識值使用。SET IDENTITY_INSERT 的設置是在執行或運行時設置,而不是在分析時設置。

權限:執行權限默認授予 sysadmin 固定服務器角色和 db_owner 及 db_ddladmin 固定數據庫角色以及對象所有者。

示例:下例創建一個含有標識列的表,并顯示如何使用 SET IDENTITY_INSERT 設置填充由 DELETE 語句導致的標識值中的空隙。

-- Create products table.CREATE TABLE products (id int IDENTITY PRIMARY KEY, product varchar(40))GO-- Inserting values into products table.INSERT INTO products (product) VALUES ('screwdriver')INSERT INTO products (product) VALUES ('hammer')INSERT INTO products (product) VALUES ('saw')INSERT INTO products (product) VALUES ('shovel')GO

-- Create a gap in the identity values.DELETE products WHERE product = 'saw'GO

SELECT * FROM productsGO

-- Attempt to insert an explicit ID value of 3;-- should return a warning.INSERT INTO products (id, product) VALUES(3, 'garden shovel')GO

-- SET IDENTITY_INSERT to ON.SET IDENTITY_INSERT products ONGO

-- Attempt to insert an explicit ID value of 3INSERT INTO products (id, product) VALUES(3, 'garden shovel')GO

SELECT * FROM productsGO

-- Drop products table.DROP TABLE productsGO

5. SET IMPLICIT_TRANSACTIONS

說明:為連接設置隱性事務模式。

語法:SET IMPLICIT_TRANSACTIONS { ON | OFF }

注釋:當設置為 ON 時,SET IMPLICIT_TRANSACTIONS 將連接設置為隱性事務模式。當設置為 OFF 時,則使連接返回到自動提交事務模式。當連接是隱性事務模式且當前不在事務中時,執行下列語句將啟動事務:

ALTER TABLE FETCH REVOKE CREATE; GRANT SELECT DELETE INSERT TRUNCATE TABLE DROP OPEN UPDATE

如果連接已經在打開的事務中,則上述語句不啟動新事務。對于因為該設置為 ON 而自動打開的事務,用戶必須在該事務結束時將其顯式提交或回滾。否則當用戶斷開連接時,事務及其所包含的所有數據更改將回滾。在事務提交后,執行上述任一語句即可啟動新事務。隱性事務模式將保持有效,直到連接執行 SET IMPLICIT_TRANSACTIONS OFF 語句使連接返回到自動提交模式。在自動提交模式下,如果各個語句成功完成則提交。在進行連接時,SQL Server ODBC 驅動程序和用于 SQL Server 的 Microsoft OLE DB 提供程序自動將 IMPLICIT_TRANSACTIONS 設置為 OFF。對來自 DB-Library 應用程序的連接,SET IMPLICIT_TRANSACTIONS 默認為 OFF。當 SET ANSI_DEFAULTS 為 ON 時,將啟用 SET IMPLICIT_TRANSACTIONS。SET IMPLICIT_TRANSACTIONS 的設置是在執行或運行時設置,而不是在分析時設置。

示例:下例演示在將 IMPLICIT_TRANSACTIONS 設置為 ON 時顯式或隱式啟動事務。它使用 @@TRANCOUNT 函數演示打開的事務和關閉的事務。

USE pubsGO

CREATE table t1 (a int)GOINSERT INTO t1 VALUES (1)GO

PRINT 'Use explicit transaction'BEGIN TRANINSERT INTO t1 VALUES (2)SELECT 'Tran count in transaction'= @@TRANCOUNTCOMMIT TRANSELECT 'Tran count outside transaction'= @@TRANCOUNTGO

PRINT 'Setting IMPLICIT_TRANSACTIONS ON'GOSET IMPLICIT_TRANSACTIONS ONGO

PRINT 'Use implicit transactions'GO-- No BEGIN TRAN needed here.INSERT INTO t1 VALUES (4)SELECT 'Tran count in transaction'= @@TRANCOUNTCOMMIT TRANSELECT 'Tran count outside transaction'= @@TRANCOUNTGO

PRINT 'Use explicit transactions with IMPLICIT_TRANSACTIONS ON'GOBEGIN TRANINSERT INTO t1 VALUES (5)SELECT 'Tran count in transaction'= @@TRANCOUNTCOMMIT TRANSELECT 'Tran count outside transaction'= @@TRANCOUNTGO

SELECT * FROM t1GO

-- Need to commit this tran too!DROP TABLE t1COMMIT TRANGO

6. SET NOCOUNT說明:使返回的結果中不包含有關受 Transact-SQL 語句影響的行數的信息。語法:SET NOCOUNT { ON | OFF }

注釋:當 SET NOCOUNT 為 ON 時,不返回計數(表示受 Transact-SQL 語句影響的行數)。當 SET NOCOUNT 為 OFF 時,返回計數。即使當 SET NOCOUNT 為 ON 時,也更新 @@ROWCOUNT 函數。當 SET NOCOUNT 為 ON 時,將不給客戶端發送存儲過程中的每個語句的 DONE_IN_PROC 信息。當使用 Microsoft® SQL Server™ 提供的實用工具執行查詢時,在 Transact-SQL 語句(如 SELECT、INSERT、UPDATE 和 DELETE)結束時將不會在查詢結果中顯示'nn rows affected'。如果存儲過程中包含的一些語句并不返回許多實際的數據,則該設置由于大量減少了網絡流量,因此可顯著提高性能。SET NOCOUNT 設置是在執行或運行時設置,而不是在分析時設置。

權限:SET NOCOUNT 權限默認授予所有用戶。

示例:下例在 osql 實用工具或 SQL Server 查詢分析器中執行時,可防止顯示有關受影響的行數的信息。

USE pubsGO-- Display the count message.SELECT au_lname FROM authorsGOUSE pubsGO-- SET NOCOUNT to ON and no longer display the count message.SET NOCOUNT ONGOSELECT au_lname FROM authorsGO-- Reset SET NOCOUNT to OFF.SET NOCOUNT OFFGO

7. @@ROWCOUNT說明:返回受上一語句影響的行數。

語法:@@ROWCOUNT

返回類型:integer

注釋:任何不返回行的語句將這一變量設置為 0 ,如 IF 語句。

示例:下面的示例執行 UPDATE 語句并用 @@ROWCOUNT 來檢測是否有發生更改的行。

UPDATE authors SET au_lname = 'Jones'WHERE au_id = '999-888-7777'IF @@ROWCOUNT = 0print 'Warning: No rows were updated'

8. SET ROWCOUNT

說明:使 Microsoft® SQL Server™ 在返回指定的行數之后停止處理查詢。

語法:SET ROWCOUNT { number | @number_var }

參數:number | @number_var 是在停止給定查詢之前要處理的行數(整數)。

注釋:建議將當前使用 SET ROWCOUNT 的 DELETE、INSERT 和 UPDATE 語句重新編寫為使用 TOP 語法。有關更多信息,請參見 DELETE、INSERT 或 UPDATE。對于在遠程表和本地及遠程分區視圖上執行的 INSERT、UPDATE 和 DELETE 語句,忽略 SET ROWCOUNT 選項設置。若要關閉該選項(以便返回所有的行),請將 SET ROWCOUNT 指定為 0。說明; 設置 SET ROWCOUNT 選項將使大多數 Transact-SQL 語句在已受指定數目的行影響后停止處理。這包括觸發器和 INSERT、UPDATE 及 DELETE 等數據修改語句。ROWCOUNT 選項對動態游標無效,但限制鍵集的行集和不感知游標。使用該選項時應謹慎,它主要與 SELECT 語句一起使用。如果行數的值較小,則 SET ROWCOUNT 替代 SELECT 語句 TOP 關鍵字。SET ROWCOUNT 的設置是在執行或運行時設置,而不是在分析時設置。

權限:SET ROWCOUNT 權限默認授予所有用戶。

示例:SET ROWCOUNT 在指定的行數后停止處理。在下例中,注意有 x 行滿足預付款少于或等于 $5,000 的條件;但是,從更新所返回的行數中可以看出并非所有的行都得到處理。ROWCOUNT 影響所有的 Transact-SQL 語句。

USE pubsGOSELECT count(*) AS CntFROM titles WHERE advance >= 5000GO

下面是結果集:

Cnt;;;;----------- 11;

(1 row(s) affected)

現在,將 ROWCOUNT 設置為 4,并更新預付款等于或大于 $5,000 的所有行。

-- SET ROWCOUNT to 4.SET ROWCOUNT 4GOUPDATE titlesSET advance = 5000WHERE advance >= 5000GO

9. SET TRANSACTION ISOLATION LEVEL說明:控制由連接發出的所有 Microsoft® SQL Server™ SELECT 語句的默認事務鎖定行為。

語法:SET TRANSACTION ISOLATION LEVEL{ READ COMMITTED;| READ UNCOMMITTED;| REPEATABLE READ;| SERIALIZABLE }

參數:READ COMMITTED 指定在讀取數據時控制共享鎖以避免臟讀,但數據可在事務結束前更改,從而產生不可重復讀取或幻像數據。該選項是 SQL Server 的默認值。READ UNCOMMITTED 執行臟讀或 0 級隔離鎖定,這表示不發出共享鎖,也不接受排它鎖。當設置該選項時,可以對數據執行未提交讀或臟讀;在事務結束前可以更改數據內的數值,行也可以出現在數據集中或從數據集消失。該選項的作用與在事務內所有語句中的所有表上設置 NOLOCK 相同。這是四個隔離級別中限制最小的級別。REPEATABLE READ 鎖定查詢中使用的所有數據以防止其他用戶更新數據,但是其他用戶可以將新的幻像行插入數據集,且幻像行包括在當前事務的后續讀取中。因為并發低于默認隔離級別,所以應只在必要時才使用該選項。SERIALIZABLE 在數據集上放置一個范圍鎖,以防止其他用戶在事務完成之前更新數據集或將行插入數據集內。這是四個隔離級別中限制最大的級別。因為并發級別較低,所以應只在必要時才使用該選項。該選項的作用與在事務內所有 SELECT 語句中的所有表上設置 HOLDLOCK 相同。

注釋:一次只能設置這些選項中的一個,而且設置的選項將一直對那個連接保持有效,直到顯式更改該選項為止。這是默認行為,除非在語句的 FROM 子句中在表級上指定優化選項。SET TRANSACTION ISOLATION LEVEL 的設置是在執行或運行時設置,而不是在分析時設置。

示例:下例為會話設置 TRANSACTION ISOLATION LEVEL。對于每個后續 Transact-SQL 語句,SQL Server 將所有共享鎖一直控制到事務結束為止。

SET TRANSACTION ISOLATION LEVEL REPEATABLE READGOBEGIN TRANSACTIONSELECT * FROM publishersSELECT * FROM authors...COMMIT TRANSACTION

10. SET XACT_ABORT

說明:指定當 Transact-SQL 語句產生運行時錯誤時,Microsoft® SQL Server™ 是否自動回滾當前事務。

語法:SET XACT_ABORT { ON | OFF }

注釋:當 SET XACT_ABORT 為 ON 時,如果 Transact-SQL 語句產生運行時錯誤,整個事務將終止并回滾。為 OFF 時,只回滾產生錯誤的 Transact-SQL 語句,而事務將繼續進行處理。編譯錯誤(如語法錯誤)不受 SET XACT_ABORT 的影響。對于大多數 OLE DB 提供程序(包括 SQL Server),隱性或顯式事務中的數據修改語句必須將 XACT_ABORT 設置為 ON。唯一不需要該選項的情況是提供程序支持嵌套事務時。有關更多信息,請參見分布式查詢和分布式事務。 SET XACT_ABORT 的設置是在執行或運行時設置,而不是在分析時設置。

示例:下例導致在含有其它 Transact-SQL 語句的事務中發生違反外鍵錯誤。在第一個語句集中產生錯誤,但其它語句均成功執行且事務成功提交。在第二個語句集中,SET XACT_ABORT 設置為 ON。這導致語句錯誤使批處理終止,并使事務回滾。

CREATE TABLE t1 (a int PRIMARY KEY)CREATE TABLE t2 (a int REFERENCES t1(a))GOINSERT INTO t1 VALUES (1)INSERT INTO t1 VALUES (3)INSERT INTO t1 VALUES (4)INSERT INTO t1 VALUES (6)GOSET XACT_ABORT OFFGOBEGIN TRANINSERT INTO t2 VALUES (1)INSERT INTO t2 VALUES (2) /* Foreign key error */INSERT INTO t2 VALUES (3)COMMIT TRANGO

SET XACT_ABORT ONGO

BEGIN TRANINSERT INTO t2 VALUES (4)INSERT INTO t2 VALUES (5) /* Foreign key error */INSERT INTO t2 VALUES (6)COMMIT TRANGO

/* Select shows only keys 1 and 3 added. Key 2 insert failed and was rolled back, butXACT_ABORT was OFF and rest of transactionsucceeded.Key 5 insert error with XACT_ABORT ON causedall of the second transaction to roll back. */

SELECT * FROM t2GO

DROP TABLE t2DROP TABLE t1GO

標簽: Sql Server 數據庫
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美一区二区精美| 欧美一区二区成人6969| 欧美伦理电影网| 全国精品久久少妇| 国产亚洲激情| 国产精品激情偷乱一区二区∴| av一本久道久久综合久久鬼色| 欧美高清视频在线高清观看mv色露露十八 | 老司机精品视频在线| 国产一区二区高清不卡| 亚洲精选视频在线| 亚洲狠狠婷婷| 中文字幕第一页久久| 午夜国产一区| 久久免费看少妇高潮| 不卡一卡二卡三乱码免费网站| 日韩欧美aaaaaa| 丁香六月久久综合狠狠色| 欧美一级高清片| 国产精品888| 日韩小视频在线观看专区| 国产精品亚洲成人| 日韩欧美久久久| 高清视频一区二区| 日韩精品资源二区在线| 成人h动漫精品一区二| 久久色.com| 91在线播放网址| 国产精品美女久久久久aⅴ| 亚洲国产精品一区制服丝袜| 亚洲免费视频中文字幕| 一区二区免费在线视频| 亚洲高清中文字幕| 久久精品1区| 久久精品99国产精品日本| 欧美一区二区美女| 91丝袜国产在线播放| 国产精品乱子久久久久| 狠狠色丁香久久综合频道| 亚洲免费av在线| 麻豆成人av| 久久 天天综合| 欧美va天堂va视频va在线| 欧美国产高清| 亚洲天堂2014| 久久精品官网| 国产综合色产在线精品| 精品理论电影在线| 欧美先锋影音| 亚洲精品日韩专区silk| 久久久久久久尹人综合网亚洲| 开心九九激情九九欧美日韩精美视频电影| 欧美精选在线播放| av亚洲精华国产精华| 亚洲人精品午夜| 色婷婷精品大在线视频| 国产精品一区久久久久| 国产人久久人人人人爽| 一区二区国产在线观看| 青青草原综合久久大伊人精品优势| 欧美日韩在线电影| caoporm超碰国产精品| 国产精品国产a| 久久久久久久久久久久久9999| 国产一区二区精品在线观看| 337p日本欧洲亚洲大胆精品 | 日韩经典中文字幕一区| 欧美一级免费观看| 国产一区亚洲| 日韩成人精品在线| 精品久久国产老人久久综合| 91久久午夜| 国产永久精品大片wwwapp| 国产色一区二区| 免费永久网站黄欧美| 国产麻豆成人精品| 成人欧美一区二区三区白人| 91福利视频网站| 欧美在线日韩| 亚洲午夜久久久久久久久久久| 欧美精品aⅴ在线视频| 色综合久久综合中文综合网| 亚洲制服欧美中文字幕中文字幕| 欧美丝袜自拍制服另类| 91婷婷韩国欧美一区二区| 亚洲国产毛片aaaaa无费看| 69精品人人人人| 国色天香一区二区| 九九国产精品视频| 国产精品色在线| 欧美色窝79yyyycom| 欧美日韩岛国| 婷婷久久综合九色国产成人| 精品99一区二区三区| 先锋影音国产精品| 成人在线视频一区| 夜夜嗨av一区二区三区网页| 欧美一级欧美三级在线观看| 国产欧美日韩综合精品二区| 国产精品一区二区三区乱码| 亚洲欧美欧美一区二区三区| 欧美日韩国产高清一区二区三区| 亚洲私人影院| 韩日av一区二区| 综合在线观看色| 日韩欧美一区二区免费| 亚洲免费中文| av激情亚洲男人天堂| 日韩成人dvd| 亚洲欧美在线aaa| 日韩欧美国产综合在线一区二区三区| 亚洲国产精选| 波多野结衣在线aⅴ中文字幕不卡| 亚洲韩国一区二区三区| 久久网这里都是精品| 在线欧美一区二区| 亚洲国产成人不卡| 成人性生交大片免费看视频在线| 五月天精品一区二区三区| 久久久久久久精| 欧美视频一区二区在线观看| 黄色成人在线网址| 成人综合在线观看| 美女任你摸久久| 综合久久综合久久| 精品国产免费一区二区三区四区| 久久国产直播| 狠久久av成人天堂| 丁香婷婷综合色啪| 男人的j进女人的j一区| 亚洲色图制服诱惑 | 日韩精品在线网站| 在线观看国产91| 国产欧美精品久久| 国产一区二区在线观看免费播放| 国产成人亚洲精品狼色在线| 一本一本a久久| 91视频免费看| 国产成人综合在线播放| 日韩av电影天堂| 一片黄亚洲嫩模| 中文字幕一区二区三| 精品第一国产综合精品aⅴ| 欧洲一区二区三区在线| 99精品热6080yy久久| 欧美视频亚洲视频| 99久久婷婷国产| 国产乱理伦片在线观看夜一区| 亚洲成人久久影院| 最新中文字幕一区二区三区 | 黄页网站一区| 91麻豆免费看片| 成人黄色片在线观看| 国产呦萝稀缺另类资源| 奇米精品一区二区三区在线观看 | 成人久久久精品乱码一区二区三区 | 亚洲欧美日本在线| 国产精品丝袜一区| 99视频一区二区三区| 风间由美性色一区二区三区| 激情综合色播激情啊| 免费成人性网站| 偷拍自拍另类欧美| 亚洲国产成人一区二区三区| 26uuu亚洲婷婷狠狠天堂| 欧美一二三区在线| 91精品国产综合久久蜜臀| 欧美日产国产精品| 欧美日韩中文国产| 欧美色涩在线第一页| 欧美日韩亚洲另类| 欧美日韩不卡一区| 欧美一区二区视频在线观看| 欧美日本一区二区三区四区| 欧美日韩一区二区在线视频| 欧美日韩日日摸| 欧美电影一区二区| 日韩一级精品视频在线观看| 欧美一卡二卡在线观看| 日韩精品专区在线影院重磅| 精品国精品自拍自在线| 26uuu亚洲婷婷狠狠天堂| 国产欧美综合色| 国产精品沙发午睡系列990531| 中文字幕中文在线不卡住| 亚洲欧美偷拍三级| 亚洲国产精品嫩草影院| 五月天激情综合网| 日本vs亚洲vs韩国一区三区| 蜜臀91精品一区二区三区| 精品无人码麻豆乱码1区2区 | 99久久99久久精品国产片果冻| 91视视频在线观看入口直接观看www | 成人午夜电影小说| 成人av电影在线网| 欧美91福利在线观看| 影音先锋一区| 亚洲专区欧美专区| 色成年激情久久综合| 欧美视频一区二区在线观看|