Robert L. Stewart
robert at webedb.com
Tue Mar 25 16:06:02 CDT 2008
John, Below is the code to create a DB and Backup a DB. I will let you do the research and get the SQL to do the restore. It is a bit more than your requested single line though. What you want to do is restore the backup you just created to the DB you created. Robert P.S. While you do need to look for line wraps, it is not a problem like VBA. CREATE PROCEDURE dbo. pCreate_Load_DB @DBNameCreate varchar ( 64 ), @DBNameBackup varchar ( 64 ), @data_path nvarchar ( 256 ) = NULL, @BackupLocation varchar ( 500 ) = null, @Drive char ( 1 ), @InstanceName sysname = null, @Drive varchar ( 1 ) = null AS BEGIN SET NOCOUNT ON ; DECLARE @Sql nvarchar ( max ), @ErrorMessage varchar ( 500 ) SET @ErrorMessage = 'No Error' IF @data_path IS NULL BEGIN SET @data_path = ( SELECT SUBSTRING ( physical_name , 1, CHARINDEX ( N 'master.mdf' , LOWER ( physical_name )) - 1) FROM master. sys.master_files WHERE database_id = 1 AND file_id = 1 ) ; END -- execute the CREATE DATABASE statement SET @Sql = 'CREATE DATABASE Sales ON ( NAME = ' + @DBNameCreate + '_dat, FILENAME = ' + CHAR ( 39 ) + @data_path + @DBNameCreate + 'dat.mdf' + CHAR ( 39 ) + ', SIZE = 10, FILEGROWTH = 5 ) LOG ON ( NAME = ' + @DBNameCreate + '_log, FILENAME = ' + CHAR ( 39 ) + @data_path + @DBNameCreate + 'log.ldf' + CHAR ( 39 ) + ', SIZE = 5MB )' EXEC sp_executesql @Sql SET @Drive = 'F' SET @InstanceName = CAST ( ISNULL ( SERVERPROPERTY ( 'InstanceName' ), SERVERPROPERTY ( 'ServerName' )) AS sysname ) SET @BackupLocation = @Drive + ':\SQL_Backups\' + @InstanceName + '\' BEGIN TRY SET @SQL = 'BACKUP DATABASE ' + @DBNameBackup + ' TO DISK=' + CHAR ( 39 ) + @BackupLocation + @DBNameBackup + '_BACKUP.BAK' + CHAR ( 39 ) + ' WITH INIT' EXEC sp_ExecuteSql @SQL -- truncate the log files BEGIN SET @Sql = 'ALTER DATABASE ' + @DBNameBackup + ' SET RECOVERY SIMPLE' EXEC sp_executesql @Sql END BEGIN SET @Sql = 'EXEC sp_dboption ' + char ( 39 ) + @DBNameBackup + CHAR ( 39 ) + ', ' + char ( 39 ) + 'trunc. log on chkpt.' + CHAR ( 39 ) + ', ' + CHAR ( 39 ) + 'TRUE' + CHAR ( 39 ) EXEC sp_executesql @Sql END BEGIN CHECKPOINT END BEGIN SET @Sql = 'DBCC SHRINKFILE (' + @DBNameBackup + '_Log,1)' EXEC sp_executesql @Sql END BEGIN SET @Sql = 'EXEC sp_dboption ' + char ( 39 ) + @DBNameBackup + CHAR ( 39 ) + ', ' + char ( 39 ) + 'trunc. log on chkpt.' + CHAR ( 39 ) + ', ' + CHAR ( 39 ) + 'FALSE' + CHAR ( 39 ) EXEC sp_executesql @Sql END BEGIN SET @Sql = 'ALTER DATABASE ' + @DBNameBackup + ' SET RECOVERY FULL' EXEC sp_executesql @Sql END END TRY BEGIN CATCH SELECT @ErrorMessage = ERROR_MESSAGE () ; END CATCH END