揭秘SQL Server開(kāi)發(fā)中需要注意的十個(gè)問(wèn)題(2)_Mssql數(shù)據(jù)庫(kù)教程
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!
推薦:詳解數(shù)據(jù)庫(kù)導(dǎo)出成excel的sql語(yǔ)句INSERT INTO OPENROWSET('microsoft.jet.oledb.4.0','excel 8.0;hdr=yes;database=g:wgtz.xls;',sheet1$) SELECT * FROM aa
5、SQL Server 2005中的存儲(chǔ)過(guò)程并發(fā)問(wèn)題
我在SQL Server2005中遇到了并發(fā)問(wèn)題。我持有車票的公共汽車上有一些空閑的座位。我在插入銷售的查票之前,需要查看是否還有空閑的座位。我的存儲(chǔ)過(guò)程做的事情如下所示:
| CREATE PROCEDURE add_ticket — parameters DECLARE free_seats int BEGIN TRANSACTION SELECT free_seats = COUNT(*) FROM tickets WHERE seat_is_not_taken IF free_seats <> 0 INSERT INTO tickets VALUES(…) — some other statements END TRANSACTION |
問(wèn)題就是兩個(gè)過(guò)程可以同時(shí)讀取空閑票數(shù),并且都可以預(yù)約一張票,即使是那里已經(jīng)沒(méi)有空余的了。我需要一種方法來(lái)防止一個(gè)過(guò)程在另一個(gè)過(guò)程運(yùn)行add_ticket程序,但是還沒(méi)有插入一張新票的時(shí)候讀取空票的數(shù)量。
回答:
你是正確的;更高的隔離級(jí)別也不會(huì)保證多個(gè)讀者去同時(shí)去讀取同一個(gè)數(shù)據(jù)行。然而,還有幾種方法你可以完成這項(xiàng)工作。例如,你可以給每個(gè)座位分配一個(gè)惟一的標(biāo)識(shí)符(意思是,惟一鍵——不一定是GUID),并且創(chuàng)建一個(gè)描述哪些座位已經(jīng)被預(yù)訂了的表。在表上放一個(gè) UNIQUE約束,你就可以確保同一個(gè)座位不會(huì)被插入兩次了。
就是說(shuō),我認(rèn)為一個(gè)更有趣的方法就是使用SQL Service Broker。你可以為每個(gè)公交建立一個(gè)會(huì)話,并且將這個(gè)會(huì)話的句柄存放在一個(gè)表中,讀者在執(zhí)行RECEIVE之前可以參考這個(gè)表。通過(guò)這種方式,讀者就可以正確地過(guò)濾。公共汽車上的每個(gè)座位都插一個(gè)消息到隊(duì)列中。讀者就可以簡(jiǎn)單地RECEIVE到所需的消息(在這個(gè)過(guò)程中,預(yù)定公共汽車上的座位)。 Service Broker會(huì)確保沒(méi)有消息會(huì)被接受兩次,也就是說(shuō)你不會(huì)再遇到并發(fā)問(wèn)題了。
6、SQL Server2005中取代了查詢分析器
回答:
你是對(duì)的。查詢分析器和企業(yè)管理器都從SQL Server中刪除了。取代它們的是一個(gè)工具,SQL Server 管理套件(SQL Server Management Studio)。這個(gè)工具具有前任的大多數(shù)特性,但是擁有升級(jí)后的用戶界面和很多經(jīng)過(guò)改善的功能。我覺(jué)得大多數(shù)的數(shù)據(jù)庫(kù)管理員都會(huì)發(fā)現(xiàn)這是一個(gè)很好的升級(jí)。
如果你想要了解更多有關(guān)SQL Server管理套件的新特性的信息,請(qǐng)閱讀SearchSQLServer.com 上有關(guān)這個(gè)話題的文章。
7、你能提供一些有關(guān)SQL 和T-SQL的詳細(xì)信息嗎?
回答:
SQL是結(jié)構(gòu)化查詢語(yǔ)言,是ANSI/ISO 認(rèn)可的標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)語(yǔ)言。SQL Server的實(shí)現(xiàn)語(yǔ)言叫做Transact-SQL (T-SQL)。T-SQL基本上是根據(jù)1992年發(fā)表的ISO標(biāo)準(zhǔn)出現(xiàn)的,在1999年的標(biāo)準(zhǔn)上稍加修改。此外,微軟還進(jìn)行了各種私有的加強(qiáng)。
標(biāo)準(zhǔn)SQL和T-SQL之間有很多區(qū)別——太多了,這里就不說(shuō)了。還有,如果你在SQL Server上工作,那么使用這些私有的擴(kuò)展是有好處的。由于許多SQL Server的特性的本質(zhì),你不使用非標(biāo)準(zhǔn)的命令的話,將會(huì)有很多強(qiáng)大的功能無(wú)法實(shí)現(xiàn)。如果你想要看看你的SQL是否符合標(biāo)準(zhǔn),你可以使用SET FIPS_FLAGGER命令。
8、SQL Server 2005中是否有新的索引類別了?
回答:
SQL Server 2005沒(méi)有為關(guān)系表引入新的索引類型�;旧�——聚簇和非聚簇索引是以B-trees的方式實(shí)現(xiàn)的——還仍然在應(yīng)用。然而,SQL Server 2005確實(shí)包含了一些索引上的加強(qiáng),不論是完全文本索引,還是對(duì)于XML數(shù)據(jù),此外這些加強(qiáng)還可以改善一些與關(guān)系型索引有關(guān)的問(wèn)題。
SQL Server 2005的完全文本索引特性是全新的,并且是重新編寫(xiě)的。要獲得這個(gè)特性的信息,請(qǐng)閱讀Nimish Khanolkar的MSDN廣播文檔,介紹SQL Server 2005中的全文本查找。
XML是SQL Server 2005中另外一個(gè)在方式上發(fā)生了巨大轉(zhuǎn)變的內(nèi)容�,F(xiàn)在對(duì)于開(kāi)發(fā)人員來(lái)說(shuō)有第一流的XML數(shù)據(jù)類型可用了。這個(gè)類型支持XQuery查詢語(yǔ)言,使用了這個(gè)類型的字段可以通過(guò)特殊格式的XML索引被索引到。要了解更多有關(guān)XML類型的信息,請(qǐng)查找MSDN 上的文章。
還有各種各樣的有關(guān)T-SQL索引命令的加強(qiáng)。也許最令人感興趣的就是新的“在線”索引類型,它允許數(shù)據(jù)庫(kù)管理員在不需要把用戶鎖到表外面的情況下執(zhí)行索引維護(hù)任務(wù)。這個(gè)很有可能標(biāo)記著數(shù)據(jù)庫(kù)管理員需要等到夜里3點(diǎn)才能打開(kāi)維護(hù)窗口修正問(wèn)題的狀況的終結(jié)!要了解更多有關(guān)這個(gè)特性的信息,請(qǐng)查找SQL Server Worldwide Users Group 上的文章。
分享:從Access數(shù)據(jù)庫(kù)到SQL Server高手之前編寫(xiě)軟件都是ASP+Access,由于看到SQL Server數(shù)據(jù)庫(kù)中的一些功能確實(shí)高過(guò)ACCESS,具體如下: 1、觸發(fā)器: 有了觸發(fā)器,也就是可以在增加一個(gè)數(shù)據(jù)的時(shí)候?qū)?yīng)調(diào)用一個(gè)過(guò)程來(lái)維護(hù)數(shù)據(jù)庫(kù)的完整性。 2、視圖: 這個(gè)是我對(duì)SQL Server最感興趣的一個(gè)功能,通過(guò)
相關(guān)Mssql數(shù)據(jù)庫(kù)教程:
- sql 語(yǔ)句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無(wú)法查看數(shù)據(jù)庫(kù),提示 無(wú)法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語(yǔ)句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過(guò)程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫(kù)教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫(kù)教程推薦
- 探討SQL Server 2005的評(píng)價(jià)函數(shù)
- 關(guān)于Oracle數(shù)據(jù)庫(kù)與SQL Server數(shù)據(jù)庫(kù)鏡像的關(guān)系
- 解讀SQL Server 2005:數(shù)據(jù)類型最大值
- 怎樣使用SQLServer數(shù)據(jù)庫(kù)查詢累計(jì)值
- 給SQL Server 2008 安裝安全審計(jì)
- sqlserver2005自動(dòng)創(chuàng)建數(shù)據(jù)表和自動(dòng)添加某個(gè)字段索引
- SQL操作全集(部分是Mssql語(yǔ)句,不在access中使用)
- 解讀SQL Server查詢含有單引號(hào)數(shù)據(jù)的方法
- 為何把你的數(shù)據(jù)庫(kù)置于版本控制之下
- 關(guān)于sqlserver 2005 使用臨時(shí)表的問(wèn)題( Invalid object name #temptb)
猜你也喜歡看這些
- 解析如何使用Zend Framework 連接數(shù)據(jù)庫(kù)
- 從mysql中導(dǎo)出單個(gè)表結(jié)構(gòu)和數(shù)據(jù)
- mysql 按照時(shí)間段來(lái)獲取數(shù)據(jù)的方法
- SQL分組排序去重復(fù)的小實(shí)例
- 如何用cmd連接Mysql數(shù)據(jù)庫(kù)
- mysql錯(cuò)誤及解決全攻略
- mysql常用設(shè)置:字符集編碼、自動(dòng)完成(自動(dòng)提示)、監(jiān)聽(tīng)外網(wǎng)ip
- 如何用workbench導(dǎo)出mysql數(shù)據(jù)庫(kù)關(guān)系圖
- Mysql,phpmyadmin密碼忘了怎么辦
- mysql 數(shù)據(jù)庫(kù) (基礎(chǔ)) 筆記
- 相關(guān)鏈接:
復(fù)制本頁(yè)鏈接| 搜索揭秘SQL Server開(kāi)發(fā)中需要注意的十個(gè)問(wèn)題(2)
- 教程說(shuō)明:
Mssql數(shù)據(jù)庫(kù)教程-揭秘SQL Server開(kāi)發(fā)中需要注意的十個(gè)問(wèn)題(2)
。