偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

SQL Server 2008 FileStream支持“真功夫版”

數(shù)據(jù)庫 SQL Server
以下的文章主要是淺談SQL Server 2008 FileStream支持,愿在你學(xué)習(xí)SQL Server 2008 FileStream支持中以起到拋磚引玉的作用。

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

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

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

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

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

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

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

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

然后,在磁盤上面有一個目錄(Test),里面會有一個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  

這一句指示該列要用文件流存儲

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

 

 

  1. )  
  2. FILESTREAM_ON FileStreamGroup1   

 

該行指示存儲到哪一個文件流文件組

 

GO

 

下面代碼無法運行,如果一個表要使用文件流,則必須有一個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 

--這一句指示該列要用文件流存儲

)

 

FILESTREAM_ON FileStreamGroup1 --該行指示存儲到哪一個文件流

 

  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ù)器的一個存儲改變

保存

 

保存音樂文件

  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連接錯誤的緣由有哪些?
  2. SQL Server實例中對另個實例的調(diào)用
  3. SQL Server identity列,美中不足之處
  4. SQL Server DateTime數(shù)據(jù)類型的另類解讀
  5. SQL Server 2000的安全策略的正確打造

 

責(zé)任編輯:佚名 來源: 清華大學(xué)出版社
相關(guān)推薦

2009-02-24 13:15:22

FILESTREAM新特性SQL Server

2009-02-25 11:42:43

FILESTREAM文件流文件管理

2010-11-15 11:25:20

職場

2011-04-22 16:24:05

ME OFFICE 6愛普生傳真

2011-08-29 18:02:29

SQL Server FileStream

2009-10-13 15:43:03

網(wǎng)絡(luò)拓?fù)涔芾?/a>

2010-11-09 16:03:27

2011-10-05 20:57:31

復(fù)合一體機(jī)常見問題

2018-07-09 16:03:23

AI教育人工智能

2011-12-07 13:21:42

超云服務(wù)器云計算

2009-09-08 14:45:24

Linq to SQL支持SQL Serve

2009-04-16 17:55:15

擴(kuò)展熱插拔SQL Server

2011-03-28 16:39:41

SQL Server

2009-08-12 09:19:26

SQL Server

2010-07-22 14:52:00

SQL Server

2011-04-07 09:56:53

SQL Server 內(nèi)存

2010-03-23 09:52:23

SQL Server

2011-02-18 17:31:18

SQL Server

2009-04-16 18:15:19

動作審核審核活動SQL Server

2009-04-16 17:44:31

點贊
收藏

51CTO技術(shù)棧公眾號