web-dev-qa-db-ja.com

バックアップSQL Server Expressからデータベースを作成/復元する

マシンにSQL Server Management Studioがありません。

データベースのバックアップがあります(SQL Server 2008 R2)。私のマシンにVisual Studio 2010 UltimateがインストールされているSQL Server Expressがインストールされています。

これをデータベースに復元し、SQL Server Expressにアタッチするにはどうすればよいですか?
SQL Managment Studio Expressを使用したソリューションはありますか?

23
Shahin

SQL Server Management Studio Expressを使用しても、このバックアップを復元することはできません。 Visual Studio 2010と共にインストールされるExpressエディションは、SQL Serverのバージョン2008です-バックアップはSQL Server 2008からのものですR2リリース-これらのバックアップは2008バージョンに復元できません

SQL Server 2008R2Expressバージョン をダウンロードする必要があります。 -Management Studioでバージョンを入手してください!これをインストールすると、データベースのバックアップを復元できます。

Mgmt Studioを使用せずにデータベースを本当に復元したい場合は、T-SQLでRESTOREステートメントを使用し、 sqlcmdコマンドを使用してこれを実行できますラインツール

RESTORE DATABASE YourDatabaseName
FROM DISK = N'(path to your BAK file)'
WITH FILE = 1,  
MOVE N'(your DB name)' TO N'(your SQL path)database.MDF',  
MOVE N'(your DB name)_LOG' TO N'(your SQL path)database_LOG.LDF',  
NOUNLOAD,  
REPLACE,  
STATS = 10
GO

(そしてもちろん、同様の方法で使用できる BACKUPコマンド もあります- MSDN Books Online 構文の詳細についてはあなたの友達です!!)。

29
marc_s

1つ後期ですが、これを表示している他の人に役立つことを願っています…。

問題が管理スタジオなしで復元している場合、これはmarc_sが既に指摘したようにsqlcmdを使用して簡単に解決できます。

ただし、SSMSを使用せずにSQL 2008で2008 R2バックアップを復元することが実際の問題である場合、解決策は、スキーマを作成してデータを挿入するためのバックアップを読み取り、スクリプトを生成できるサードパーティツールを使用することだけです。

考えは、SQL 2008で空のデータベースを作成し、サードパーティのツールを使用して、2008 R2で生成されたバックアップと比較することです。

ApexSQL Diff および ApexSQL Data Diff を使用しましたが、以前の仕事では成功しましたが、 Red Gate (SQL Compare )および Idera (比較ツールセット)。オンラインで検索すると、おそらくもっと多くのことを見つけるでしょう…。

免責事項:私は上記の会社のいずれとも提携していません…

17
ScottS

SQL Managment Studio Expressを入手してみませんか?無料で、ローカルのsql expressインスタンスを管理できます。

http://www.Microsoft.com/downloads/en/details.aspx?FamilyID=c243a5ae-4bd1-4e3d-94b8-5a0f62bf7796

BACKUP DATABASE [AdventureWorks] TO  
    DISK = N'\\nas\Backup\L40\SQL2005\AdventureWorks_backup_200702120215.bak' 
    WITH NOFORMAT, NOINIT,  NAME = N'AdventureWorks-Full Database Backup', 
    SKIP, NOREWIND, NOUNLOAD,  STATS = 10

RESTORE DATABASE [AdventureWorksNew] 
    FROM  DISK = N'\\nas\Backup\L40\SQL2005\AdventureWorks_backup_200702120215.bak' 
    WITH  FILE = 1,  
    MOVE N'AdventureWorks_Data' TO N'C:\Data\MSSQL.1\MSSQL\Data\AdventureWorksNew_Data.mdf',  
    MOVE N'AdventureWorks_Log' TO N'C:\Data\MSSQL.1\MSSQL\Data\AdventureWorksNew_Log.ldf',  
    NOUNLOAD,  STATS = 10
12
Chris Kooken

次のリンクはmarc_sと同様のソリューションを提供し、さらに深くなります。以下のリンクで提供されるソリューションを使用して、バックアップファイルから新しいDBを正常に作成できました。

http://codeonaboat.wordpress.com/2012/02/16/sql-server-2008-creating-a-database-from-a-bak-file/

以下のソリューションは、上記のリンクからコピーされます。

  1. SSMSで、データベースサーバーのマスターデータベースでクエリウィンドウを開きます。そこで、次のクエリを実行します。

  2. .bakファイルにバックアップされたデータベースの「LogicalName」が何であるかを確認します

    ディスクからファイルリストを復元= 'c:\ DatabaseBackups\dev2012021601.bak'

これにより、データベースの論理名とそれに関連するログファイルが得られます。名前が「dbname」および「dbname_log」であると仮定しましょう。

  1. 次に、次の復元コマンドを実行します。作成しようとしている名前のデータベースがまだ存在していないことを確認してください(以下のコードサンプルでは、​​dbForSocialMigrationは存在しません)。
RESTORE DATABASE dbForSocialMigration
FROM DISK = 'c:\DatabaseBackups\dev20120307.bak'
WITH
MOVE 'dbname' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\dbForSocialMigration.mdf',
MOVE 'dbname_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\dbForSocialMigration_log.mdf'

C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATAは、SQL Expressが通常データファイルを保持するディレクトリです。データベースサーバーが使用しているディレクトリを見つけるには、そこからデータベースを選択し、右クリックしてプロパティダイアログを開き、左側から「ファイル」オプションを選択します。

これでうまくいくはずです。その時点で、.bakファイルのすべてのテーブルとデータが格納されたデータベース「dbForSocialMigration」にアクセスできるはずです。

7
Rohit Gupta