台灣最具影響力的-資訊專家社群 - 讓您成為最有價值的IT專業人才
線上人數
476
 
會員總數:230637
接案會員:6774
文章總數:2320
討論主題:176414
歡迎您免費加入會員
討論區列表 >> MS SQL >> Table的資料量過大,要如何做備份的工作呢?

[變換順序]
[我要回覆]


回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
Table的資料量過大,要如何做備份的工作呢?
價值 : 20 QP  點閱數:4093 回應數:19

點圖分享到Plurk吧!
樓主

kevin
初級專家
1283 102
1916 381
發送站內信

請教大家,因為資料表每天會新增好幾十萬筆紀錄,如果想要每三個月自動將table中的資料移轉到別的地方(新的table或檔案..等等 ex.2007/3/1.xls、2007/6/1.xls、2007/9/1.xls、2007/12/1.xls、.........),並把原來的table清空,該如何著手呢?

或者是有其他的備份方式嗎??
本篇文章發表於2007-02-02 15:00
什麼是iT Power資訊報 新手會員瞧一瞧
1樓
回應

小君
捐贈 VP 給 小君 檢舉此回應
SQL2000還是SQL2005?

可用DTS做好轉出為XLS的封裝或用SSIS做好封裝,
利用SQL Server Agent設為自動每三個月執行!
一個作業中,可以設定多個步驟,先執行封裝,再執行清除資料表即可!


本篇文章回覆於2007-02-03 09:05
--未登入的會員無法查看對方簽名檔--
2樓
另外,
如果每天都新增「好幾十萬筆」記錄的話,
最好不要三個月才做一次,
最好每天都做一次,
好幾十萬筆?
說不定轉檔轉一天都轉不完,
如果三個月才轉一次,
說不定得轉個三天三夜 -_-|||


本篇文章回覆於2007-02-03 22:24
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

kevin
檢舉此回應
請教一下,如果使用SQL2000的DTS轉存到另一個table,有辦法自動讓它每三個月轉存到新的table嗎?(ex.table20070101、table20070401、table20070701..........),謝謝^^




本篇文章回覆於2007-02-05 10:13
--未登入的會員無法查看對方簽名檔--
4樓
回應

Jeff
捐贈 VP 給 Jeff 檢舉此回應
你設定好 DTS 後,去 Window 的「附屬應用程式\系統工具\排定的工作」設定排程執行這個 DTS 就可以了。
設定的 DTS 可以透過命令列(Command Line) 的方式執行,去它的 Help 查一下應該就可以找到。


本篇文章回覆於2007-02-05 12:30
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

kevin
檢舉此回應
我發現excel好像無法一次塞太多筆資料@"@
如果要使用dts自動轉存到資料庫中的其他table,要如何每個月自動新增一個以日期為名稱的Table,然後把資料餵進去呢??


本篇文章回覆於2007-03-26 10:17
--未登入的會員無法查看對方簽名檔--
6樓
最有價值解答

小君
捐贈 VP 給 小君 檢舉此回應
EXCEL檔的資料表有65536的列數限制,
如果只是要在同一個資料庫中移轉資料,我看那就不用DTS啦!
建立一個預存程序:



再用SQL Server Agent,
建立一個工作,去執行這個預存程序,並設定為每月1日執行一次即可!
這樣就會每月都會產生上個月訂單的一張新表
並且也會從訂單清除屬於上個月的訂單


本篇文章回覆於2007-03-26 11:35
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

kevin
檢舉此回應
Dear 小君大大:不好意思,因為沒用過stored procedure,所以不是很懂@"@
我已經把程式碼貼上去並且建好一個stroed procedure,接下來要怎麼用sql agent新增一個job呢??

是先把Stored procedure產出成*.sql檔,在新增Job的時候開啟這個檔嗎??


本篇文章回覆於2007-03-27 15:09
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

kevin
檢舉此回應
不好意思,是t-sql指令下
exec procedure_name 嗎??


本篇文章回覆於2007-03-27 15:46
--未登入的會員無法查看對方簽名檔--
9樓
回應

小君
捐贈 VP 給 小君 檢舉此回應
對!沒錯!就是這樣下指令!


本篇文章回覆於2007-03-27 16:39
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

kevin
檢舉此回應
真的是太謝謝版主了,沒想到stored procedure還有這樣的功能^^
想再請教小君版主,如果是要備到不同的資料庫,又要怎麼做呢??如果利用DTS,要怎麼讓它產生新的table而且還以日期為名??


本篇文章回覆於2007-03-28 14:14
--未登入的會員無法查看對方簽名檔--
11樓
回應

小君
捐贈 VP 給 小君 檢舉此回應
依然不需動用到DTS!
只需要在描述資料表時,改用詳細描述:伺服器.資料庫.結構.物件即可!(當然,前題是要有足夠的權限跨資料庫處理)

改第15、17行
EXEC ('SELECT * INTO 目標資料庫.dbo.[' + @y+@m2 + '] FROM 訂單 WHERE DATEPART(YEAR,訂單日期)='+@y+' AND DATEPART(MONTH,訂單日期)='+CONVERT(NVARCHAR,@m1))
EXEC ('DELETE FROM 來源資料庫.dbo.訂單 WHERE DATEPART(YEAR,訂單日期)='+@y+' AND DATEPART(MONTH,訂單日期)='+CONVERT(NVARCHAR,@m1))



本篇文章回覆於2007-03-28 17:08
--未登入的會員無法查看對方簽名檔--
12樓
作者回應

kevin
檢舉此回應
Dear 小君版主:怎麼樣才是擁有跨資料庫的權限呢?因為我測試的兩台主機ID都是SA、密碼空白,也建了相同名稱的資料庫,但是執行完成後出現""接近 '-' 之處的語法不正確。""的錯誤訊息<---新的table沒有建成功,但原來table的資料被砍掉了@"@




本篇文章回覆於2007-03-29 12:07
--未登入的會員無法查看對方簽名檔--
13樓
作者回應

kevin
檢舉此回應
Dear 小君版主:原來是我的主機名稱中間有"-",用[]刮起來就好了,但之後又出現另一個訊息

名稱為 'server.db.dbo.table' 的 物件 中含有大於前置詞最大數目的前置詞。最大值為 2。




本篇文章回覆於2007-03-29 12:23
--未登入的會員無法查看對方簽名檔--
14樓
回應

小君
捐贈 VP 給 小君 檢舉此回應
你參考一下:
http://msdn2.microsoft.com/zh-tw/library/ms190779.aspx
http://msdn2.microsoft.com/zh-tw/library/ms190212.aspx

你的資料中,可能有text、image等欄位,那些欄位會有前置詞長度!尤其是image,你必須要留4


本篇文章回覆於2007-03-29 12:57
--未登入的會員無法查看對方簽名檔--
15樓
作者回應

kevin
檢舉此回應
Dear 小君版主:我有看了文章,但不是很懂,我的資料表中只有int,float,datetime,varchar(50),varchar(8000)幾種欄位


本篇文章回覆於2007-03-29 13:48
--未登入的會員無法查看對方簽名檔--
[變換順序]
 

回覆
如要回應,請先登入.