2009-03-20 15 views
5

C#コードでSQL Serverデータベースをバックアップするのは簡単ですか?C#でバックアップSQL Server

多くの関連する質問がありますが、実際の回答はありません。

+2

あなたが全体のDBまたはその一部をバックアップしようとしている次のような

-- переменные DECLARE @dbName nvarchar(MAX); SET @dbName = N'AdventureWorks'; DECLARE @backupFileName nvarchar(MAX); SET @backupFileName = N'C:\Temp\' + @dbName + N'.bak'; --EXECUTE (N'PRINT N''Создание бэкапа '+ @backupFileName + '''') -- создание временной папки EXEC xp_cmdshell N'mkdir C:\Temp', no_output; -- бэкап с перетиранием имеющегося файла DECLARE @sqlScript nvarchar(MAX); SET @sqlScript = N'BACKUP DATABASE [' + @dbName + '] TO DISK = N''' + @backupFileName + ''' WITH NOFORMAT, INIT, NAME = N''' + @dbName + '-Full Database Backup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10'; --SELECT @sqlScript AS backupScript EXECUTE (@sqlScript); -- похоже, файл в 3ГБ можно вычитать... но памяти на это уходит ОЧЕНЬ МНОГО -- вычитывание файла SET @sqlScript = N' SELECT N''' + @backupFileName + ''' AS [backupFileName], BulkColumn AS [backupContent] FROM OPENROWSET (BULK ''' + @backupFileName + ''', SINGLE_BLOB) MyFile'; --SELECT @sqlScript AS openRowsetScript EXECUTE (@sqlScript); -- удаление файла SET @sqlScript = N'EXEC xp_cmdshell ''del "' + @backupFileName + '"'', no_output'; EXECUTE (@sqlScript); 

結果は? –

答えて

3

SQL管理オブジェクト - Microsoft.SqlServer.Management.Smo

それはあなたがそのアクションを完了するために必要なメソッドを持っています。

4

または:Management Studioでバックアップスクリプトを生成し、ストアドプロシージャに配置し、C#コードからプロシージャを実行します。

CREATE PROCEDURE sp_backup 
AS 
BEGIN 
    BACKUP DATABASE [YourDatabase] TO DISK = N'C:\YourPathAndFile.bak' 
    WITH NOFORMAT, NOINIT, 
    NAME = N'Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 
END 
GO 
2

適切な権限を持っていれば、非常に簡単です。

2頭に浮かぶの方法は、すでに述べたSQL管理オブジェクトがあります、私はあなたが常にだけを介して、サーバでT-SQLのバックアップコマンドを投げることができ、これらのhere

を利用した素敵なプロジェクトを見つけましたADO.Netオブジェクトも。あなたはhere

+0

権限を確保することは問題ではありません –

3

が必要です主なコマンドへのMSDNの参照はadminstratorタスクなど、バックアップやrestorを実行するためのC#からSMOライブラリを使用する方法について using SMO Library from c#

を参照してください。

2

ディスクに書き込む前にストリームを圧縮するなど、C#でバイトストリームを処理する場合は、私のプロジェクトのコードSQL Server Compressed Backupを参照してください。これは、小さなVDI(SQL Server仮想デバイスAPI)DLLラッパーをC++で記述し、各VDIオプションを.Netに忠実に公開し、残りのコードはC#で記述されています。

3

ここには、データベースバックアップのコンテンツをストリームに(「選択」の結果として)入れるスクリプトがあります。これは、バックアッププログラムを作成するのに便利ですWITHOUTすべての共有フォルダ。必要なのは、サーバーへの接続のみです。 MSSQL 2008 R2のテスト済みです。

backupFileName backupContent 
C:\Temp\AdventureWorks.bak 0x54415045000003008C000E01000000000000000000000000000... 
関連する問題