2

SQL Server 2008 R2では、SQL Server Management Studioでサーバーを右クリックして設定することにより、場所DataLog場所を設定しました。F:\moved\

ただし、それを使用してデータベースを復元すると、デフォルトのSQLServerの場所であると思われるsqlcmdデータベースが復元されます。E:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA

F:\moved\ストレージの目的でデータベースを常に復元する必要がありますが、スクリプトで次のコマンドを使用すると、エラーが発生することがあります。

RESTORE DATABASE $(database) FROM DISK = '$(root)\$(database).bak' WITH RECOVERY,
MOVE '$(database)' TO '$(datadir)$(database).mdf',
MOVE '$(database)_log' TO '$(datadir)$(database).ldf'
GO

エラー:

データベースコンテキストを「master」に変更しました。
メッセージ3234、レベル16、状態2、サーバーSQL1、行3
論理ファイル「userdb1」はデータベース「userdb1」の一部ではありません。RESTORE FILELISTONLYを使用して、論理ファイル名をリストします。
メッセージ3013、レベル16、状態1、サーバーSQL1、行3RESTOREDATABASE
が異常終了しています。

エラーを回避するために上記のように手動で指定しなくても、デフォルトでsqlcmd強制的に復元できますか?F:\moved\

4

1 に答える 1

0

スクリプトでdatadir変数を定義することはできませんか?sqlcmd

このようなもの:

:setvar datadir F:\moved\

RESTORE DATABASE $(database) FROM DISK = '$(root)\$(database).bak' WITH RECOVERY,
MOVE '$(database)' TO '$(datadir)$(database).mdf',
MOVE '$(database)_log' TO '$(datadir)$(database).ldf'
GO

その行を配置すると、sqlcmd常にそのディレクトリを使用する必要があります(SQL Serverのデフォルトではなく)

または、次のコマンドラインを呼び出して、その変数値を任意の値に設定することもできますsqlcmd

C:\> sqlcmd -v datadir=F:\moved\ (script name)
于 2012-04-30T10:35:47.720 に答える