|
|
|
|
|
|||||
|
|||||
| 樓主 kevin
發送站內信 |
請教大家,因為資料表每天會新增好幾十萬筆紀錄,如果想要每三個月自動將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資訊報 | 2010年藍色小舖認證專家風雲榜完全名單 |
| 1樓 |
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樓 |
你設定好 DTS 後,去 Window 的「附屬應用程式\系統工具\排定的工作」設定排程執行這個 DTS 就可以了。
設定的 DTS 可以透過命令列(Command Line) 的方式執行,去它的 Help 查一下應該就可以找到。
本篇文章回覆於2007-02-05 12:30
--未登入的會員無法查看對方簽名檔--
|
| 5樓
作者回應
kevin |
我發現excel好像無法一次塞太多筆資料@"@
如果要使用dts自動轉存到資料庫中的其他table,要如何每個月自動新增一個以日期為名稱的Table,然後把資料餵進去呢??
本篇文章回覆於2007-03-26 10:17
--未登入的會員無法查看對方簽名檔--
|
| 6樓
最有價值解答
小君 |
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樓 |
對!沒錯!就是這樣下指令!
本篇文章回覆於2007-03-27 16:39
--未登入的會員無法查看對方簽名檔--
|
| 10樓
作者回應
kevin |
真的是太謝謝版主了,沒想到stored procedure還有這樣的功能^^
想再請教小君版主,如果是要備到不同的資料庫,又要怎麼做呢??如果利用DTS,要怎麼讓它產生新的table而且還以日期為名??
本篇文章回覆於2007-03-28 14:14
--未登入的會員無法查看對方簽名檔--
|
| 11樓 |
依然不需動用到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樓 |
你參考一下:
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
--未登入的會員無法查看對方簽名檔--
|
| 回覆 |
| 如要回應,請先登入. |
|
![]() |
|
|