SQL Server數(shù)據(jù)庫(kù)重命名
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
在企業(yè)管理器中我們無(wú)法對(duì)數(shù)據(jù)庫(kù)進(jìn)行重命名,下邊介紹兩種方法來(lái)實(shí)現(xiàn)對(duì)SQL Server數(shù)據(jù)庫(kù)重命名。
方法一:使用系統(tǒng)存儲(chǔ)過(guò)程sp_renamedb 在使用sp_renamedb對(duì)數(shù)據(jù)庫(kù)進(jìn)行重命名前必須確保所有使用數(shù)據(jù)庫(kù)的連接都已關(guān)閉,打開(kāi)"所有任務(wù)→分離數(shù)據(jù)庫(kù)",點(diǎn)擊清除按鈕即可關(guān)閉數(shù)據(jù)庫(kù)所有連接,然后在查詢(xún)分析器中執(zhí)行如下語(yǔ)句即可完成數(shù)據(jù)庫(kù)重命名: 程序代碼 exec sp_renamedb 'olddbname','newdbname' 方法二:新建存儲(chǔ)過(guò)程對(duì)數(shù)據(jù)庫(kù)重命名 本存儲(chǔ)過(guò)程可自動(dòng)關(guān)閉數(shù)據(jù)庫(kù)所有連接,然后再調(diào)用sp_renamedb進(jìn)行重命名,代碼如下: 程序代碼 /* 數(shù)據(jù)庫(kù)重命名 */ Create procedure sp_renamedbnew ( @dbname varchar(30), @newdbname varchar(30) ) as /* 清除數(shù)據(jù)庫(kù)的所有連接 */ declare @spid int declare @sqlforclear nvarchar(100) declare curid cursor forward_only read_only for (select spid from master.dbo.sysprocesses where db_name(dbid)=@dbname) open curid fetch next from curid into @spid while @@fetch_status = 0 begin set @sqlforclear = N'kill ' + cast(@spid as nvarchar(10)) exec sp_executesql @sqlforclear --if @@error = 0 print 'clear:' + cast(@spid as nvarchar(10)) fetch next from curid into @spid end close curid deallocate curid /* 重命名 */ exec sp_renamedb @dbname,@newdbname GO 其他說(shuō)明 1.如果提示:"未能排它地鎖定數(shù)據(jù)庫(kù)以執(zhí)行該操作",應(yīng)確保關(guān)閉了數(shù)據(jù)庫(kù)所有連接再執(zhí)行sp_renamedb; 2.如果提示:"不能用 KILL 來(lái)取消您自己的進(jìn)程",則將查詢(xún)分析器中的當(dāng)前數(shù)據(jù)庫(kù)設(shè)置為非重命名數(shù)據(jù)庫(kù)再執(zhí)行sp_renamedbnew。 該文章在 2011/3/14 15:10:12 編輯過(guò) |
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)... |