23

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

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

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

4

4 に答える 4

29

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

SQL Server 2008 R2 Express バージョンをダウンロードする必要があります。その間に、Management Studio でバージョンを取得してください。これをインストールすると、データベースのバックアップを復元できるようになります。

Mgmt Studio を使用せずにデータベースを本当に復元したい場合は、もちろんRESTORE、T-SQL でステートメントを使用し、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を参照してください!!)。

于 2011-06-02T17:08:09.837 に答える
17

遅くなりましたが、これを見ている他の人に役立つことを願っています…。

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

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

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

以前の仕事ではApexSQL DiffApexSQL Data Diffを使用してうまくいきましたが、 Red Gate (SQL Compare) とIdera (Comparison toolset)の優れたツールもあります。オンラインで検索すると、おそらくもっと多くの情報が見つかります....

免責事項: 私は上記のどの企業とも提携していません…</p>

于 2013-09-13T11:07:46.180 に答える
12

SQL Management 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
于 2011-06-02T17:03:11.880 に答える
7

次のリンクは、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'

これにより、データベースとそれに関連するログファイルの論理名がわかります。名前が「<strong>dbname」と「<strong>dbname_log」</p>であると仮定します。

  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\DATASQLExpressが通常データファイルを保持するディレクトリです。データベースサーバーが使用しているディレクトリを見つけるには、データベースサーバーからデータベースを選択し、右クリックしてプロパティダイアログを開き、左側から[ファイル]オプションを選択します。

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

于 2012-07-14T10:56:16.503 に答える