日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
SQLServer2008FileStream支持“真功夫版”

文章主要描述的是SQL Server 2008 FileStream支持,你如果對SQL Server 2008 FileStream支持有興趣的話你就可以點(diǎn)擊以下的文章進(jìn)行觀看了,你如果對其有興趣的話你就可以點(diǎn)擊以下的文章進(jìn)行觀看了。

創(chuàng)新互聯(lián)專注于旌陽企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,成都商城網(wǎng)站開發(fā)。旌陽網(wǎng)站建設(shè)公司,為旌陽等地區(qū)提供建站服務(wù)。全流程按需制作網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

服務(wù)器有一個(gè)屬性,即指定該服務(wù)器是怎么支持文件流的

實(shí)際上文件流的出現(xiàn)就是為了解決對大對象的存儲(chǔ)中一個(gè)矛盾。

對于大對象,第一種方式是存儲(chǔ)在數(shù)據(jù)庫里面,這種方式一般使用image字段,或者varbinary(max)來做。好處是可以統(tǒng)一備份,但實(shí)際上讀取效率比較低。大于1MB的文件就會(huì)有問題

第二種方式是文件存儲(chǔ)在文件系統(tǒng),而數(shù)據(jù)庫中存儲(chǔ)了一個(gè)路徑。這種方式數(shù)據(jù)庫壓力減輕了,卻很不方便統(tǒng)一備份和管理。

SQL SERVER 2008的文件流其實(shí)就是二者的統(tǒng)一。文件還是放在文件系統(tǒng)的,但由數(shù)據(jù)庫進(jìn)行管理??梢越y(tǒng)一備份和還原。

FILESTREAM不是一個(gè)字段類型,它定義在字段后面,聲明該列用于文件流即可。該列依然是用二進(jìn)制保存的

一般都是在數(shù)據(jù)庫中要特別添加一個(gè)文件組和一個(gè)或多個(gè)文件用來存儲(chǔ)FileStream的數(shù)據(jù)的。

然后,在磁盤上面有一個(gè)目錄(Test),里面會(huì)有一個(gè)filestream.hdr文件

客戶端是透明的。無需要什么修改。

*/

這段代碼的作用是啟用服務(wù)器支持文件流

 
 
 
  1. EXEC sp_filestream_configure  
  2. @enable_level = 3;  
  3. CREATE DATABASE Archive  
  4. ON  
  5. PRIMARY ( NAME = Arch1,  
  6. FILENAME = 'c:labarchdat1.mdf'),  
  7. FILEGROUP FileStreamGroup1 CONTAINS FILESTREAM( NAME = Arch3,  
  8. FILENAME = 'c:labfilestream1')  
  9. LOG ON ( NAME = Archlog1,  
  10. FILENAME = 'c:labarchlog1.ldf')  
  11. GO  
  12. CREATE TABLE Archive.dbo.Records  
  13. (  
  14. [Id] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE,  
  15. [SerialNumber] INTEGER UNIQUE,  
  16. [Chart] VARBINARY(MAX) FILESTREAM NULL  

這一句指示該列要用文件流存儲(chǔ)

這里還可以做一些改進(jìn),就是加入文件類型的一個(gè)字段(FileName)

 
 
 
  1. )  
  2. FILESTREAM_ON FileStreamGroup1   

該行指示存儲(chǔ)到哪一個(gè)文件流文件組

GO

下面代碼無法運(yùn)行,如果一個(gè)表要使用文件流,則必須有一個(gè)GUID列,而且作為唯一鍵列

 
 
 
  1. CREATE TABLE Archive.dbo.Records2  
  2. (  
  3. --[Id] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE,  
  4. [SerialNumber] INTEGER UNIQUE,  
  5. [Chart] VARBINARY(MAX) FILESTREAM NULL 

--這一句指示該列要用文件流存儲(chǔ)

)

FILESTREAM_ON FileStreamGroup1 --該行指示存儲(chǔ)到哪一個(gè)文件流

 
 
 
  1. GO  
  2. INSERT INTO Archive.dbo.Records  
  3. VALUES (newid (), 1, NULL);  
  4. GO  
  5. INSERT INTO Archive.dbo.Records  
  6. VALUES (newid (), 2,  
  7. CAST ('' as varbinary(max)));  
  8. GO  
  9. INSERT INTO Archive.dbo.Records  
  10. VALUES (newid (), 3,  
  11. CAST ('Seismic Data' as varbinary(max)));  
  12. GO  
  13. UPDATE Archive.dbo.Records  
  14. SET [Chart] = CAST('Xray 1' as varbinary(max))  
  15. WHERE [SerialNumber] = 2;  
  16. DELETE Archive.dbo.Records  
  17. WHERE SerialNumber = 1;  
  18. GO  
  19. SELECT * FROM Archive.dbo.Records  
  20. GO 

對于客戶端編程來說,是沒有區(qū)別的,這只是服務(wù)器的一個(gè)存儲(chǔ)改變

保存

保存音樂文件

 
 
 
  1. try  
  2. {  
  3. OpenFileDialog dialog = new OpenFileDialog();  
  4. dialog.Filter = "音樂文件(*.mp3)|*.mp3";  
  5. if (dialog.ShowDialog() == DialogResult.OK)  
  6. {  
  7. using (SqlConnection conn = new SqlConnection(CONNECTIONSTRING)) {  
  8. conn.Open();  
  9. using (SqlCommand cmd = conn.CreateCommand()) {  
  10. cmd.CommandText = "INSERT INTO BINARYTABLE(BINARYCONTENTS) VALUES(@file)";  
  11. FileStream fs = new FileStream(dialog.FileName, FileMode.Open);  
  12. byte[] bytes = new byte[fs.Length];  
  13. fs.Read(bytes, 0, bytes.Length);  
  14. SqlParameter param = new SqlParameter("@file", SqlDbType.VarBinary,1000000);  
  15. param.Value = bytes;  
  16. cmd.Parameters.Add(param);  
  17. MessageBox.Show(cmd.ExecuteNonQuery() == 1 ? "成功保存文件" : "保存文件失敗");  
  18. fs.Close();  
  19. }  
  20. conn.Close();  
  21. }  
  22. }  
  23. else  
  24. MessageBox.Show("用戶取消了操作");  
  25. }  
  26. catch (Exception ex)  
  27. {  
  28. MessageBox.Show(ex.Message);  

讀取

讀取音樂文件

 
 
 
  1. try  
  2. {  
  3. using (SqlConnection conn = new SqlConnection(CONNECTIONSTRING)) {  
  4. conn.Open();  
  5. using (SqlCommand cmd = conn.CreateCommand()) {  
  6. cmd.CommandText = "select top 1 BinaryContents from BinaryTable order by ID desc";  
  7. SqlDataReader reader = cmd.ExecuteReader();  
  8. SaveFileDialog dialog = new SaveFileDialog();  
  9. dialog.Filter = "音樂文件(*.mp3)|*.mp3";  
  10. if (dialog.ShowDialog() == DialogResult.OK)  
  11. {  
  12. reader.Read();  
  13. System.Data.SqlTypes.SqlBinary result = reader.GetSqlBinary(0);//值得注意的是這里并沒有什么GetSqlImage的方法  
  14. FileStream fs = new FileStream(dialog.FileName, FileMode.Create);  
  15. fs.Write(result.Value, 0, result.Length);  
  16. fs.Close();  
  17. reader.Close();  
  18. }  
  19. else  
  20. MessageBox.Show("用戶取消操作");  
  21. }  
  22. conn.Close();  
  23. }  
  24. }  
  25. catch (Exception ex) { MessageBox.Show(ex.Message); } 

以上的相關(guān)內(nèi)容就是對SQL Server 2008 FileStream支持的介紹,望你能有所收獲。

【編輯推薦】

  1. SQL Server2000連接錯(cuò)誤的緣由有哪些?
  2. SQL Server實(shí)例中對另個(gè)實(shí)例的調(diào)用
  3. SQL Server identity列,美中不足之處
  4. SQL Server DateTime數(shù)據(jù)類型的另類解讀
  5. SQL Server 2000的安全策略的正確打造

分享題目:SQLServer2008FileStream支持“真功夫版”
地址分享:http://m.5511xx.com/article/cdssoei.html