佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > SQL Server LocalDB 在 ASP.NET中的應(yīng)用介紹

SQL Server LocalDB 在 ASP.NET中的應(yīng)用介紹

熱門(mén)標(biāo)簽:團(tuán)購(gòu)網(wǎng)站 Linux服務(wù)器 銀行業(yè)務(wù) 服務(wù)器配置 Mysql連接數(shù)設(shè)置 科大訊飛語(yǔ)音識(shí)別系統(tǒng) 電子圍欄 阿里云

我相信世界總是會(huì)向更好的方向發(fā)展,今年的維也納新年音樂(lè)會(huì)沒(méi)有往年的明星級(jí)指揮,但是它通過(guò)回歸奧地利的本質(zhì),以更傳統(tǒng)的聚合法則,讓過(guò)往的藝術(shù)家們一代代創(chuàng)造的燦爛,在新的指揮手中,迸發(fā)出更深邃的音節(jié)。在此,也祝大家新年快樂(lè)。
如同交響樂(lè)一樣,構(gòu)造軟件系統(tǒng)不一定必須某個(gè)強(qiáng)大的明星驅(qū)動(dòng),我們站在歷代ADO.NET的肩膀上,更好地回歸到SQL Server的核心開(kāi)發(fā):SQL Server LocalDB 在 ASP.NET中的應(yīng)用。

使用SQL Server LocalDB的優(yōu)勢(shì)

快速部署完整的SQL Server。以后項(xiàng)目可以無(wú)縫升級(jí)到高級(jí)版本。 它是真正的SQL Server,直接使用到SQL Server 2012的所有功能。免費(fèi),對(duì)于初創(chuàng)企業(yè)和低配置服務(wù)器,可以節(jié)約前期的不少運(yùn)營(yíng)成本。
缺點(diǎn)與限制

必須對(duì)服務(wù)器有完全控制權(quán)限,租用虛擬主機(jī)的用戶無(wú)法使用(但是目前一個(gè)VPS和虛擬主機(jī)的價(jià)錢(qián)差別也不大)。無(wú)法通過(guò)bin文件夾中放置DLL進(jìn)行綠色部署,服務(wù)器必須安裝SQL Server Express LocalDB。

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



使用 (LocalDb)\v11.0 字符串來(lái)連接到當(dāng)前本機(jī)的 LocalDB運(yùn)行時(shí)環(huán)境。

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

這一步與我們的開(kāi)發(fā)環(huán)境設(shè)置關(guān)系不大,但是對(duì)于將來(lái)調(diào)試差錯(cuò),有很大幫助。

下面通過(guò)兩個(gè)步驟設(shè)置在ASP.NET中運(yùn)行LocalDB:

1:解決數(shù)據(jù)庫(kù)文件定位

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





我們把系統(tǒng)生成的數(shù)據(jù)庫(kù)文件,在管理工具中附加到SQL Server中,會(huì)看到程序自動(dòng)創(chuàng)建了一個(gè)名為DBBases的表

以上幾點(diǎn)解決了基本的連接功能,Visual Studio 2012 與SQL Server 2012 Management Studio中調(diào)試通過(guò)。

但是,問(wèn)題只解決了一半, 注意上面我用的是“vs2012”、“調(diào)試”這兩個(gè)詞語(yǔ),目前我還沒(méi)說(shuō)過(guò)在“IIS”中“運(yùn)行”。

2:IIS中的用戶權(quán)限問(wèn)題

在visual studio 中調(diào)試項(xiàng)目,使用的是windows 本地用戶進(jìn)程,該進(jìn)程具有比較高的權(quán)限(一般情況下與Administrator無(wú)異)。

而要在 IIS 中實(shí)際運(yùn)行項(xiàng)目,執(zhí)行程序時(shí)windows7、2008、2008R2、Server 2012默認(rèn)都是使用ApplicationPoolIdentity進(jìn)程。

ApplicationPoolIdentity進(jìn)程的權(quán)限在本篇中不過(guò)多解釋?zhuān)谶@里你只要把它理解為一個(gè)權(quán)限非常低的用戶進(jìn)程(IIS_IUSRS組)即可。就算LocalDB是再怎么精簡(jiǎn)的版本,它畢竟也是SQL Server,在最極端的情況下,需要經(jīng)歷“開(kāi)啟sqlserver.exe進(jìn)程”、“創(chuàng)建數(shù)據(jù)庫(kù)”兩個(gè)步驟,不是ApplicationPoolIdentity進(jìn)程(IIS_IUSRS組)想做就做的。

解決辦法

1: 應(yīng)用程序池 – 高級(jí)設(shè)置 – 標(biāo)識(shí), 以localsystem賬戶運(yùn)行。Localsystem進(jìn)程等同于本地administrator。



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

2:通過(guò)AttachDBFile,掛接數(shù)據(jù)庫(kù)文件到更高的SQL Server版本解決問(wèn)題。

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

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

最后,基于安全因素的運(yùn)行建議

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

在用戶上傳文件時(shí),把文件放置到別的進(jìn)程空間中,運(yùn)行時(shí),通過(guò)外鏈(upload.abc.com)文件的辦法,達(dá)到了讓用戶文件運(yùn)行于絕對(duì)安全的進(jìn)程中。



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

您可能感興趣的文章:
  • VS2015自帶LocalDB數(shù)據(jù)庫(kù)用法詳解

標(biāo)簽:萍鄉(xiāng) 衢州 棗莊 大理 蚌埠 廣元 江蘇 衡水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL Server LocalDB 在 ASP.NET中的應(yīng)用介紹》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    海安县| 孝昌县| 财经| 平邑县| 庆云县| 彭泽县| 哈尔滨市| 龙井市| 上虞市| 宜兴市| 河东区| 成都市| 虹口区| 阳山县| 广丰县| 象州县| 延安市| 东光县| 石台县| 无为县| 涡阳县| 民县| 汝州市| 荆州市| 汤阴县| 姜堰市| 北宁市| 乌拉特前旗| 孝感市| 南陵县| 东丽区| 南木林县| 永宁县| 资中县| 衡水市| 靖西县| 寿宁县| 鄄城县| 瓮安县| 榆树市| 沾化县|