❶ sql SERVER 2000 埠與windows防火牆問題
請按照下列步驟操作:
1,啟動記事本。復制並將下面的代碼粘貼到記事本中:
netsh
advfirewall
firewall
add
rule
name="open
port
80"
dir=in
action=allow
protocol=tcp
localport=80
@echo
=========
sql
server
ports
===================
@echo
enabling
sqlserver
default
instance
port
1433
netsh
advfirewall
firewall
add
rule
name="sql
server"
dir=in
action=allow
protocol=tcp
localport=1433
@echo
enabling
dedicated
admin
connection
port
1434
netsh
advfirewall
firewall
add
rule
name="sql
admin
connection"
dir=in
action=allow
protocol=tcp
localport=1434
@echo
enabling
conventional
sql
server
service
broker
port
4022
netsh
advfirewall
firewall
add
rule
name="sql
service
broker"
dir=in
action=allow
protocol=tcp
localport=4022
@echo
enabling
transact
sql/rpc
port
135
netsh
advfirewall
firewall
add
rule
name="sql
debugger/rpc"
dir=in
action=allow
protocol=tcp
localport=135
@echo
=========
analysis
services
ports
==============
@echo
enabling
ssas
default
instance
port
2383
netsh
advfirewall
firewall
add
rule
name="analysis
services"
dir=in
action=allow
protocol=tcp
localport=2383
@echo
enabling
sql
server
browser
service
port
2382
netsh
advfirewall
firewall
add
rule
name="sql
browser"
dir=in
action=allow
protocol=tcp
localport=2382
@echo
=========
misc
applications
==============
@echo
enabling
http
port
80
netsh
advfirewall
firewall
add
rule
name="http"
dir=in
action=allow
protocol=tcp
localport=80
@echo
enabling
ssl
port
443
netsh
advfirewall
firewall
add
rule
name="ssl"
dir=in
action=allow
protocol=tcp
localport=443
@echo
enabling
port
for
sql
server
browser
service's
'browse'
button
netsh
advfirewall
firewall
add
rule
name="sql
browser"
dir=in
action=allow
protocol=udp
localport=1434
@echo
allowing
multicast
broadcast
response
on
udp
(browser
service
enumerations
ok)
netsh
firewall
set
multicastbroadcastresponse
enable
2,將文件另存為.txt
文件,通過使用以下名稱:
opensqlserverport.txt
3,將
opensqlserverport.txt
文件重命名為以下:
opensqlserverport.bat
4,在運行
opensqlserverport.bat
腳本之前,必須將該腳本復制到了防火牆的計算機,然後在該計算機上運行該腳本。若要運行該腳本,請執行以下步驟:
1.
單擊開始,單擊運行,鍵入cmd,然後單擊確定.2.
在命令提示符下,使用cd命令移動到您將
opensqlserverport.bat
文件保存在其中的文件夾。3.
若要運行
opensqlserverport.bat
腳本,請在命令提示符下鍵入opensqlserverport.bat
,然後按
enter
鍵即可。
❷ 怎麼獲取brokerservice
ServiceBroker為SQLServer提供消息隊列,保證消息只被處理一次且按順序處理。
如要需要開啟ServiceBroker服務,請用sql server management studio連接到遠程資料庫,然後執行以下sql語句:
ALTERDATABASE資料庫名稱SETENABLE_BROKER即可激活使用
❸ C# 定時查詢SQLServer資料庫,並且將查詢到的數據循環發送。請給個代碼案例謝謝~ 網站的引用也可以。
Anllen,這樣做是不科學的,如果是定時發送你可以考慮使用sql server中的計劃,他可以定義執行某些任務,同時在sql server 2005以後還加入機器空閑時執行等等,而且還是可在失敗時重試(重試次數自己設置),還可以對部分成功時進行記錄等等。
如果是要求立即執行或是其他不能指執行條件時,可以考慮sql server 2005之後的server broker,這種機制較為安全。同時因為使用queue的原因,使消息只到達一次而不會重復,解決實際工作中的資料庫與程序間的非同步傳輸問題。
既然有這么多好的方案為什麼還考慮重復地循環地查詢資料庫呢——你的資料庫效率被拉的很慢的,別忘記了還是許多鎖機制,會導致SQL server不再及時響應外部請求的!
❹ 急需SQL server 2005的介紹
前言
SQL Server 2000從上市到現在已經整整五個年頭。現在望眼欲穿的SQL Server 2005 終於發布了。五年磨一劍,SQLServer 2005 將是微軟具有里程碑性質的企業級資料庫產品。本文從用戶關心的技術要點出發比較和討論SQL Server 2005 相對它的前版本SQL Server 2000所做的重大改進或新增功能,介紹了SQL Server 2005 中最值得你為之升級的10 個理由。無論你是想了解或學習SQL Server 2005,還是正在評估或考慮升級到SQL Server 2005,本文都將對您有很好的參考作用。
升級理由一:數據分區
只有到了2005 版本SQL Server才擁有了真正的表和索引數據分區技術。這個技術一下子使SQL Server資料庫從「青壯年」成長為成熟的企業級資料庫產品,是一個里程碑性質的標志。數據分區技術極大加強了表的可伸縮性和可管理性,使得 SQLServer 處理海量數據的能力有了質的飛躍,是我認為最值得升級的一個理由。
資料庫隨著硬體和業務的發展變得越來越大。五年前大多數資料庫還不過是十幾個GB大小,很少超過TB級別的。現在幾百個GB大小的資料庫系統隨處可見。如果沒有數據分區技術而想對大資料庫進行高效管理是很困難的。SQL Server 2005以前版本的一個問題是隨著時間的推移資料庫越來越大,備份需要的空間越來越多,如何處理資料庫中的歷史數據是很棘手的事情。有些客戶可能會使用 DELETE語句定期定量刪除大表中的歷史記錄,如在每個周末備份資料庫後刪除一個星期以前的所有數據。但是如果表有上千萬行十幾個GB 大小,那麼使用DELETE語句刪除資料庫中上萬行或高達20%數據的話,其性能很差。如果是在7 × 24小時運行的聯機系統做這樣的數據維護操作那麼還會引起比較嚴重的阻塞問題。另外有些客戶針對這個問題直接在方案設計上下功夫,比如按照年份月份星期設計表,然後定期把一些過時的歷史數據表(注意是「表」)備份並DROP掉,使得資料庫大小以及系統性能都能保持相對穩定。但是這種方法有一個弊端,即應用程序必須做相應的配合根據不同的時間訪問對應的表,增加了資料庫管理以及資料庫訪問邏輯的復雜性。
大表還容易帶來性能問題。你也許會想到SQL Server 2000中的本地分區視圖或分布式分區視圖技術。是的,SQL Server2000 中的確已經有分區視圖的概念,從SQL Server 7.0開始就有了。可惜分區視圖的一個令人討厭的地方是其管理、設計和開發比較困難,特別是分布式分區視圖。如如何更新分布式視圖就是個難題。所以盡管一個設計良好的分區視圖系統會有很不錯的性能改善,卻因為繁瑣的配置,管理和開發使得其沒有在實際中得到充分應用。
現在,SQL Server 2005 引入了真正的數據水平分區技術,上面討論的資料庫增長問題和性能問題就迎刃而解。這個進步絕對不是一小步。資料庫的大小不再是個問題。你可以根據欄位值的范圍將表和索引劃分為多個分區從而可以輕松管理一個幾個TB大小的資料庫系統。無論數據如何增長,你都可以使用分區技術使得資料庫大小保持相對穩定。其中特別值得稱贊的地方是SQL Server 2005 中分區的管理和使用非常簡單。分區的刪除,添加,拆分、合並和移動,以及分區的數據裝載等管理都非常容易。你可以對單獨的分區進行維護而不是整個表。如果你需要大量裝載數據,那麼你可以先把數據並行的裝入到一個新分區當中,建立索引,然後把該分區合並到當前分區中來。這個動作需要的時間極短。如果你需要刪除歷史數據,假設你已經設計好了歷史數據分區,那麼你僅僅需要把該分區移除即可,幾乎可以一瞬間完成。分區也使得大型表的並發訪問性能得到改善,特別是有多個CPU的資料庫系統。那些需要交叉訪問大量數據的查詢將從分區技術中獲益不少。
升級理由二:可編程性
CLR 集成
SQL Server 2005的可編程性是值得升級的第二個重要理由。從來沒有哪一個版本能像SQL Server 2005 這樣帶來這么多編程方面的變革。說老實話,在我知道的瞬間我是驚呆了。有些變化是革命性的。如CLR(Common Language Runtime,公共語言運行時)集成。就先說說CLR集成。CLR集成是指你可以使用任何一種.NET 語言編寫SQL Server 2005 的存儲過程,觸發器,函數,自定義類型,甚至是自定義的聚合函數。估計不少資料庫軟體開發商會為這個功能歡呼雀躍。想想以前的擴展存儲過程,編程非常不容易。代碼中一不小心就會引起內存泄漏。而且由於擴展存儲過程運行在SQL Server 的進程空間中,不好的代碼容易引起訪問違規(Access Violation)導致SQLServer 異常。
現在有了CLR 集成,你可以輕松利用.NET語言的優勢如其面向對象的封裝、繼承和多態特性,編寫出那些需要對數據進行復雜數值計算或邏輯的代碼,如字元串處理,數據加密演算法,XML數據操作等等。由於CLR代碼宿於SQL Server進程,你可以非常容易訪問資料庫中的數據。有了CLR,你不再局限於T-SQL,你現在立即擁有了.NET 框架類庫提供的各種各樣的類和常式,以及.NET語言提供的一致的編程模型,如錯誤處理。展現在你面前的是一個可以無限擴展的編程空間。你現在需要的僅僅是考慮什麼時候使用T-SQL 語言,什麼時候使用CLR。我猜測那些SQL Server軟體開發商幾乎會立即升級到SQLServer 2005 享受資料庫編程的便捷。
T-SQL 語言增強
SQL Server 2005 中的T-SQL語言有了非常大的改進。其中筆者最為稱道的是現在可以使用和C++或C#類似的TRYCATCH結構對T-SQL 進行錯誤處理了,大大簡化了T-SQL錯誤處理編程。SQL Server 2005以前的版本通過設置@@error變數表示最後的T-SQL 語句執行成功與否。為避免@@error變數被新執行的語句重置,你必須為每一條可能出錯的TSQL語句後面立即檢查或保存@@error變數的值,並使用相應的G O T O 語句進行跳轉,使得代碼變得復雜難讀。現在SQLServer 2005 有了TRY-CATCH結構你只需要把相關的一組語句放在TRY塊裡面即可。如果TRY塊裡面任何語句發生錯誤,就會執行相應的CATCH 塊。你甚至可以使用嵌套的TRYCATCH來實現復雜錯誤處理流程。估計很多T-SQL語言使用者可能就為了這個TRY-CATCH 結構而迫不及待地升級到SQL Server 2005。
除了傳統的DML(INSERT/UPDATE/DELETE)觸發器,SQL Server 2005 現在也可以對DDL 語言(CREATE、ALTER或DROP 開頭的語句)創建觸發器了。這對於那些需要對DDL語言執行管理任務如審核以及規范資料庫操作的用戶特別有用。以前很多客戶問我如何跟蹤或避免表的刪除操作,現在終於有了答案。你可以簡單建立一個針對DROP 語句的觸發器然後在觸發器裡面ROLLBACK 事務就可以回滾DROP 動作了。
SQL Server 2005 T-SQL 中還有一個很酷的OUTPUT 子句。現在你不費吹灰之力就可以獲得INSERT 、UPDATE 或DELETE語句所影響的每行的信息。對於在INSERT或UPDATE操作之後需要檢索標識列或計算列的值的場合OUTPUT子句非常有用。如獲得數據INSERT 後該行的Identity的值,產生一些唯一流水號,驗證剛剛插入的數據等等。一個有趣的例子是Identity值的取得。在SQL Server 2000 中你可以在INSERT 語句後立即調用IDENT_CURRENT()或SCOPE_IDENTITY()函數來得到INSERT 語句的Identity。現在你僅僅需要在INSERT 語句中指定output子句就直接得到剛剛插入的Identity值,實在太簡單了,不是嗎?
SQL Server 2005 中T-SQL 語言新增或加強的功能還有很多。如SQL Server 2005 新增加了一類排名函數RANK/DENSE_RANK/NTILE/ROW_NUMBER,輕松解決了開發者要求返回數據行中提供行號等排序功能。新增的 P I V O T 和UNPIVOT運算符使得對結果集進行行和列的旋轉變換十分簡單。公用表表達式(CTE)解決了T-SQL語言的遞歸查詢問題,而使用 OPENROWSET 語句現在可以直接從文件裡面執行大容量操作了。我覺得每一個改進都是那麼有針對性,以至於使我相信這些T-SQL增強必定是SQL Server開發小組真正聆聽資料庫開發者心聲的結果。
升級理由三:安全
SQL Server 2005 的安全功能是我認為值得升級的第三個理由。SQL Server 2005 的安全達到了前所未有的強大水平,有著比以前版本更清晰的安全模型即主體,安全對象和許可權。在SQLServer 2000 中是用伺服器級許可權、資料庫角色和數據用戶許可權的混合方式管理許可權。而SQL Server 2005 統一使用GRANT語句管理主體對安全對象的許可權,簡化了安全管理。其中我認為最大的改進是用戶和架構(schema)分離。在SQL Server 2000中如果用戶不是DBO 且擁有對象,那麼移除該用戶將是很麻煩的事情。你需要首先使用sp_changeobjectowner改變該用戶擁有的對象所有權,然後把所有引用該對象的代碼做相應的修改。而在SQL Server 2005 中就不需要這樣麻煩了,因為現在用戶不再擁有對象。擁有對象的是schema 而不是用戶。資料庫中的所有對象都屬於某個schema。對象的完整名字是server.database.schema.object,符合SQL- 99 標准,而不是以前的server.database.user.object 方式。刪除用戶僅需要改變schema的owner就可以了。不需要修改任何已存在的資料庫訪問代碼,真的很方便。用戶和架構分離還有一個好處就是對象的許可權管理變得簡單。你可以把某些對象集中於某個架構裡面,然後對該架構設置許可權,那麼架構裡面的所有對象就自動繼承了同樣的許可權。
如果你需要保護資料庫中的敏感數據,那麼SQL Server2005 中的數據加密功能絕對值得考慮。以前不止一次有客戶問我如何加密資料庫中的某些數據,是否可以使用一些內部不公開的函數如PWDENCRYPT加密數據。我的回答是使用Windows的EFS(加密文件系統)功能加密資料庫文件或在應用程序層對數據加密後再存儲。現在用戶期盼已久的數據加密功能終於在 SQL Server 2005 中得到實現,那些有機密數據需要保護的用戶值得高興了。SQL Server 2005不是簡單的提供一些加密函數,而是把市場上已經成熟的數據安全技術引進到資料庫中,有一個清晰的加密層次結構。SQL Server 2005 支持證書(certificate),非對稱密鑰和對稱密鑰演算法,一是防止敏感數據被泄漏,二是防止數據被篡改。對稱密鑰支持RC4,RC2, TripleDES 和AES演算法,而非對稱密鑰使用RSA 演算法。證書其實就是非對稱密鑰中公鑰的容器。密鑰管理是安全中比較弱的部分。SQL Server 2005 每一層都使用證書、非對稱密鑰和對稱密鑰的組合對它下面的一層進行加密,提高了密鑰安全性。出於性能考慮,一般不用加密強度大的非對稱密鑰或證書直接加密數據,而是使用對稱密鑰加密數據獲得較快的性能,然後使用證書或非對稱密鑰加密對稱密鑰。
升級理由四:快照隔離
你還在為系統出現的阻塞(blocking)或死鎖(deadlock)現象苦惱嗎?快試試SQL Server 2005 中的快照隔離吧。通過行版本(row versioning)控制技術,SQL Server 2005 除了原來支持的四種事務隔離級別(臟讀、提交讀、可重復讀、可串列讀)外新增了一個快照(SNAPSHOT)隔離級別,有可能使阻塞或死鎖成為歷史。 SQL Server在TEMPDB中存放不同版本的數據行,select 語句讀取這些不同版本的行,讀操作不阻塞寫數據,寫操作也不阻塞讀操作,這樣那些由於讀/ 寫爭用導致的大量死鎖的系統將從中獲得無窮益處。如果你的系統復雜難優化,那麼升級到SQL Server 2005 試試快照隔離級別,也許會有意想不到的效果。
SQL Server 2005中的快照隔離可細分為兩種即READ_COMMITTED_SNAPSHOT和ALLOW_SNAPSHOT_ISOLATION。建議大家多使用前者,因為已提交讀隔離可用於大多數現有應用程序,而不需要進行任何更改,其佔用的TEMPDB空間也少。可以預見如果使用快照隔離級別,那麼需要特別關注TEMPDB的大小和性能。你也許需要把TEMPDB放在有足夠空間的單獨磁碟上以提高性能。
考慮到快照隔離在避免阻塞和死鎖方面的作用,我把它作為升級的第四個理由。
升級理由五:資料庫鏡像
對於那些要求高可用性的用戶來說,資料庫鏡像也許是考慮升級的唯一理由。SQL Server 2005的前版本在高可用性方面提供了故障轉移群集(Failover Cluster)和Log shipping方案。群集方案的一個好處是在一台機器發生問題時它可以提供極快的故障轉移能力,在備份伺服器上聯機資料庫,應用程序只需重新連接即可。群集方案的一個缺點是資料庫放在共享盤上,有單點失效這個缺點,一旦共享盤失敗將導致整個系統崩潰。所以群集方案一般都要結合嚴緊的備份方案一起使用。而 logshipping系統有一個時間上的延遲,且如果日誌備份很大,傳送速度也是個問題。SQL Server 2005引入的資料庫鏡像可作為故障轉移群集或Log shipping 的替代或補充方案來提高資料庫的高可用性。鏡像的主要優點是它比前兩者更容易管理,沒有群集的單點失效缺點,也沒有log shipping 的時間延遲。鏡像伺服器可以放在很遠的地方,提高了作為備份伺服器的高可用性。
資料庫鏡像需要兩台或三台伺服器。主伺服器通過傳送事務日誌中的每個事務到鏡像伺服器來進行數據同步。每當資料庫commit一個事務,該事務就會被同步到鏡像伺服器。如果事務安全設置為FULL,傳送操作將為同步操作。同步操作可以確保將提交的事務提交給兩個伺服器,但可能會增加事務提交的時間。如果事務安全設置為OFF,操作將為非同步操作。事務會在不等待鏡像伺服器的情況下提交,這將不影響主伺服器事務的提交時間,但不能確保鏡像也提交了該事務,所以在出現故障那一刻有可能有部分日誌丟失。對於需要嚴格同步數據的鏡像系統可以採取同步模式。而僅僅希望有個備份伺服器又不影響性能的情況下可以使用非同步模式(高性能模式)。無論那種模式,一旦主伺服器出現問題,你可以手動實現故障轉移或配置系統實現自動故障轉移。
升級理由六:商務智能BI 增強
SQL Server 2005 對已經有或打算開發基於SQL Server 的商務智能方案的用戶吸引力極大。SQL Server 2005中有關商務智能方面的增強很多,是升級的很好理由。首先是傳統的DTS(Data Transformation Services)被新的IS(Integration Services)代替。SQL Server 2000 中的DTS用來在不同伺服器之間轉移數據,但對於復雜重復的工作流DTS倍感吃力。IS重新改寫了DTS的數據流引擎,引入提取、轉換和載入(ETL)數據的新編程體系,將數據流與控制流分開,開發能力大大加強,包部署、管理和性能方面也比DTS上了一個數量級。筆者看來,DTS終於從原來的小打小鬧成長為成熟的IS 數據集成服務體系。
分析服務(Analysis Services)在SQL Server 2005 中也有很多改進。原來沒有profiler想跟蹤分析服務裡面的語句非常痛苦。現在2005 終於支持profiler了。Profiler對性能調優和排查錯誤將非常有用。分析服務2005 真正具備了實時分析能力,新增加了四種數據挖掘演算法,也支持.NET語言進行開發(如存儲過程等)。至於報表服務,2005 版本中添加了報表生成器和模型設計器這兩個新工具,支持報表拖拉設計。2005 的報表改進如新的列印功能、多值參數等。設計過報表的人員會深深知道多值參數的妙處。
另外,無論是IS、報表服務等都可以在類似Visual Studio的環境中開發,任務完成不過滑鼠拖拉之間,非常容易上手。
升級理由七:全文搜索增強
相對前版本SQL Server 2005中性能提升最多的部分當數全文檢索。SQL Server 2000 中的全文本檢索和SQL Server 7.0中的差別不大,處於能用的水平。在SQL Server 2000中使用全文檢索一個最大的痛苦是建立全文索引的性能不好,需要的時間太長,特別是在表很大的情況下。一個幾千萬行數據的表也許需要數個小時到數天時間才能完成全文索引的建立。SQL Server 2005全文檢索在開發的時候就集中於三點:性能,集成,和可擴展性。據開發小組人員的簡單測試,原來在SQL Server 2000中建立全文索引需要14天的表,現在只需要幾個小時!幾乎有上百倍的性能提升,只能用「驚異」來形容。其相關的全文檢索語句也有30%~50%甚至更高的性能提高。性能方面的提高得益於全新設計的全文檢索引擎。其中關鍵的一點設計是全文檢索引擎現在使用共享內存和SQL Server 進行數據大規模並發交互,而不是原來基於逐行的方式,使得性能上了好幾個數量級。
除了性能,SQL Server 2005 中的全文索引的集成性也大大加強。在SQL Server 2000 中很難對全文檢索進行備份。一旦有資料庫恢復或移動,你得重新重建索引。對於幾百個GB的資料庫,重建索引幾乎是不能接受的惡夢。現在終於可以和資料庫一起備份和恢復全文索引了。你不再需要在恢復資料庫後重建全文索引了!惡夢終於成為歷史。除了可以備份外,你也可以方便的改變全文索引的磁碟位置。你甚至可以在一個熱備機器上把全文索引建立好,然後 這個索引到生產伺服器上使用。
升級理由八:可用性功能增強
索引聯機操作。除了資料庫鏡像,SQL Server 2005 中可用性還有很多其他提高。索引現在可以使用ONLINE關鍵字進行在線建立或重建或刪除了。它的技術要點是在內存裡面動態生成索引的另一個副本從而不影響原來查詢的進行。一旦索引副本完成操作即替代原來索引成為當前索引。我認為索引聯機操作的意義是很大的,因為很多資料庫系統都有定期調整或維護索引方面的需求。有了2005 你無需擔心業務的正常運行而大膽的對索引進行維護或修改。
頁校驗和。SQL Server 2005中的資料庫頁引入校驗和增強了數據的可靠性。除了原來SQL Server 2000 中已有的TORN_PAGE_DETECTION 外,SQL Server 2005 新增實現了頁的檢驗和(CHECKSUM)。你使用ALTER DATABASE語句的SET PAGE_VERIFY子句即可指定。它的原理是向磁碟中寫入8K數據頁面時,SQL Server計算整個8K頁面內容的校驗和並將該值存儲在頁頭中。再次從磁碟中讀取頁時,SQL Server動態計算讀取到的頁面內容的校驗和,並與存儲在頁頭中的校驗和值進行比較。如果不相等則意味著頁面有物理損壞,需要檢查IO硬體。另外設置檢驗和的另一個好處是還可以在備份和還原操作過程中使用RESTORE VERIFYONLY語句驗證每一數據頁的完整性從而確認備份文件沒有物理損壞。
在線還原。在資料庫的某一部分未恢復前,用戶無法對該部分進行訪問,但可以訪問所有其他數據。SQL Server 2000中如果資料庫在還原或recovery當中,用戶不能訪問資料庫。這樣如果資料庫很大需要rollback或rollforward的事務很多的話,recovery的時間會出奇的長。SQL Server 2005 的在線還原功能使得資料庫在很短的時間內變得可用。
升級理由九:復制增強
SQL Server 2000 中的復制功能已經很好。我這里把復製作為升級的一個理由因為SQL Server 2005在原來的基礎上又增添了不少的功能。如peer-to-peer對等復制,可以在參與者之間相互進行復制,這樣你可以採用對等復制在復制參與者之間建立某種程度的負載平衡。合並復制現在支持通過HTTPS進行數據同步,可以方便建立基於INTERNET 的復制。發布表現在可以使用標準的T-SQL語句如Alter Table等進行結構修改然後被復制而不是僅僅局限於使用sp_repladdcolumn和sp_repldropcolumn存儲過程。在SQL Server 2000 中,僅支持向其他資料庫(如DB2或Oracle)發布數據,而在SQL Server 2005 中,可將Oracle 資料庫直接復制到SQL Server。可以從備份中初始化事務性訂閱而不是僅僅局限於從快照對復制進行初始化,等等……
升級理由十:非同步處理能力
SQL Server 2005 通過引入全新的Service Broker 提供了革命性的非同步處理能力。Service Broker提供了一個功能強大的非同步編程模型。它為資料庫應用程序增加了可靠、可擴展、分布式非同步功能非同步編程,允許程序僅僅在資源可用時才去執行佔用大量資源的任務,以此來縮短響應時間,提高吞吐量。在我看來,Broker的最大好處一是非同步執行能力,提高了可伸縮性,二是可靠執行,三是集成於資料庫中,備份資料庫就備份了broker 的消息隊列。SQL Server 2005 中的查詢通知就是基於Service Broker的應用。你可以使用查詢通知功能來發送一個命令到SQL Server請求在查詢結果發生變化時接收SQL Server的通知。這樣就可以只有在程序以前檢索的結果發生變化時,才需要重新查詢資料庫。一個可以預見的應用是在使用緩存的Web 站點中。Web站點首先發送語句到資料庫伺服器,獲得數據,緩存到本地,然後只有在收到查詢通知的時候才清理緩存,重新查詢數據。這個機制避免了重復輪詢 SQL Server,大大減輕了伺服器的負載,也提高了Web 站點的伸縮性。
因為SQL Server 2005 的Service Broker帶來了資料庫編程非同步處理能力的革命,我把它作為升級的第十個理由。
去網上找找吧,這類的介紹很好找的
❺ sqlserver broker 什麼意思
SQL Server Service Broker 你可以理解為一種 資料庫隊列的 東西.
非同步處理的.
例如我要執行一個耗時比較長的存儲過程.
普通的執行方法, 是我 執行了, 然後我等著伺服器處理完了, 才能繼續干別的事情.
SQL Server Service Broker 則是以一種隊列非同步處理的機制來完成.
我需要執行一個很耗時的處理.
那麼可能就是向某個 隊列, 發送一個消息, 然後立即就返回了.
這個時候, 我可以做其他的查詢處理.
等伺服器執行完畢後, 再向我發一個消息, 告訴我 執行的結果.
❻ 如何通過sqlserver資料庫發送郵件
Database Mail代替了SQL Mail,它使用一個簡單郵件傳輸協議(SMTP)伺服器,而不是SQL Mail所要求的MAPI賬號來發送電子郵件。 這允許你的組織發送帶附件和查詢結果的電子郵件,附加查詢結果,以及格式化HTML電子郵件。你還可以用它設定許多其它配置,而不需要你擁有一台Exchange伺服器或配置任何類型的MAPI工作區。 使用Database Mail的好處除完全以SMTP為基礎外,Database Mail還具有許多其它優點:
它在資料庫引擎以外運行,因此對資料庫引擎的壓力最小。
它支持群集,完全支持群集環境。
它的用戶資料(Profile)允許使用冗餘SMTP伺服器。(我將在本文後部分詳細討論這一點。)
它允許你以參數的形式向存儲過程發送查詢文本,存儲過程將執行查詢並在電子郵件中發送結果。
消息通過一個Service Broker隊列非同步傳送,因此你在發送電子郵件時不必等待回應。 它為電子郵件發送提供多重安全保護,如一個控制附件擴展名的過濾器和一個附件大小管理器。 建立和使用Database Mail在建立一個Database Mail解決方案前,你需要進行一些規劃工作。首先,你必須具有一台有效的SMTP伺服器來傳送電子郵件。如果你沒有SMTP伺服器,請參閱微軟知識庫文章308161了解建立SMTP伺服器的相關信息。如果你無法確定組織是否擁有SMTP伺服器,詢問你的網路管理員獲得機器名稱或伺服器的IP地址。你的網路管理員可能需要對伺服器進行配置,以便SQL Server能夠發送電子郵件。 在Database Mail中,賬戶(Account)保存資料庫引擎用來發送電子郵件消息的信息。一個賬戶只為一台電子郵件伺服器保存信息,如賬戶名、電子郵件地址、回復電子郵件地址、伺服器名稱或IP地址,以及一些可選的安全設置。 要發送一封Database Mail電子郵件,必須使用一個用戶資料(Profile)。用戶資料為一個或幾個賬戶設立。這種用戶資料-賬戶設置非常有用。它允許你將幾個賬戶和一個用戶資料聯系起來,這意味著你可以將幾台電子郵件伺服器和一個用戶資料聯系起來。 因此,當你試圖發送一封電子郵件時,系統會嘗試用戶資料中的每個賬戶,直到消息被成功發送出去。如果一台或幾台SMTP伺服器出現故障,這種設置就十分有用。它還允許你開發發送電子郵件的應用程序代碼,而不必擔心針對不同的環境修改Profile名稱。你可以在開發和生產環境中使用相同的Profile名稱,唯一的差別在於用戶資料中包含的賬戶有所不同。 該是時候了解如何建立一個Database Mail賬戶了。在我們的例子中,我假設你正坐在一台你具有系統管理員訪問許可權的開發機器前。如果你沒有系統管理員許可權,你需要成為msdb資料庫DatabaseMailUserRole的一員。 下面的腳本建立一些我在整個實例中都要用到的變數。
❼ sqlserver 在對象上的許可權設置有哪些動作分別是什麼意義
以下粘貼自SQL Server 的幫助信息,文字太多不能貼全,你自己可在幫助中查到更多信息。
-----------------------------
每個 SQL Server 安全對象都有可以授予主體的關聯許可權。本主題提供了下列信息:
許可權命名約定
與特定的安全對象相關的許可權
SQL Server 許可權
許可權檢查演算法
示例
許可權命名約定
下面介紹命名許可權時遵循的一般約定:
CONTROL
為被授權者授予類似所有權的功能。被授權者實際上對安全對象具有所定義的所有許可權。也可以為已被授予 CONTROL
許可權的主體授予對安全對象的許可權。因為 SQL Server 安全模型是分層的,所以 CONTROL 許可權在特定范圍內隱含著對該范圍內的所有安全對象的
CONTROL 許可權。例如,對資料庫的 CONTROL
許可權隱含著對資料庫的所有許可權、對資料庫中所有組件的所有許可權、對資料庫中所有架構的所有許可權以及對資料庫的所有架構中的所有對象的許可權。
ALTER
授予更改特定安全對象的屬性(所有權除外)的許可權。當授予對某個范圍的 ALTER
許可權時,也授予更改、創建或刪除該范圍內包含的任何安全對象的許可權。例如,對架構的 ALTER 許可權包括在該架構中創建、更改和刪除對象的許可權。
ALTER ANY
<伺服器安全對象>,其中的伺服器安全對象可以是任何伺服器安全對象。
授予創建、更改或刪除伺服器安全對象的各個實例的許可權。例如,ALTER
ANY LOGIN 將授予創建、更改或刪除實例中的任何登錄名的許可權。
ALTER ANY
<資料庫安全對象>,其中的資料庫安全對象可以是資料庫級別的任何安全對象。
授予創建、更改或刪除資料庫安全對象的各個實例的許可權。例如,ALTER
ANY SCHEMA 將授予創建、更改或刪除資料庫中的任何架構的許可權。
TAKE OWNERSHIP
允許被授權者獲取所授予的安全對象的所有權。
IMPERSONATE <登錄名>
允許被授權者模擬該登錄名。
IMPERSONATE <用戶>
允許被授權者模擬該用戶。
CREATE <伺服器安全對象>
授予被授權者創建伺服器安全對象的許可權。
CREATE <資料庫安全對象>
授予被授權者創建資料庫安全對象的許可權。
CREATE
<包含在架構中的安全對象>
授予創建包含在架構中的安全對象的許可權。但是,若要在特定架構中創建安全對象,必須對該架構具有
ALTER 許可權。
VIEW DEFINITION
允許被授權者訪問元數據。
REFERENCES
表的 REFERENCES 許可權是創建引用該表的外鍵約束時所必需的。
對象的 REFERENCES
許可權是使用引用該對象的 WITH SCHEMABINDING 子句創建 FUNCTION 或 VIEW
時所必需的。
適用於特定安全對象的許可權
下表列出了主要的許可權類別以及可應用這些許可權的安全對象的種類。
許可權
適用於
SELECT
同義詞
表和列
表值函數 [Transact-SQL 和公共語言運行時 (CLR)] 和列
視圖和列
VIEW CHANGE TRACKING
表
架構
UPDATE
同義詞
表和列
視圖和列
REFERENCES
標量函數和聚合函數(Transact-SQL 和 CLR)
Service Broker 隊列
表和列
表值函數(Transact-SQL 和 CLR)和列
視圖和列
INSERT
同義詞
表和列
視圖和列
DELETE
同義詞
表和列
視圖和列
EXECUTE
過程(Transact-SQL 和 CLR)
標量函數和聚合函數(Transact-SQL 和 CLR)
同義詞
CLR 類型
RECEIVE
Service Broker 隊列
VIEW DEFINITION
過程(Transact-SQL 和 CLR)
Service Broker 隊列
標量函數和聚合函數(Transact-SQL 和 CLR)
同義詞
表
表值函數(Transact-SQL 和 CLR)
視圖
ALTER
過程(Transact-SQL 和 CLR)
標量函數和聚合函數(Transact-SQL 和 CLR)
Service Broker 隊列
表
表值函數(Transact-SQL 和 CLR)
視圖
TAKE OWNERSHIP
過程(Transact-SQL 和 CLR)
標量函數和聚合函數(Transact-SQL 和 CLR)
同義詞
表
表值函數(Transact-SQL 和 CLR)
視圖
CONTROL
過程(Transact-SQL 和 CLR)
標量函數和聚合函數(Transact-SQL 和 CLR)
Service Broker 隊列
同義詞
表
表值函數(Transact-SQL 和 CLR)
視圖
❽ sql server怎樣用代碼建立資料庫,詳細代碼
創建資料庫和表的操作有兩種方法:
一、可視化操作
1.創建資料庫
選中資料庫右擊,在出現的對話框中選擇新建資料庫,然後新出現的對話框中填寫資料庫的名稱
2.創建數據表
選中資料庫下的表右擊,在出現的對話框最上方有新建表選項,新出現的對話框中有列名、數據類型、允許Null值三列,這里可以添加表的的列,添加好列後保存Ctrl+S或者點擊上方的保存,填寫表名稱確定就創建好了。
二、使用SQL語句創建
1.創建資料庫
createdatabasestuDB--stuDB是資料庫的名稱
onprimary--默認就屬於primary文件組,可省略
(
/*--數據文件的具體描述--*/
name='stuDB_data',--主數據文件的邏輯名稱
filename='D:stuDB_data.mdf',--主數據文件的物理路徑和名稱
size=5mb,--主數據文件的初始大小
maxsize=100mb,--主數據文件增長的最大值
filegrowth=15%--主數據文件的增長率
)
logon
(
/*--日誌文件的具體描述,各參數含義同上--*/
name='stuDB_log',
filename='D:stuDB_log.ldf',
size=2mb,
filegrowth=1mb
)
-----2.創建數據表
useStuDB--使用某個資料庫(在某個資料庫下建表)
go
ifexists(select*fromsysobjectswherename='stuMarks')--查詢資料庫是否已存在此表
droptablestuMarks--如果存在該表則刪除,不存在不執行此句
createtablestuMarks--stuMarks是表的名稱
(
ExamNointidentity(1,1)primarykey,--列名數據類型約束
stuNochar(6)notnull,--列名數據類型是否允許插入Null值
writtenExamintnotnull,
LabExamintnotnull
)
go
--其中,列屬性"identity(起始值,遞增量)"表示"ExamNo"列為自動編號,也稱為標識列altertable表名
addconstraint約束名約束類型具體的約束說明
altertable表名
dropconstraint約束名
❾ 如何激活SQL Server Service Broker服務
ServiceBroker為SQLServer提供消息隊列,保證消息只被處理一次且按順序處理。 如要需要開啟ServiceBroker服務,請用sql server management studio連接到遠程資料庫,然後執行以下sql語句: ALTERDATABASE資料庫名稱SETENABLE_BROKER即可激活使用
❿ sqlserver資料庫對象有哪些
SQL Server資料庫對象
SQL Server的資料庫一共有11種對象,
包括關系圖、
表、視圖、存儲過程、
用戶、角色、規則、默認、用戶定義的數據類型、
用戶定義的函數、
全文目錄。
關於這11種資料庫對象,
可以在使用資料庫的過程中逐步加深了解。