最近在做資料庫的移轉,因為資料庫中的東綁西綁的,導致無法很簡單的完成,最後只好土法煉鋼,先將結構建立好後,然後用INSERT INTO去把資料轉過去,討厭的是還有很多自動編號的欄位會造成錯誤,這部份就只好特別挑出來處理,首先就要先找出有哪些Table中有自動編號的欄位了
SELECT QUOTENAME(t.TABLE_SCHEMA) + '.' + QUOTENAME(t.TABLE_NAME) AS TableName, c.COLUMN_NAME AS ColumnName, c.DATA_TYPE AS 'DataType', IDENT_CURRENT(t.TABLE_SCHEMA + '.' + t.TABLE_NAME) AS CurrentIdentityValue, CASE c.DATA_TYPE WHEN 'bigint' THEN (IDENT_CURRENT(t.TABLE_SCHEMA + '.' + t.TABLE_NAME) * 100.) / 9223372036854775807 WHEN 'int' THEN (IDENT_CURRENT(t.TABLE_SCHEMA + '.' + t.TABLE_NAME) * 100.) / 2147483647 WHEN 'smallint' THEN (IDENT_CURRENT(t.TABLE_SCHEMA + '.' + t.TABLE_NAME) * 100.) / 32767 WHEN 'tinyint' THEN (IDENT_CURRENT(t.TABLE_SCHEMA + '.' + t.TABLE_NAME) * 100.) / 255 END AS 'PercentageUsed' FROM INFORMATION_SCHEMA.COLUMNS AS c INNER JOIN INFORMATION_SCHEMA.TABLES AS t ON c.TABLE_SCHEMA = t.TABLE_SCHEMA AND c.TABLE_NAME = t.TABLE_NAME WHERE COLUMNPROPERTY(OBJECT_ID(t.TABLE_SCHEMA + '.' + t.TABLE_NAME), c.COLUMN_NAME, 'isIdentity') = 1出處:http://wushinetlife.blogspot.tw/2012/03/blog-post_15.html
3 則留言:
SQL 對 SQL 移轉,大量匯出匯入是最快速的喔,查查 BCP OUT 和 BULK INSERT ,並小心 LOG 檔的大小,免得讓它一直變大 ~~
Log檔就是定時去縮小它呀
反正我們每天都有完整備份
每小時都有交易備份!!!
當交易資料越來越多,達到 Log File 大小的上限,預設 Log File 是會自動成長變大,交易備份只會備份 Log File 內的交易資料,不會壓縮 Log File 的大小,要縮小 Log File 大小,只有用壓縮才可以,但壓縮會造成硬碟磁區不連續而降低硬碟IO,沒有必要就不要作。
這篇是匯資料匯到 Log 檔爆增的文章可以參考看看 ~~
http://blog.darkthread.net/blogs/darkthreadtw/archive/2008/01/12/1507.aspx
大量匯入資料時,控制交易資料很重要,不要讓 Log File 爆增把硬碟塞爆,沒有硬碟空間會比匯不進去更難處理,給你參考 ~~ ^_^ ~~
張貼留言