"वैकल्पिक डेटाबेस (आपका डेटाबेस) संशोधित फ़ाइल" कमांड केवल तार्किक नामों का नाम बदल देगा। http://www.mssqltips.com/sqlservertip/1891/best-practice-for-renaming-a-sql-server-database/
कृपया ध्यान दें निम्नलिखित: इस पोस्ट xp_cmdshell उपयोग करने के लिए कैसे भी शारीरिक फ़ाइलों का नाम बदलना चलता
1. xp_cmdshell उपयोगकर्ता जो SQL सर्वर प्रक्रिया के रूप में चलाता है के तहत निष्पादित किया जाएगा, और फाइल सिस्टम नहीं हो सकता डेटाबेस फ़ाइलों का नाम बदलने के लिए आवश्यक अनुमतियाँ
2. सुरक्षा कारणों से, xp_xmdshell
अक्षम करने के लिए याद रखें निम्नलिखित उल्लिखित ब्लॉग पोस्ट के आधार पर नामकरण कैसे किया जा सकता है इसका एक उदाहरण है। यह डाटाबेस MyDB डेटाबेस को NewMyDB के साथ बदल देगा। मूल माईडीबी (जिसका नाम बदलकर MyDB_OLD) अलग किया जाएगा।
-- Enable xp_cmdshell:
sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
GO
sp_configure 'xp_cmdshell', 1
RECONFIGURE WITH OVERRIDE
GO
-- Get physical file names:
declare @MyDBOriginalFileName nvarchar(300) = (select physical_name FROM sys.master_files where name = 'MyDB')
declare @MyDBLogOriginalFileName nvarchar(300) = (select physical_name FROM sys.master_files where name = 'MyDB_log')
declare @NewMyDBOriginalFileName nvarchar(300) = (select physical_name FROM sys.master_files where name = 'NewMyDB')
declare @NewMyDBLogOriginalFileName nvarchar(300) = (select physical_name FROM sys.master_files where name = 'NewMyDB_log')
declare @Command nvarchar(500)
declare @Sql nvarchar(2000)
IF (EXISTS (select * from sys.databases where name = 'NewMyDB')
AND EXISTS (select * from sys.databases where name = 'MyDB'))
BEGIN
USE master
ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE NewMyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
-- Set new database name
ALTER DATABASE MyDB MODIFY NAME = MyDB_OLD
ALTER DATABASE NewMyDB MODIFY NAME = MyDB
-- Update logical names
ALTER DATABASE MyDB_OLD MODIFY FILE (NAME=N'MyDB', NEWNAME=N'MyDB_OLD')
ALTER DATABASE [MyDB] MODIFY FILE (NAME=N'NewMyDB', NEWNAME=N'MyDB')
EXEC master.dbo.sp_detach_db @dbname = N'MyDB_Old'
EXEC master.dbo.sp_detach_db @dbname = N'MyDB'
-- Rename physical files
SET @Command = 'RENAME "' + @MyDBOriginalFileName + '" "MyDB_OLD.mdf"'; PRINT @Command
EXEC xp_cmdshell @Command
SET @Command = 'RENAME "' + @MyDBLogOriginalFileName + '" "MyDB_OLD_log.mdf"'; PRINT @Command
EXEC xp_cmdshell @Command
SET @Command = 'RENAME "' + @NewMyDBOriginalFileName + '" "MyDB.mdf"'; PRINT @Command
EXEC xp_cmdshell @Command
SET @Command = 'RENAME "' + @NewMyDBLogOriginalFileName + '" "MyDB_log.mdf"'; PRINT @Command
EXEC xp_cmdshell @Command
-- Attach with new file names
declare @NewMyDBFileNameAfterRename nvarchar(300) = replace(@NewMyDBOriginalFileName, 'NewMyDB', 'MyDB')
declare @NewMyDBLogFileNameAfterRename nvarchar(300) = replace(@NewMyDBOriginalFileName, 'NewMyDB_log', 'MyDB_log')
SET @Sql = 'CREATE DATABASE MyDB ON (FILENAME = ''' + @NewMyDBFileNameAfterRename + '''), (FILENAME = ''' + @NewMyDBLogFileNameAfterRename + ''') FOR ATTACH'
PRINT @Sql
EXEC (@Sql)
ALTER DATABASE MyDB SET MULTI_USER
END
-- Disable xp_cmdshell for security reasons:
GO
sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
GO
sp_configure 'xp_cmdshell', 0
RECONFIGURE WITH OVERRIDE
GO
पहला सवाल यह है कि आप ऐसा करने का प्रयास क्यों कर रहे हैं? – Lazarus
मैं एक उचित पुनः नाम करने की कोशिश कर रहा हूं। भौतिक फ़ाइल नाम अभी भी वही हैं क्योंकि मैं डेटाबेस को अलग करने के बाद एक ही नाम के साथ डेटाबेस नहीं बना सकता। – Abs
संबंधित [SQL डेटाबेस का नाम बदलना] (http://stackoverflow.com/questions/4080430) –