伺服器存儲面試題
Ⅰ session和cookie的區別 面試題
1、Session和Cookie都是會話跟蹤技術;
2、Session是保存在伺服器端的技術(保持用戶登錄狀態的檢查常用Session),而Cookie是保存在客戶端的技術;
3、Cookie只能存字元串,Session可以存對象;
Ⅱ 一個面試問題,為什麼用redis做緩存
redis不是資料庫,只是一種緩存軟體,為了緩解伺服器頻繁讀資料庫帶來的內存資源消耗,redis將需要和資料庫交互的信息暫存,當下次同樣的http請求,就能直接讀取redis裡面的內容,而不用讀資料庫。
這樣減少了資料庫壓力又能提高伺服器響應時間。
Ⅲ ORACLE資料庫面試題
1.
update t
set logdate=to_date('2003-01-01','yyyy-mm-dd')
where logdate=to_date('2001-02-11','yyyy-mm-dd');
2.
select *
from t
where name in (select name from t group by name having coung(*)>1)
order by name;--沒說清楚,到底是升序還是降序
3.
select ID,NAME,ADDRESS,PHONE,LOGDATE
from
(
select t.*,row_number() over(partition by name order by name) rn
from t
)
where rn = 1;
4.
update t
set (address,phone)=
(select address,phone from e where e.name=t.name);
5.
select *
from t
where rownum <=5
minus
select *
from t
where rownum <=2;
也沒什麼特別的地方,有些題目用oracle特有的函數去做會比較簡單,像在第三題中用到的oracle的分析函數,以及在第一題中用到的oracle的to_char()函數。
這幾個題目主要是看你能不能使用oracle的函數去處理
Ⅳ php面試題 memcache和redis的區別
Redis與Memcached的區別
傳統Mysql+ Memcached架構遇到的問題
實際MySQL是適合進行海量數據存儲的,通過Memcached將熱點數據載入到cache,加速訪問,很多公司都曾經使用過這樣的架構,但隨著業務數據量的不斷增加,和訪問量的持續增長,我們遇到了很多問題:
1.MySQL需要不斷進行拆庫拆表,Memcached也需不斷跟著擴容,擴容和維護工作占據大量開發時間。
2.Memcached與MySQL資料庫數據一致性問題。
3.Memcached數據命中率低或down機,大量訪問直接穿透到DB,MySQL無法支撐。
4.跨機房cache同步問題。
眾多NoSQL百花齊放,如何選擇
最近幾年,業界不斷涌現出很多各種各樣的NoSQL產品,那麼如何才能正確地使用好這些產品,最大化地發揮其長處,是我們需要深入研究和思考的
問題,實際歸根結底最重要的是了解這些產品的定位,並且了解到每款產品的tradeoffs,在實際應用中做到揚長避短,總體上這些NoSQL主要用於解
決以下幾種問題
1.少量數據存儲,高速讀寫訪問。此類產品通過數據全部in-momery 的方式來保證高速訪問,同時提供數據落地的功能,實際這正是Redis最主要的適用場景。
2.海量數據存儲,分布式系統支持,數據一致性保證,方便的集群節點添加/刪除。
3.這方面最具代表性的是dynamo和bigtable 2篇論文所闡述的思路。前者是一個完全無中心的設計,節點之間通過gossip方式傳遞集群信息,數據保證最終一致性,後者是一個中心化的方案設計,通過類似一個分布式鎖服務來保證強一致性,數據寫入先寫內存和redo log,然後定期compat歸並到磁碟上,將隨機寫優化為順序寫,提高寫入性能。
4.Schema free,auto-sharding等。比如目前常見的一些文檔資料庫都是支持schema-free的,直接存儲json格式數據,並且支持auto-sharding等功能,比如mongodb。
面對這些不同類型的NoSQL產品,我們需要根據我們的業務場景選擇最合適的產品。
Redis適用場景,如何正確的使用
前面已經分析過,Redis最適合所有數據in-momory的場景,雖然Redis也提供持久化功能,但實際更多的是一個disk-
backed的功能,跟傳統意義上的持久化有比較大的差別,那麼可能大家就會有疑問,似乎Redis更像一個加強版的Memcached,那麼何時使用
Memcached,何時使用Redis呢?
如果簡單地比較Redis與Memcached的區別,大多數都會得到以下觀點:
1 Redis不僅僅支持簡單的k/v類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
2 Redis支持數據的備份,即master-slave模式的數據備份。
3 Redis支持數據的持久化,可以將內存中的數據保持在磁碟中,重啟的時候可以再次載入進行使用。
拋開這些,可以深入到Redis內部構造去觀察更加本質的區別,理解Redis的設計。
在
Redis中,並不是所有的數據都一直存儲在內存中的。這是和Memcached相比一個最大的區別。Redis只會緩存所有的
key的信息,如果Redis發現內存的使用量超過了某一個閥值,將觸發swap的操作,Redis根據「swappability =
age*log(size_in_memory)」計
算出哪些key對應的value需要swap到磁碟。然後再將這些key對應的value持久化到磁碟中,同時在內存中清除。這種特性使得Redis可以
保持超過其機器本身內存大小的數據。當然,機器本身的內存必須要能夠保持所有的key,畢竟這些數據是不會進行swap操作的。同時由於Redis將內存
中的數據swap到磁碟中的時候,提供服務的主線程和進行swap操作的子線程會共享這部分內存,所以如果更新需要swap的數據,Redis將阻塞這個
操作,直到子線程完成swap操作後才可以進行修改。
使用Redis特有內存模型前後的情況對比:
VM off: 300k keys, 4096 bytes values: 1.3G used
VM on: 300k keys, 4096 bytes values: 73M used
VM off: 1 million keys, 256 bytes values: 430.12M used
VM on: 1 million keys, 256 bytes values: 160.09M used
VM on: 1 million keys, values as large as you want, still: 160.09M used
當
從Redis中讀取數據的時候,如果讀取的key對應的value不在內存中,那麼Redis就需要從swap文件中載入相應數據,然後再返回給請求方。
這里就存在一個I/O線程池的問題。在默認的情況下,Redis會出現阻塞,即完成所有的swap文件載入後才會相應。這種策略在客戶端的數量較小,進行
批量操作的時候比較合適。但是如果將Redis應用在一個大型的網站應用程序中,這顯然是無法滿足大並發的情況的。所以Redis運行我們設置I/O線程
池的大小,對需要從swap文件中載入相應數據的讀取請求進行並發操作,減少阻塞的時間。
如果希望在海量數據的環境中使用好Redis,我相信理解Redis的內存設計和阻塞的情況是不可缺少的。
補充的知識點:
memcached和redis的比較
1 網路IO模型
Memcached是多線程,非阻塞IO復用的網路模型,分為監聽主線程和worker子線程,監聽線程監聽網路連接,接受請求後,將連接描述
字pipe 傳遞給worker線程,進行讀寫IO, 網路層使用libevent封裝的事件庫,多線程模型可以發揮多核作用,但是引入了cache
coherency和鎖的問題,比如,Memcached最常用的stats
命令,實際Memcached所有操作都要對這個全局變數加鎖,進行計數等工作,帶來了性能損耗。
(Memcached網路IO模型)
Redis使用單線程的IO復用模型,自己封裝了一個簡單的AeEvent事件處理框架,主要實現了epoll、kqueue和select,
對於單純只有IO操作來說,單線程可以將速度優勢發揮到最大,但是Redis也提供了一些簡單的計算功能,比如排序、聚合等,對於這些操作,單線程模型實
際會嚴重影響整體吞吐量,CPU計算過程中,整個IO調度都是被阻塞住的。
2.內存管理方面
Memcached使用預分配的內存池的方式,使用slab和大小不同的chunk來管理內存,Item根據大小選擇合適的chunk存儲,內
存池的方式可以省去申請/釋放內存的開銷,並且能減小內存碎片產生,但這種方式也會帶來一定程度上的空間浪費,並且在內存仍然有很大空間時,新的數據也可
能會被剔除,原因可以參考Timyang的文章:http://timyang.net/data/Memcached-lru-evictions/
Redis使用現場申請內存的方式來存儲數據,並且很少使用free-list等方式來優化內存分配,會在一定程度上存在內存碎片,Redis
跟據存儲命令參數,會把帶過期時間的數據單獨存放在一起,並把它們稱為臨時數據,非臨時數據是永遠不會被剔除的,即便物理內存不夠,導致swap也不會剔
除任何非臨時數據(但會嘗試剔除部分臨時數據),這點上Redis更適合作為存儲而不是cache。
3.數據一致性問題
Memcached提供了cas命令,可以保證多個並發訪問操作同一份數據的一致性問題。 Redis沒有提供cas 命令,並不能保證這點,不過Redis提供了事務的功能,可以保證一串 命令的原子性,中間不會被任何操作打斷。
4.存儲方式及其它方面
Memcached基本只支持簡單的key-value存儲,不支持枚舉,不支持持久化和復制等功能
Redis除key/value之外,還支持list,set,sorted set,hash等眾多數據結構,提供了KEYS
進行枚舉操作,但不能在線上使用,如果需要枚舉線上數據,Redis提供了工具可以直接掃描其mp文件,枚舉出所有數據,Redis還同時提供了持久化和復制等功能。
5.關於不同語言的客戶端支持
在不同語言的客戶端方面,Memcached和Redis都有豐富的第三方客戶端可供選擇,不過因為Memcached發展的時間更久一些,目
前看在客戶端支持方面,Memcached的很多客戶端更加成熟穩定,而Redis由於其協議本身就比Memcached復雜,加上作者不斷增加新的功能
等,對應第三方客戶端跟進速度可能會趕不上,有時可能需要自己在第三方客戶端基礎上做些修改才能更好的使用。
根據以上比較不難看出,當我們不希望數據被踢出,或者需要除key/value之外的更多數據類型時,或者需要落地功能時,使用Redis比使用Memcached更合適。
關於Redis的一些周邊功能
Redis除了作為存儲之外還提供了一些其它方面的功能,比如聚合計算、pubsub、scripting等,對於此類功能需要了解其實現原
理,清楚地了解到它的局限性後,才能正確的使用,比如pubsub功能,這個實際是沒有任何持久化支持的,消費方連接閃斷或重連之間過來的消息是會全部丟
失的,又比如聚合計算和scripting等功能受Redis單線程模型所限,是不可能達到很高的吞吐量的,需要謹慎使用。
總的來說Redis作者是一位非常勤奮的開發者,可以經常看到作者在嘗試著各種不同的新鮮想法和思路,針對這些方面的功能就要求我們需要深入了解後再使用。
總結:
1.Redis使用最佳方式是全部數據in-memory。
2.Redis更多場景是作為Memcached的替代者來使用。
3.當需要除key/value之外的更多數據類型支持時,使用Redis更合適。
4.當存儲的數據不能被剔除時,使用Redis更合適。
談談Memcached與Redis(一)
1. Memcached簡介
Memcached是以LiveJurnal旗下Danga Interactive公司的Bard
Fitzpatric為首開發的高性能分布式內存緩存伺服器。其本質上就是一個內存key-value資料庫,但是不支持數據的持久化,伺服器關閉之後數
據全部丟失。Memcached使用C語言開發,在大多數像Linux、BSD和Solaris等POSIX系統上,只要安裝了libevent即可使
用。在Windows下,它也有一個可用的非官方版本(http://code.jellycan.com/memcached/)。Memcached
的客戶端軟體實現非常多,包括C/C++, PHP, Java, Python, Ruby, Perl, Erlang,
Lua等。當前Memcached使用廣泛,除了LiveJournal以外還有Wikipedia、Flickr、Twitter、Youtube和
WordPress等。
在Window系統下,Memcached的安裝非常方便,只需從以上給出的地址下載可執行軟體然後運行memcached.exe –d
install即可完成安裝。在Linux等系統下,我們首先需要安裝libevent,然後從獲取源碼,make && make
install即可。默認情況下,Memcached的伺服器啟動程序會安裝到/usr/local/bin目錄下。在啟動Memcached時,我們可
以為其配置不同的啟動參數。
1.1 Memcache配置
Memcached伺服器在啟動時需要對關鍵的參數進行配置,下面我們就看一看Memcached在啟動時需要設定哪些關鍵參數以及這些參數的作用。
1)-p <num> Memcached的TCP監聽埠,預設配置為11211;
2)-U <num> Memcached的UDP監聽埠,預設配置為11211,為0時表示關閉UDP監聽;
3)-s <file> Memcached監聽的UNIX套接字路徑;
4)-a <mask> 訪問UNIX套接字的八進制掩碼,預設配置為0700;
5)-l <addr> 監聽的伺服器IP地址,默認為所有網卡;
6)-d 為Memcached伺服器啟動守護進程;
7)-r 最大core文件大小;
8)-u <username> 運行Memcached的用戶,如果當前為root的話需要使用此參數指定用戶;
9)-m <num> 分配給Memcached使用的內存數量,單位是MB;
10)-M 指示Memcached在內存用光的時候返回錯誤而不是使用LRU演算法移除數據記錄;
11)-c <num> 最大並發連數,預設配置為1024;
12)-v –vv –vvv 設定伺服器端列印的消息的詳細程度,其中-v僅列印錯誤和警告信息,-vv在-v的基礎上還會列印客戶端的命令和相應,-vvv在-vv的基礎上還會列印內存狀態轉換信息;
13)-f <factor> 用於設置chunk大小的遞增因子;
14)-n <bytes> 最小的chunk大小,預設配置為48個位元組;
15)-t <num> Memcached伺服器使用的線程數,預設配置為4個;
16)-L 嘗試使用大內存頁;
17)-R 每個事件的最大請求數,預設配置為20個;
18)-C 禁用CAS,CAS模式會帶來8個位元組的冗餘;
2. Redis簡介
Redis是一個開源的key-value存儲系統。與Memcached類似,Redis將大部分數據存儲在內存中,支持的數據類型包括:字
符串、哈希表、鏈表、集合、有序集合以及基於這些數據類型的相關操作。Redis使用C語言開發,在大多數像Linux、BSD和Solaris等
POSIX系統上無需任何外部依賴就可以使用。Redis支持的客戶端語言也非常豐富,常用的計算機語言如C、C#、C++、Object-C、PHP、
Python、Java、Perl、Lua、Erlang等均有可用的客戶端來訪問Redis伺服器。當前Redis的應用已經非常廣泛,國內像新浪、淘
寶,國外像Flickr、Github等均在使用Redis的緩存服務。
Redis的安裝非常方便,只需從http://redis.io/download獲取源碼,然後make && make
install即可。默認情況下,Redis的伺服器啟動程序和客戶端程序會安裝到/usr/local/bin目錄下。在啟動Redis伺服器時,我們
需要為其指定一個配置文件,預設情況下配置文件在Redis的源碼目錄下,文件名為redis.conf。
Ⅳ 面試題-關於大數據量的分布式處理
面試題-關於大數據量的分布式處理
題目:生產系統每天會產生一個日誌文件F,數據量在5000W行的級別。文件F保存了兩列數據,一列是來源渠道,一列是來源渠道上的用戶標識。文件F用來記錄當日各渠道上的所有訪問用戶,每訪問一次,記錄一條。
請問如何快速計算出各渠道上新增的用戶?
問題分析:首先本次面試的是有關於分布式數據處理以及數據分析的職位,所以相關的面試題目可能會偏向於使用分布式的思想去解決。但無奈本人當時反應太慢,實在沒向分布式處理方向思考。
方案一:
本題最直觀的一個處理方法就是,直接拿著當日新增的5000W條訪問記錄一條一條的去匹配歷史訪問用戶。若存在歷史訪問記錄,則忽略;若不存在訪問記錄,則保存為新增記錄。很明顯,假若歷史訪問用戶有2億條記錄,則需要和2億條數據比較5000W次。比較次數可想而知。
由於本人一直在做基於資料庫的數據處理工作,很容易就想到將歷史數據保存在資料庫的一張表中,並對來源渠道和用戶標識這兩個欄位建立索引,然後遍歷日誌文件F(5000W次)。根據日誌文件F中的每一行去匹配資料庫中的歷史訪問記錄。由於歷史數據表有索引,單次查詢的速度也非常快。但是需要5000W次的資料庫查詢,很明顯效率低下。
方案二:
既然多次單一查詢無法滿足要求,於是可以先通過一種數據導入技術將當日新增數據導入到資料庫的另一張表中,並和歷史數據做左外關聯。若能關聯成功,則表示此用戶已存在;若關聯失敗,則表示此用戶不存在。
此方案暫且不說5000W條記錄的大表與2億條記錄的大表關聯效率有多高以及使用到的資料庫緩沖區的資源有多少,單就5000W條訪問記錄導入資料庫表,都是一個不小的時間花費。
方案三:
很明顯,面試時方案二的回答並未達到面試官的預期,最初被遺憾的PASS掉。一家很有潛力,自己很看好的公司,並計劃做為自己未來發展方向的職位,就這樣丟下我,揚長而去了。
這幾天又看了下分布式相關的介紹,突然想到這道題。一下子醒悟過來,其實還是因為對題目要考察的點分析得不夠透徹。當時以為只是僅僅考數據處理效率的一個題目,其實考的是一種將復雜問題拆分為簡單問題的拆分思想。了解到這一層,一種新的方式立馬在腦海中浮現出來。具體如下:
假如現在有N(N>=2)個存儲塊,並存在一個函數f(來源渠道,用戶標識),對於給定的一組(來源渠道,用戶標識),總能將其分發到一個固定的存儲塊內。那麼可以使用此函數將5000W行訪問記錄盡量均勻的分發至N個存儲塊上,並同時使用此函數將歷史訪問記錄也分發至這些存儲塊上。由於相同的一組記錄,肯定會被分配至同一個存儲塊,所以比較時,只需要分別比較各個存儲塊上當日新增記錄與歷史訪問用戶,然後將N個存儲塊上比較的結果匯總,即可得到最終結果。
假設歷史訪問用戶數據已通過函數f(來源渠道,用戶標識)被分發至了N個歷史文件H1、H2、…、HN。則詳細處理步驟如下:
1、將F中的內容使用函數f(來源渠道,用戶標識),分發至文件F1、F2、…、FN內。(可開M(M>=2)個並行,且若N-M越大,同時向同一文件寫入數據的概率越小)
2、將文件F1、F2、…、FN內的訪問記錄去重。(可開N個並行分別處理對應的N個文件)。
3、將文件Fn(1=<n<=N)去重後的結果與對應的歷史文件Hn比較得出新增用戶結果Rn。(可開N個並行分別處理對應的N個文件且當N足夠大時,實際要處理數據的量級就會相當小)。
4、合並第3步得到的結果R1、R2、…、RN即可得到當日新增用戶。(可並行)
5、為使歷史數據文件H1、H2、…、HN中的數據最全,將結果R1、R2、…、RN分別寫入對應的歷史文件中。(可並行)
本方案主要有以下優點:
1、數據的分發、處理、合並都可並行處理,明顯提高了處理效率。
2、由於每個存儲塊上的新增數據,只需要與它對應存儲塊上的歷史數據比較即可,大大減少了比較次數。(對於當日每一條記錄來說,都只需要與大約歷史的N分之一條數據去比較)
3、基本不需要考慮歷史全量數據的保存及獲取問題。
本方案缺點:
1、處理方案明顯變的復雜許多,不僅需要處理數據的分發,處理,還需要一個並行的快速收集方法。
2、可能需要多台伺服器並行處理。
本方案難點:
1、一個穩定(對於相同的一組來源渠道和用戶標識,必定會被分發至同一存儲塊)、快速(根據一條來源渠道和用戶標識數據,可以快速的計算出它將要被分發至的存儲塊)、均勻(當日新增數據及歷史數據都能盡量均勻的被分發至N個存儲塊,最理想的情況是每個存儲塊上分發到的數據都是總數據的N分之一)的分發函數至關重要。
2、如何分發、並行處理及匯總數據。
Ⅵ 面試題:oracle資料庫優化
oracle資料庫優化的話主要有以下幾個方面(我接觸過的,可能不全面):
1 查詢語句的優化,這個主要是根據語句和資料庫索引的情況,結合查詢計劃的分析結果,對性能較低的查詢語句進行重寫,在執行查詢前執行表分析語句也可以算這里;
2 數據結構優化,這個包括根據實際的應用中業務邏輯,對資料庫的結構進行重新設計,或者創建相關索引里提高查詢效率;
3 資料庫設置優化,這方面主要是調整資料庫和數據結構的相關參數提高應用訪問系統的效率;
4 存儲結構優化,在數據量較大的情況下,可以考慮通過資料庫的存儲結構進行優化,比如對數據進行partition,將數據存儲在磁碟陣列伺服器上等。
我的經驗有限,以上是部分建議
Ⅶ 求:存儲過程面試題!
其實存儲過程的基本寫法我相信你都知道了。
面試這種語言不要緊張,估計多數是要考你對sql效率概念的理解。
普通的sql語句誰都會寫的,但是這樣的語句往往會造成程序的低效,在壓力比較大的伺服器上,很有可能造成系統的癱瘓。
注意幾點:
1、寫語句要用到索引
2、not exists 替換 not in
3、exists 替換 in
4、盡量不要用3個表以上的連接,寧可單個單個取
5、注意書寫規則,要寫的明白寫,錯誤信息返回那個地方要注意
6、寫游標的話,要注意有退出的地方和關閉游標。
7、變數之間要注意轉換,隱式的轉換往往會耗掉更多的時間。
這些是最基本的了,你需要查閱相關資料進行了解下。
Ⅷ 資料庫存儲過程有哪些,面試題
/*
系統存儲過程很多,有些常用,有些不常用
常用:
sp_attach_db附加資料庫到一個伺服器中
sp_columns返回在當前環境中列的信息
sp_databases列出當前系統中的資料庫
sp_configure顯示或修改當前伺服器的全局配置
sp_depends顯示資料庫對象的依賴信息
sp_executesql執行動態的T-SQL語句
sp_help報告有關資料庫對象的信息
sp_helpdb返回指定資料庫或全部資料庫的信息
sp_helptext顯示規則、默認值、存儲過程、觸發器、視圖等的未加密的文本定義信息
sp_indexes返回指定遠程表的索引信息
sp_lock返回有關鎖的信息
sp_password增加或者修改指定login的口令
sp_rename更改用戶創建的資料庫對象名稱
sp_renamedb更改資料庫名稱
sp_spaceused顯示資料庫的空間使用情況
sp_tables返回在當前環境中可以被查詢的對象的列表
sp_who提供當前用戶和進程的信息
不常用:
sp_addlinkedserver創建一個允許執行分布式查詢的鏈接伺服器
sp_addlinkedsrvlogin在本地伺服器和遠程伺服器之間創建login帳戶的映射關系
sp_addlogin創建一個新的login帳戶
sp_add_agent_parameter在代理文件中增加一個參數
sp_add_agent_profile為復制代理增加一個代理文件
sp_add_alert創建一個警報
sp_add_category在伺服器上,增加一種作業、警報或者操作員的特定分類
sp_add_data_file_recover_suspect_db當資料庫復原不能完成時,向文件組增加一個數據文件
sp_add_file_recover_suspect_db對於復原有問題的資料庫增加一個文件
sp_add_job增加一個sqlserveragent可以執行的作業
sp_add_jobschele為作業創建調度
sp_add_jobserver把指定的作業增加到指定伺服器上
sp_add_jobstep在作業中增加一步或一個操作
sp_add_log_file_recover_suspect_db當資料庫復原不能完成時,向文件組增加一個日誌文件
sp_add_notification為警報創建一個通知
sp_add_operator為警報或者作業創建一個操作員
sp_add_targetservergroup增加指定的伺服器組
sp_add_targetsvrgrp_member在指定的目標伺服器組增加一個目標伺服器
sp_addalias在資料庫中為login帳戶增加一個別名
sp_addapprole在資料庫中增加一個特殊的應用程序角色
sp_addarticle創建文章,並把該文章添加到出版物中
sp_adddistpublisher創建一個使用本地分布伺服器的出版伺服器
sp_adddistributiondb在分布伺服器上創建一個新的distribution資料庫
sp_adddistributor增加一個分布伺服器
sp_addextendedproc在系統中增加一個擴展存儲過程
sp_addgroup在當前資料庫中增加一個組
sp_addmergearticle為一個已有的合並出版物創建一個文章
sp_addmergefilter為了連接另外一個表,創建一個合並過濾器
sp_addmergepublication創建一個新的合並出版物
sp_addmergepullsubscription增加一個拉回類型的訂閱物
sp_addmergepullsubscription_agent在訂閱伺服器上,為合並拉回訂閱物創建一個代理
sp_addmergesubscription創建一個推出或者拉回類型的訂閱物
sp_addmessage在系統中增加一個新的錯誤消息
sp_addpublicaton創建一個快照復制或者事務復制出版物
sp_addpublicaton_snapshot創建一個快照代理
sp_addpullsusscription在當前訂閱伺服器的資料庫中增加一個拉回或者匿名訂閱物
sp_addpullsusscription_agent在訂閱伺服器的資料庫中增加一個新的代理
sp_addremotelogin在本地伺服器上增加一個遠程login帳戶,允許執行遠程存儲過程調用
sp_addrole在當前資料庫中增加一個角色
sp_addrolemember為當前資料庫中的一個角色增加一個安全性帳戶
sp_addserver添加一個遠程或者本地伺服器
sp_addsrvrolemember為固定的伺服器角色增加一個成員
sp_addsubscriber增加一個新的訂閱伺服器
sp_addsubscriber_schele為分布代理和合並代理增加一個調度
sp_addsubscription訂閱文章並且設置訂閱伺服器的狀態
sp_addsynctrigers在訂閱伺服器上創建一個立即修改觸發器
sp_addtabletocontents在合並跟蹤表中插入一個參考
sp_addtype創建一個用戶定義的數據類型
sp_admpdevice增加一個備份設備
sp_adser在當前資料庫中為一個新用戶增加一個安全性帳戶
sp_altermessage修改錯誤信息的狀態
sp_addly_job_to_targets把作業應用到一個或者多個目標伺服器
sp_approlepassword在當前資料庫中改變應用程序角色的口令
sp_aarticle_validation為指定的文章初始化確認請求
sp_aarticlecolumn指定在文章中使用的列
sp_aarticlefilter創建一個用於水平過濾數據的過濾器
sp_articleview當表被過濾時,為文章創建一個同步化對象
sp_attach_single_file_db在當前伺服器中,附加一個只有一個數據文件的資料庫
sp_aautostats對於一個指定的索引或統計,自動顯示updatestatistics的狀態
sp_bindefault把默認值綁定到列或用戶定義的數據類型上
sp_bindrule把規則綁定到列或用戶定義的數據類型上
sp_bindsession綁定或解除綁定與實例中的其它事務的連接
sp_browsereplcmds在分布資料庫中返回一種可讀格式的結果集
sp_catalogs返回指定連接伺服器中的系統目錄列表,在本地伺服器中等價於資料庫列表
sp_certify_removable確認在可移動介質上用於分布的資料庫是否正確配置
sp_change_agent_parameter修改復制代理配置使用的參數
sp_change_agent_profile修改復制代理配置使用的配置參數
sp_change_users_login修改login與當前資料庫中用戶之間的關系
sp_changearticle改變文章的屬性
sp_changedbowner改變當前資料庫的所有者
sp_changedistpublisher改變分布出版伺服器的屬性
sp_changedistributor_password改變分布伺服器的口令
sp_changedistributor_property改變分布伺服器的屬性
sp_changedistribtutiondb改變分布資料庫的屬性
sp_changegroup改變安全性帳戶所屬的角色
sp_changemergearticle改變合並文章的屬性
sp_changemergefilter改變一些合並過濾器的屬性
sp_changemergepublication改變合並出版物的屬性
sp_changemergepullsubscription改變合並拉回出版物的屬性
sp_changemergesubscription改變合並的推出或者拉回出版物的屬性
sp_changeobjectowner改變對象的所有者
sp_changepublication改變出版物的屬性
sp_changesubscriber改變用於訂閱伺服器的選項
sp_changesubscriber_schele改變用於分布式代理和事務代理的訂閱伺服器的調度
sp_changesubstatus改變訂閱伺服器的狀態
sp_column_privileges返回列的許可權信息
sp_column_privileges_ex返回在鏈接伺服器上指定表的列的許可權信息
sp_columns_ex返回在鏈接伺服器上列的信息
sp_create_removable創建一個可移動介質資料庫
sp_createstats創建單列的統計信息
sp_cursor用於請求定位更新
sp_cursor_list報告當前打開的伺服器游標屬性
sp_cursorclose關閉和釋放游標
sp_cursorfetch從游標中取出數據行
sp_cursoropen定義與游標和游標選項相關聯的SQL語句,然後填充游標
sp_cursoroption用於設置各種游標選項
sp_cycle_errorlog關閉錯誤日誌文件重新開始錯誤記錄
sp_datatype_info返回當前環境支持的數據類型信息
sp_dbfixedrolepermission顯示每一個固定資料庫角色的許可
sp_dboption顯示或修改資料庫選項
sp_dbremove刪除資料庫和與該資料庫相關的所有文件
sp_defaultdb設置登錄帳戶的默認資料庫
sp_defaultlanguage設置登錄帳戶的默認語言
sp_delete_alert刪除警報
sp_delete_backuphistory刪除備份和恢復的歷史信息
sp_delete_category刪除指定類型的作業、警報和操作員
sp_delete_job刪除一個作業
sp_delete_jobschele刪除作業的調度
sp_delete_jobserver刪除指定的目標伺服器
sp_delete_jobstep從作業中刪除指定的作業步驟
sp_delete_notfication刪除發送給某個操作員的所有通知
sp_delete_operator刪除操作員
sp_delete_targetserver從可以使用的目標伺服器列表中刪除指定的伺服器
sp_delete_targetservergroup刪除指定的目標伺服器組
sp_delete_targetsvrgrp_member從目標伺服器組中刪除一個目標伺服器
sp_deletemergeconflictrow刪除沖突表中的記錄行
sp_denylogin防止window用戶或群組連接到sqlserver
sp_describe_cursor報告伺服器游標的屬性
sp_describe_cursor_columns報告在伺服器游標的結果集中列的屬性
sp_describe_cursor_tables報告伺服器游標參考的基表信息
sp_detach_db分享伺服器中的資料庫
sp_drop_agentparameger刪除配置文件中的一個或者多個參數
sp_drop_profile刪除配置文件
sp_dropalias刪除一個帳戶的別名
sp_dropapprole刪除當前資料庫中的應用程序角色
sp_droparticle從出版物中刪除一篇文章
sp_dropdevice刪除資料庫或者備份設備
sp_dropdistpublisher刪除出版伺服器
sp_dropdistributiondb刪除分布資料庫
sp_dropdistributor刪除分布伺服器
sp_dropdropextendedproc刪除一個擴展存儲過程
sp_dropgroup從當前資料庫中刪除角色
sp_droplinkedsrvlogin刪除一個本地伺服器和連接伺服器的映射帳戶
sp_droplogin刪除一個登錄帳戶
sp_dropmergearticle從合並出版物中刪除一篇文章
sp_dropmergefilter刪除一個合並過濾器
sp_dropmergepublication刪除一個合並出版物和與其相關的快照復制
sp_dropmergepullsubscription刪除一個合並拉回訂購物
sp_dropmergesubscription刪除一個訂閱物
sp_dropmessage刪除一個消息
sp_droppublication刪除出版物和與其相關的文章
sp_droppullsubscription刪除當前訂閱伺服器資料庫中的訂閱物
sp_dropremotelogin刪除一個遠程登錄帳戶
sp_droprole從當前資料庫中刪除一個角色
sp_droprolemember從當前資料庫中的一個角色中刪除一個安全性帳戶
sp_dropserver刪除一個遠程或者連接伺服器列表中的伺服器
sp_dropsrvrolemember從一個固定的伺服器角色中刪除一個帳戶
sp_dropsubscriber刪除一個訂閱伺服器
sp_dropsubscription刪除訂閱物
sp_droptype刪除一種用戶定義的數據類型
sp_dropuser從當前資料庫中刪除一個用戶
sp_dropdropwebtask刪除以前版本定義的web任務
sp_dsninfo從一個與當前伺服器相關的分布伺服器返回ODBC和OLEDB數據源的信息
sp_mpparamcmd返回存儲在分布資料庫中的參數化命令的詳細信息
sp_enumcodepages返回一個字元集和代碼頁的列表
sp_enumcustomresovers返回所有可用的定製解決方案表表
sp_enumdsn返回所有可用的odbc和oledb數據源列表
sp_enumfullsubscribers返回訂閱伺服器的列表
sp_expired_subscription_cleanup周期性地檢查訂閱物的狀態是否失效
sp_fkeys返回當前環境的外鍵信息
sp_foreignkeys返回參照連接伺服器的表的主鍵的外鍵
sp_fulltext_catalog創建和刪除全文本目錄
sp_fulltext_column指定某一個列是否參加全文本索引
sp_fulltext_database從當前資料庫中初始化全文本索引
sp_fulltext_service改變MicrosoftSearchService屬性
sp_fulltext_table標記用於全文本索引的表
sp_generatefilters在外鍵表上創建一個過濾器
sp_get_distributor確定一個分布伺服器是否安裝在某個伺服器上
sp_getbindtoken創建一個綁定的連接文本
sp_getmergedeletype返回合並刪除的類型
sp_grant_publication_access在出版物的訪問列表中增加一個用戶
sp_grantdbaccess在當前資料庫中增加一個安全性帳戶
sp_grantlogin允許Windows用戶或群組連接到SQLServer
sp_help_agent_default檢索作為參數傳送的代理類型的默認配置的標識號
sp_help_agent_parameter返回代理配置的所有參數
sp_help_agent_profile返回指定代理的配置
sp_help_alert報告有關警報的信息
sp_help_category提供有關作業、警報、操作員的指定種類的信息
sp_help_downloadlist列出有關作業的信息
sp_help_fulltext_catalogs返回有關全文本索引表的信息
sp_help_fulltext_columns返回標記全文本索引的列信息
sp_help_fulltext_columns_cursor使用游標檢索標記為全文本的索引列
sp_help_fulltext_tables返回標記為全文本索引的表
sp_help_fulltext_tables_cursor使用游標返回標記為全文本索引的表
sp_help_job返回有關作業的信息
sp_help_jobhistory提供有關作業的歷史信息
sp_help_jobschele返回作業的調度信息
sp_help_jobserver返回給定作業的伺服器信息
sp_help_jobstep返回作業的步驟信息
sp_help_operator返回有關操作員的信息
sp_help_publication_access返回可以訪問指定出版物的帳戶列表
sp_help_targetserver列出全部目標伺服器
sp_help_targetservergroup列出指定伺服器組中的全部目標伺服器
sp_helparticle顯示有關文章的信息
sp_helpconstraint返回有關約束的類型、名稱等信息
sp_helpdbfixedrole返回固定的伺服器角色的列表
sp_helpdevice返回有關資料庫文件的信息
sp_helpdistpublisher返回充當分布伺服器的出版伺服器的屬性
sp_helpdistributiondb返回分布資料庫的屬性信息
sp_helpdistributor列出分布伺服器、分布資料庫、工作目錄等信息
sp_helpextendproc顯示當前定義的擴展存儲過程信息
sp_helpfile返回與當前資料庫相關的物理文件信息
sp_helpfilegroup返回與當前資料庫相關的文件組信息
sp_helpgroup返回當前資料庫中的角色信息
sp_helpindex返回有關表的索引信息
sp_helplanguage返回有關語言的信息
sp_helplinkedsrvlogin返回鏈接伺服器中映射的帳戶信息
sp_helplogins返回有關login和與其相關的資料庫用戶信息
sp_helpmergearticle返回有關合並文章的信息
sp_helpmergearticleconflicts返回有關沖突的出版物中的文章信息
sp_helpmergeconflictrows返回在指定沖突表中的行
sp_helpmergefilter返回有關合並過濾器的信息
sp_helpmergepublication返回有關合並出版物的信息
sp_helpmergepullsubscription返回有關拉回訂閱物的信息
sp_helpmergesubscription返回有關推出訂閱物的信息
sp_help_notification報告對於給定操作員的警報信息
sp_helppublication返回有關出版物的信息
sp_helprole返回當前資料庫中的角色信息
sp_helprolemember返回當前資料庫中角色成員的信息
sp_helprotect返回有關用戶許可的信息
sp_helpserver顯示特定遠程或者復制伺服器的信息
sp_helpsort顯示系統的排列順序和字元集的信息
sp_helpsrvrole顯示系統中的固定伺服器角色列表
sp_helpsrvrolemember顯示系統中的固定伺服器角色成員的信息
sp_helpsubscrberinfo顯示有關訂閱伺服器的信息
sp_helpsubscription顯示有特定出版物等有關的訂閱物信息
sp_helpsubscription_properties檢索安全性信息
sp_helptrigger顯示觸發器的類型
sp_helpuser顯示當前資料庫中的用戶、WindowsNT用戶和組、角色等信息
sp_indexoption為用戶定義的索引設置選項
sp_link_publication設置立即修改訂閱伺服器的同步化觸發器使用的配置和安全性信息
sp_linkedservers返回在本地伺服器上定義的鏈接伺服器的列表
sp_makewebtask創建一個執行html文檔的任務
sp_manage_jobs_by_login刪除或者重新指定屬於login的作業
sp_mergemmyupdate製作用於合並復制的修改備份
sp_mergesubscription_cleanup刪除元數據
sp_monitor顯示系統的統計信息
sp_msx_defect從多個伺服器操作中刪除當前伺服器
sp_msx_enlist增加當前伺服器到可用的目標伺服器列表中
sp_pkeys返回某個表的主鍵信息
sp_post_msx_operation插入一些目標伺服器可以執行的信息
sp_primarykeys返回主鍵列的信息
sp_processmail使用擴展存儲過程修改郵件信息
sp_procoption設置或者顯示過程選項
sp_publication_validation初始化文章校驗請求
sp_purge_jobhistory刪除作業的歷史記錄
sp_recompile使存儲過程和觸發器在下一次運行時重新編譯
sp_refreshsubscriptions在拉回出版物中增加訂閱物到文章中
sp_refreshview刷新指定視圖的元數據
sp_reinitmergepullsubscription標記一個合並拉回訂閱
sp_reiniteergesubscription標記一個合並訂閱
sp_reinitpullsubscription標記一個事務訂閱或者匿名訂閱
sp_reinitsubscription重新初始化訂閱
sp_remoteoption顯示或者修改遠程登錄帳戶的選項
sp_remove_job_from_targets從給定的目標伺服器中刪除指定的作業
sp_removedbreplication從資料庫中刪除所有的復制對象
sp_replcounters返回復制的統計信息
sp_repldone修改伺服器做的分布事務的統計信息
sp_replflush處理文章的高速緩沖存儲區
sp_replication_agent_checkup檢查每一個分布資料庫
sp_replicationdboption在當前資料庫中設置復制資料庫的選項
sp_replsetoriginator用於在事務復制中檢測循環登錄
sp_replshowcmds返回標記復制的事務命令
sp_repltrans返回在出版資料庫事務日誌中的所有事務的結果集
sp_resetstatus重新設置異常資料庫的形態
sp_resync_targetserver重新同步所有的多伺服器作業
sp_revoke_publication_access從出版資料庫的訪問列表中刪除login帳戶
sp_revokedbaccess從當前資料庫中刪除安全性帳戶
sp_revokelogin刪除系統的login帳戶
sp_script_synctran_commands生成一個可以用於立即修改訂閱物的腳本
*/
Ⅸ 幫忙給弄一些asp.net工程師面試時的筆試題。謝謝
1、簡述private,protected,public,internal修飾符的訪問許可權
1.private私有的,public公共的,protected受保護的
internal內部許可權的
private : 私有成員, 在類的內部才可以訪問。
protected : 保護成員,該類內部和繼承類中可以訪問。
public : 公共成員,完全公開,沒有訪問限制。
internal: 在同一命名空間內可以訪問。
2.請編程遍歷頁面上所有TextBox控制項並給它賦值為stringEmpty
前台的代碼:
foreach (Control txtobj in this.Page.Controls)
{
if (txtobj.GetType().Name == "TextBox")
{
// ((TextBox)txtobj).Text = "";//這是第一種方法賦值,第二種在下面
TextBox tb = new TextBox();
tb = (TextBox)this.FindControl(txtobj.ID); nbsp;
tb.Text = string.Empty;
}
後台代碼:
foreach(Control ctl in this.Controls)
{
if(ctl is TextBox){
(ctl as TextBox).Text = string.Empty;
}}
}
4.ASP.net的身份驗證方法有哪些?分別是什麼原因?
1、 Windows 身份驗證提供程序
提供有關怎麼將 Windows 身份驗證與 Microsoft Internet 信息服務 (IIS) 身份驗證結合用來確保 ASP.NET 應用程序安全的信息。
2、 Forms 身份驗證提供程序
提供有關怎麼用您自己的代碼創建應用程序特定的登陸窗體並執行身份驗證的信息。用 Forms 身份驗證的一種簡便方法是用 ASP.NET 成員資格和 ASP.NET 登陸控制項,它們一起提供了一種只需少量或無需代碼就可以收集、驗證和管理用戶憑據的方法。有關更多信息,請
參見用成員資格管理用戶和 ASP.NET 登陸控制項概述。
3、 Passport 身份驗證提供程序
提供有關由 Microsoft 提供的集中身份驗證服務的信息,該服務為成員站點提供單一登陸和核心配置文件服務。
5.在C#中string str=null 與string str=「」請盡量使用文字說明其中的區別
string str=null;不會開辟內存給str,string str="";會開辟一塊內存,值為空字元串
6.try{}里有一個return語句,那麼緊跟在這個try後的finaliy{}里的code會不會被執行,什麼時候被執行。在return前還是後?
finally()代碼塊 無論什麼情況都會被執行,在return之後。
下面是個測試程序public class FinallyTest {
public static void main(String[] args) {
System.out.println(new FinallyTest().test()); }
static int test() {
int x = 1;
try{
x++;
return x;
}finally{
++x;
} }}
肯定執行了你在finally里加一條輸出語句你就知道了但結果為什麼會是2呢?在try語句中,在執行return語句時,要返回的結果已經准備好了,
就在此時,程序轉到finally執行了。在轉去之前,try中先把要返回的結果存放到不同於a的局部變數中去,
執行完finally之後,在從中取出返回結果,因此,即使finally中對變數a進行了改變,但是不會影響返回結果。
它應該使用棧保存返回值。
7.ASP.NET與ASP相比,主要有哪些進步?
1.網頁內容與程序代碼分離2.多語言支持3.執行效率更高4.面向對象的特性5.運行在.net平台上
8.請說明在.net中常用的幾種頁面間傳遞參數的方法。並說出他們的優缺點。
QueryString此方法的優點是簡單、方便,缺點是能傳遞的數據量少,而且不能傳遞對象。
Session該 方 法 的 特點是 :
(1)用戶數據存儲在伺服器端;
(2)ASP.NET 中的Session 對象也可以不依賴Cookie 而正常工作;
(3)可以直接存儲對象,且無大小限制;
(4)有效期與用戶的活動時間有關,具體為用戶活動時間+自定義延遲時間。該方法的缺點是:由於Web 應用程序對每個用戶都會生成 Session 變數,因此它會隨著用戶數量的增多而加重伺服器的負擔。如果數據量比較小,Sessionss 對象是保存只需要在當前對話中保持
的特定數據的極好位置。
cookie該方法的缺點是:並非所有的瀏覽器都支持Cookie;用戶可以禁用和刪除它;信息採用明文保存,安全性差。當特定的用戶需要特定的數據片,並且需要把數據在某個可變的時段中保持的時候,Cookie 就非常方便,存在於客戶端,不佔用伺服器資源。
static靜態變數,可能直接通類名來調用,優點是如果善加利用,則可以有效提高數據傳遞效率,缺點是如果濫用,則會導致用戶或頁面間數據紊亂,造成極大的隱患。
9.DataReader與Dataset有什麼區別?
dataset表示一個數據集,是數據在內存中的緩存。 可以包括多個表
DatSet 連接資料庫時是非面向連接的。把表全部讀到Sql中的緩沖池,並斷開於資料庫的連接
datareader 連接資料庫時是面向連接的。讀表時,只能向前讀取,讀完數據後有用戶決定是否斷開連接。
10.什麼叫做SQL注入,在.net 中如何防止?請舉例說明
sql注入大都是SQL語法里的一些組合,通過執行SQL語句進而執行攻擊者所要的操作,其主要原因是程序沒有細致地過濾用戶輸入的數據,致使非法數據侵入系統。
.net中可以使用帶參數的sql語句或者直接調用存儲過程可以有效的防止sql注入攻擊
還可以對用戶的輸入進行校驗,可以通過正則表達式,或限制長度;對單引號和
雙"-"進行轉換等。