SQL Server數(shù)據(jù)庫重命名
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
在企業(yè)管理器中我們無法對數(shù)據(jù)庫進(jìn)行重命名,下邊介紹兩種方法來實現(xiàn)對SQL Server數(shù)據(jù)庫重命名。
方法一:使用系統(tǒng)存儲過程sp_renamedb 在使用sp_renamedb對數(shù)據(jù)庫進(jìn)行重命名前必須確保所有使用數(shù)據(jù)庫的連接都已關(guān)閉,打開"所有任務(wù)→分離數(shù)據(jù)庫",點擊清除按鈕即可關(guān)閉數(shù)據(jù)庫所有連接,然后在查詢分析器中執(zhí)行如下語句即可完成數(shù)據(jù)庫重命名: 程序代碼 exec sp_renamedb 'olddbname','newdbname' 方法二:新建存儲過程對數(shù)據(jù)庫重命名 本存儲過程可自動關(guān)閉數(shù)據(jù)庫所有連接,然后再調(diào)用sp_renamedb進(jìn)行重命名,代碼如下: 程序代碼 /* 數(shù)據(jù)庫重命名 */ Create procedure sp_renamedbnew ( @dbname varchar(30), @newdbname varchar(30) ) as /* 清除數(shù)據(jù)庫的所有連接 */ 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 其他說明 1.如果提示:"未能排它地鎖定數(shù)據(jù)庫以執(zhí)行該操作",應(yīng)確保關(guān)閉了數(shù)據(jù)庫所有連接再執(zhí)行sp_renamedb; 2.如果提示:"不能用 KILL 來取消您自己的進(jìn)程",則將查詢分析器中的當(dāng)前數(shù)據(jù)庫設(shè)置為非重命名數(shù)據(jù)庫再執(zhí)行sp_renamedbnew。 該文章在 2011/3/14 15:10:12 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |