成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

數據庫 SQL Server
以下的文章主要是淺談SQL Server 2008 FileStream支持,愿在你學習SQL Server 2008 FileStream支持中以起到拋磚引玉的作用。

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

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

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

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

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

SQL SERVER 2008的文件流其實就是二者的統一。文件還是放在文件系統的,但由數據庫進行管理??梢越y一備份和還原。

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

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

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

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

*/

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

 

  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  

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

這里還可以做一些改進,就是加入文件類型的一個字段(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 

對于客戶端編程來說,是沒有區別的,這只是服務器的一個存儲改變

保存

 

保存音樂文件

  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); } 

以上的相關內容就是對SQL Server 2008 FileStream支持的介紹,望你能有所收獲。

【編輯推薦】

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

 

責任編輯:佚名 來源: 清華大學出版社
相關推薦

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

網絡拓撲管理

2010-11-09 16:03:27

2011-10-05 20:57:31

復合一體機常見問題

2018-07-09 16:03:23

AI教育人工智能

2011-12-07 13:21:42

超云服務器云計算

2009-09-08 14:45:24

Linq to SQL支持SQL Serve

2009-04-16 17:55:15

擴展熱插拔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 內存

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技術棧公眾號

主站蜘蛛池模板: 黄色在线免费观看视频网站 | 激情欧美一区二区三区 | 日本视频免费 | 伊人超碰 | 婷婷在线视频 | 欧美一二三 | 女人毛片a毛片久久人人 | 欧美久久精品一级黑人c片 91免费在线视频 | 欧美精品一区二区在线观看 | 免费h在线 | 国产成人短视频在线观看 | 日韩1区| 国产一区二区三区四区 | 91国语清晰打电话对白 | 日韩插插 | 99精品视频免费观看 | 一道本不卡 | 华人黄网站大全 | 国产成人精品一区二区三区四区 | 午夜精品视频 | 国产精品久久久久一区二区三区 | 亚洲在线日韩 | 国产乱码精品一区二区三区忘忧草 | 精品三级在线观看 | 久久久91精品国产一区二区三区 | 亚洲一一在线 | 少妇无套高潮一二三区 | 国产亚洲一区二区精品 | 亚洲区中文字幕 | 成人欧美一区二区三区在线播放 | 精品欧美乱码久久久久久 | 成人影院网站ww555久久精品 | 国产精品视频在线免费观看 | 久久久久久久国产精品视频 | 欧美日韩不卡 | 久久久久成人精品免费播放动漫 | 性欧美精品一区二区三区在线播放 | 99久久中文字幕三级久久日本 | 97人人澡人人爽91综合色 | 福利片在线看 | 中文字幕第三页 |