-- Sort Logical filenames DECLARE @dbname NVARCHAR(255) DECLARE @groupid INTEGER DECLARE @logicalfilename NVARCHAR(255) DECLARE @newlogicalfilename NVARCHAR(255) DECLARE @tsql VARCHAR(1000) DECLARE databasefiles CURSOR FORWARD_ONLY FOR SELECT DB_NAME(dbid) AS DBName ,groupid ,RTRIM(name) AS LogicalFileName FROM sysaltfiles WHERE DB_NAME(dbid) NOT IN ('master','tempdb','model','msdb','ReportServer','ReportServerTempDB') AND groupid IN (0,1) AND fileid IN (1,2) OPEN databasefiles WHILE (1 = 1) BEGIN FETCH NEXT FROM databasefiles INTO @dbname, @groupid, @logicalfilename IF @@FETCH_STATUS <> 0 BREAK; IF @groupid = 1 SET @newlogicalfilename = @dbname + '_Data' IF @groupid = 0 SET @newlogicalfilename = @dbname + '_Log' IF (@logicalfilename <> @newlogicalfilename) AND (DATABASEPROPERTY(@dbname,'IsOffline')=0) BEGIN SET @tsql = 'ALTER DATABASE [' + @dbname + '] MODIFY FILE (NAME=N''' + @logicalfilename +''', NEWNAME=N'''+ @Newlogicalfilename +''');' RAISERROR (@tsql , 10, 1) WITH NOWAIT EXECUTE (@tsql) END END CLOSE databasefiles DEALLOCATE databasefiles
Friday, 15 July 2011
TSQL : Tidy logical filenames
Works for the first data and log file for a database, renaming the logical filenames to match the database name with either _Data or _Log appended as appropriate.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment