Datenbabk auf andere Datenbank sichern

Blackhawk50000

Erfahrenes Mitglied
Hallo, ich wollte mal fragen ob es möglich ist eine Datenbank mit einer einzigen Stored Procedure auf einen anderen DatenbankServer zu übertragen.
Das ganze ist für folgendes Gut:
Ich habe ein Test System. Auf diesem testsystem ist die Fertige laufende Datenbank. Diese will ich einfach per Aufruf der SP auf den Live Server übertragen.
ich habe schon eine Procedure die mir eine Komplett neue Datenbank aus einer Blanken Vorlagedatenbank erstellt.
Das sieht so aus:

Code:
USE [***Master]
GO
/****** Object:  StoredProcedure [dbo].[CreateNewDatabase]    Script Date: 09/14/2012 08:10:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[CreateNewDatabase] 
	-- Add the parameters for the stored procedure here
	
	@DataBaseName VARCHAR(50),
	@ClubNumber int,
	@ClubName VARCHAR(max),
	@ClubStreet VARCHAR(max),
	@ClubPostCode_City VARCHAR(max),
	@SQLServerPath VARCHAR(max)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	SET NOCOUNT ON;
	
	IF NOT EXISTS(SELECT * FROM sys.databases WHERE name = @DataBaseName)
	BEGIN
		DECLARE @backupPath VARCHAR(max)
		SET @backupPath=@SQLServerPath + '\Backup\Blank_SIKO' 
	
		BACKUP DATABASE [***_blank] 
		TO  DISK = @backupPath 
		WITH NOFORMAT, 
		INIT,  
		NAME = N'CVPnet_blank-Vollständig Datenbank Sichern', 
		SKIP, 
		NOREWIND, 
		NOUNLOAD,  
		STATS = 10
			
		exec('CREATE DATABASE ' + @DataBaseName)	
		
		DECLARE @mdfPath VARCHAR(200)
		SET @mdfPath = @SQLServerPath + '\DATA\' + @DataBaseName + '.mdf'

		DECLARE @ldfPath VARCHAR(200)
		SET @ldfPath = @SQLServerPath + '\DATA\' + @DataBaseName + '.ldf'
			
		exec ('ALTER DATABASE '+@DataBaseName+ ' SET SINGLE_USER WITH ROLLBACK IMMEDIATE')
		
		----Restore Database
		RESTORE DATABASE @DataBaseName
		FROM DISK = @backupPath
		WITH MOVE '***_BLANK' TO @mdfPath,
		MOVE '***_BLANK_log'  TO @ldfPath,
		NOUNLOAD,  
		REPLACE,  
		STATS = 10		

		/*If there is no error in statement before database will be in multiuser
		mode.
		If error occurs please execute following command it will convert
		database in multi user.*/
		exec ('ALTER DATABASE '+@DataBaseName+' SET MULTI_USER')
			
		INSERT INTO Datenbanken 
		(Vereinsnummer, Vereinsname, Datenbank)
		VALUES
		(@ClubNumber, @ClubName, @DataBaseName)		
				
		exec
		(
			'UPDATE ' + @DataBaseName + '..' + 'VEREIN' +
			' SET VER_NAME = ''' + @ClubName + 
			''', VER_STRASSE = ''' + @ClubStreet + 
			''', VER_PLZORT = ''' + @ClubPostCode_City + ''';'
		)
	END	
END


Aber wie bekomme ich Datenbank A vom Server A auf Datenbank A vom Server B?
 
Für die Sicherung kompletter DBs gibts in jedem RDBMS ein Dump-Tool. Die mir bekannten Dump-Tools können sogar die Integrität des Dumps sicherstellen. Das wiederum lässt sich auch hervorragend in einen Batch packen, den man beispielsweise durch Cron, Jenkins oder direktem Aufruf aus der CMDLine starten kann.

Warum willst Du das denn mittels SP machen?
 
Ich dachte mittels SP würde es einfacher gehen, aber man lässt sich ja gerne eines Besseren belehren.

Ich benutze MSSQL 2008 R2 auf beiden Servern.

Wie würde ein solches Dump-Tool aussehen, oder wie muss ich da vorgehen?
 
Zurück