最近由于項目需要要做一個小工具。
需求:客戶用的老庫并存儲了一些數(shù)據(jù),用了一段時間,我們根據(jù)客戶提出新功能在老庫的基礎(chǔ)上對新庫進行修改。這些修改有很多細節(jié)方面的修改,包含存儲過程,增加表,修改表字段類型,添加字段。
然后我們自己更新并測試好軟件后,需要改動客戶那邊的老庫,老庫的數(shù)據(jù)是要保存的。
解決方案一:很快我就想到用SQL SERVER 08 R2 自帶的功能,生成新庫腳本。把老庫改個名字,跑新庫腳本,然后通過數(shù)據(jù)庫自帶功能把老庫數(shù)據(jù)導(dǎo)入到新庫數(shù)據(jù)。測試的時候,數(shù)據(jù)量不大,速度還比較理想。
但是這對客戶來說還是很不方便的,且數(shù)據(jù)量大些還是比較費時的。于是,boss就讓我做個小工具吧。
難道我要用程序?qū)崿F(xiàn)以上操作,oh my god !
于是我想啊想。。。。
解決方案二:我就再細一些,直接操作數(shù)據(jù)庫的表吧,對于數(shù)據(jù)庫中存在的表,我給它重新命名,跑個新腳本建表,然后把老表中數(shù)據(jù)插進去。
相關(guān)SQL語句如下:
修改表名:EXEC sp_rename 'oldName' , 'newName'
插入數(shù)據(jù):insert into newTable(column1,column2,.....) select column1,column2,..... from oldTable
更多相關(guān)操作:
參考數(shù)據(jù)庫、表、列的重命名
列出參考內(nèi)容來方便查看
一、更改數(shù)據(jù)庫名
復(fù)制代碼 代碼如下:
sp_renamedb
更改數(shù)據(jù)庫的名稱。
語法
sp_renamedb [ @dbname = ] ' old_name ' ,
[ @newname = ] ' new_name '
參數(shù)
[ @dbname = ] ' old_name '
是數(shù)據(jù)庫的當(dāng)前名稱。old_name 為 sysname 類型,無默認值。
[ @newname = ] ' new_name '
是數(shù)據(jù)庫的新名稱。new_name 必須遵循標(biāo)識符規(guī)則。new_name 為 sysname 類型,無默認值。
返回代碼值
0 (成功)或非零數(shù)字(失敗)
權(quán)限
只有 sysadmin 和 dbcreator 固定服務(wù)器角色的成員才能執(zhí)行 sp_renamedb。
示例
下例將數(shù)據(jù)庫 accounting 改名為 financial。
EXEC sp_renamedb ' accounting ' , ' financial '
復(fù)制代碼 代碼如下:
sp_rename [ @objname = ] ' object_name ' ,
[ @newname = ] ' new_name '
[ , [ @objtype = ] ' object_type ' ]
/////////////////////////////////////////////
A. 重命名表
下例將表 customers 重命名為 custs。
EXEC sp_rename ' customers ' , ' custs '
B. 重命名列
下例將表 customers 中的列 contact title 重命名為 title。
EXEC sp_rename ' customers.[contact title] ' , ' title ' , ' COLUMN '
新聞熱點
疑難解答
圖片精選