一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - SQL Server LocalDB 在 ASP.NET中的應用介紹

SQL Server LocalDB 在 ASP.NET中的應用介紹

2019-10-15 10:44腳本之家 ASP.NET教程

如同交響樂一樣,構造軟件系統不一定必須某個強大的明星驅動,我們站在歷代ADO.NET的肩膀上,更好地回歸到SQL Server的核心開發:SQL Server LocalDB 在 ASP.NET中的應用

我相信世界總是會向更好的方向發展,今年的維也納新年音樂會沒有往年的明星級指揮,但是它通過回歸奧地利的本質,以更傳統的聚合法則,讓過往的藝術家們一代代創造的燦爛,在新的指揮手中,迸發出更深邃的音節。在此,也祝大家新年快樂。
如同交響樂一樣,構造軟件系統不一定必須某個強大的明星驅動,我們站在歷代ADO.NET的肩膀上,更好地回歸到SQL Server的核心開發:SQL Server LocalDB 在 ASP.NET中的應用。

使用SQL Server LocalDB的優勢

快速部署完整的SQL Server。以后項目可以無縫升級到高級版本。 它是真正的SQL Server,直接使用到SQL Server 2012的所有功能。免費,對于初創企業和低配置服務器,可以節約前期的不少運營成本。
缺點與限制

必須對服務器有完全控制權限,租用虛擬主機的用戶無法使用(但是目前一個VPS和虛擬主機的價錢差別也不大)。無法通過bin文件夾中放置DLL進行綠色部署,服務器必須安裝SQL Server Express LocalDB。 

首先我們必須明白怎樣管理數據庫,在SQL Server 2012管理工具中:

SQL Server LocalDB 在 ASP.NET中的應用介紹

使用 (LocalDb)\v11.0 字符串來連接到當前本機的 LocalDB運行時環境。

.net framework早于4.0.2的情況下,直接使用命名管道來連接 LocalDB,例如:"Server=np:\\.\pipe\LOCALDB#F365A78E\tsql\query"

這一步與我們的開發環境設置關系不大,但是對于將來調試差錯,有很大幫助。

下面通過兩個步驟設置在ASP.NET中運行LocalDB:

1:解決數據庫文件定位

使用連接字符串:connectionString="Data Source=(LocalDb)\v11.0; Initial Catalog=xxx;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\test666.mdf"。

SQL Server LocalDB 在 ASP.NET中的應用介紹

SQL Server LocalDB 在 ASP.NET中的應用介紹

我們把系統生成的數據庫文件,在管理工具中附加到SQL Server中,會看到程序自動創建了一個名為DBBases的表

以上幾點解決了基本的連接功能,Visual Studio 2012 與SQL Server 2012 Management Studio中調試通過。 

但是,問題只解決了一半, 注意上面我用的是“vs2012”、“調試”這兩個詞語,目前我還沒說過在“IIS”中“運行”。

2:IIS中的用戶權限問題

在visual studio 中調試項目,使用的是windows 本地用戶進程,該進程具有比較高的權限(一般情況下與Administrator無異)。

而要在 IIS 中實際運行項目,執行程序時windows7、2008、2008R2、Server 2012默認都是使用ApplicationPoolIdentity進程。

ApplicationPoolIdentity進程的權限在本篇中不過多解釋,在這里你只要把它理解為一個權限非常低的用戶進程(IIS_IUSRS組)即可。就算LocalDB是再怎么精簡的版本,它畢竟也是SQL Server,在最極端的情況下,需要經歷“開啟sqlserver.exe進程”、“創建數據庫”兩個步驟,不是ApplicationPoolIdentity進程(IIS_IUSRS組)想做就做的。

解決辦法

1: 應用程序池 – 高級設置 – 標識, 以localsystem賬戶運行。Localsystem進程等同于本地administrator。

SQL Server LocalDB 在 ASP.NET中的應用介紹

這樣的解決辦法最簡單,直接通過localSystem賬戶運行進程,一切煩惱瞬間化為烏有。但是隨之而來反面因素便是帶來了潛在安全威脅: 如果一個不懷善意的客戶端上傳了一段惡意代碼, 那么惡意代碼一旦獲得運行機會,那么將是以administrator的權限運行于服務器,這將意味著什么,不必多說。

2:通過AttachDBFile,掛接數據庫文件到更高的SQL Server版本解決問題。

LocalDB是真正的SQL Server,可以直接和其它版本SQL Server 無縫兼容,我們只需要把數據庫文件掛接到Express或更高版本SQL Server中,

僅僅是需要把:“Data Source=(LocalDb)\v11.0;”修改為: “Data Source=.\SQLExpress”,也可以解決一切煩惱了。這樣的做法雖然具備實際意義,但是與本文的主題關系不大,在此也不多描述了。 

最后,基于安全因素的運行建議

1:直接使用localsystem運行整個程序,只要不允許客戶端上傳文件,整套程序可以放心運行。但是大多數情況下一個有意義的web程序都是允許客戶端上傳文件的,所以列舉一個上傳文件的解決辦法:

在用戶上傳文件時,把文件放置到別的進程空間中,運行時,通過外鏈(upload.abc.com)文件的辦法,達到了讓用戶文件運行于絕對安全的進程中。

SQL Server LocalDB 在 ASP.NET中的應用介紹

2:與建議1相反,把涉及到數據庫操作的代碼封裝為服務,通過WCF或Web API的自宿主功能,運行在另一個安全進程中(僅限本地連接),面向公眾的Web程序通過本地服務接口調用之,如此可以把一切安全因素最小化。(但是開發過程與維護會增加更高的復雜度)

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 特大黑人娇小亚洲女mp4 | 精品在线免费观看视频 | 色橹| 精品国产日韩亚洲一区在线 | 天天躁夜夜躁很很躁 | 美女黄金大片视频免费看 | 99热精品69堂国产 | 亚洲香蕉伊在人在线观看9 亚洲系列国产系列 | 久久青青草视频在线观 | 二次元美女脱裤子让男人桶爽 | 久久精品热在线观看30 | 国产-第1页-草草影院 | 91视频99 | 亚洲国产精品自在现线让你爽 | 小莹的性荡生活45章 | 国内交换一区二区三区 | 亚洲精品二三区伊人久久 | 亚洲一区二区三区久久精品 | 国产清纯91天堂在线观看 | 天天久久综合 | 国产日韩欧美综合在线 | 国产成人啪精品午夜在线播放 | ck7788免费视频 | 精品午夜寂寞影院在线观看 | 欧美a级在线观看 | 韩国久久| 青青青在线观看国产精品 | 久久丫线这里只精品 | 午夜伦理 第1页 | 嘿嘿午夜 | 日韩免费视频播播 | 99视频在线观看视频一区 | 日韩欧美在线视频一区二区 | 小小水蜜桃视频高清在线观看免费 | 龟甲情感超市全文阅读 小说 | 亚洲国产精品综合久久一线 | 欧美视频一区二区三区在线观看 | 国产一区二区三区久久小说 | 亚洲午夜视频 | 欧美久久一区二区三区 | 啊哈~嗯哼~用力cao我小说 |