none
SQLServer2008でデータベースの復元ができません。 RRS feed

  • 質問

  • SQLServer2008でデータベースの復元ができません。
    別のSQLServerで作成したバックアップデータベースファイルからManagement Studioにて
    データベースの復元を実行すると次のエラーが発生します。

    "D:\20100210dbname.bak" で読み取れませんでした: 38(ファイルの終わりです。) (Microsoft SQL Server、エラー: 3203)

    環境は、OS:WindowsServer2008R2 SQLServer2008Stanardエディションです。

    バックアップ・復元方法がよくないのでしょうか?
    どなたかご教授願えませんでしょうか。
    宜しくお願い致します。


    以下エラーメッセージのコピーです。

    タイトル: Microsoft SQL Server Management Studio
    ------------------------------

    Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。 (Microsoft.SqlServer.ConnectionInfo)

    ------------------------------
    ADDITIONAL INFORMATION:

    "D:\20100210dbname.bak" で読み取れませんでした: 38(ファイルの終わりです。) (Microsoft SQL Server、エラー: 3203)

    ヘルプを表示するには http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.00.2531&EvtSrc=MSSQLServer&EvtID=3203&LinkId=20476 をクリック

    ------------------------------
    BUTTONS:

    OK
    ------------------------------

    ===================================

    Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。 (Microsoft.SqlServer.ConnectionInfo)

    ------------------------------
    プログラムの場所:

       場所 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteWithResults(String sqlCommand)
       場所 Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteWithResults(String query)
       場所 Microsoft.SqlServer.Management.Smo.BackupRestoreBase.ExecuteSqlWithResults(Server server, String cmd)
       場所 Microsoft.SqlServer.Management.Smo.Restore.ReadBackupHeader(Server srv)
       場所 Microsoft.SqlServer.Management.SqlManagerUI.SqlRestoreDatabaseGeneral.buttonSelectDevice_Click(Object sender, EventArgs e)
       場所 System.Windows.Forms.Control.OnClick(EventArgs e)
       場所 System.Windows.Forms.Button.OnClick(EventArgs e)
       場所 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       場所 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       場所 System.Windows.Forms.Control.WndProc(Message& m)
       場所 System.Windows.Forms.ButtonBase.WndProc(Message& m)
       場所 System.Windows.Forms.Button.WndProc(Message& m)
       場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    ===================================

    "D:\20100210dbname.bak" で読み取れませんでした: 38(ファイルの終わりです。) (.Net SqlClient Data Provider)

    ------------------------------
    ヘルプを表示するには http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.00.2531&EvtSrc=MSSQLServer&EvtID=3203&LinkId=20476 をクリック

    ------------------------------
    サーバー名: (local)
    エラー番号: 3203
    重大度: 16
    状態: 2
    行番号: 1


    ------------------------------
    プログラムの場所:

       場所 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
       場所 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
       場所 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
       場所 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
       場所 System.Data.SqlClient.SqlDataReader.HasMoreRows()
       場所 System.Data.SqlClient.SqlDataReader.ReadInternal(Boolean setTimeout)
       場所 System.Data.SqlClient.SqlDataReader.NextResult()
       場所 System.Data.ProviderBase.DataReaderContainer.NextResult()
       場所 System.Data.Common.DataAdapter.FillNextResult(DataReaderContainer dataReader)
       場所 System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
       場所 System.Data.Common.DataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
       場所 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
       場所 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
       場所 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
       場所 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteWithResults(String sqlCommand)

    2010年2月26日 7:54

回答

  • OS エラー "38(ファイルの終わりです。) " が発生しているので、バックアップファイル自体に問題があると思います。
    もし、ほかの同様の環境にて、このバックアップファイルから正常にDBのリストアが完了するようであれば、マシンのH/W に問題があるのかも知れません。
    • 回答としてマーク 菊地俊介 2010年3月8日 8:31
    2010年2月26日 8:01

すべての返信

  • OS エラー "38(ファイルの終わりです。) " が発生しているので、バックアップファイル自体に問題があると思います。
    もし、ほかの同様の環境にて、このバックアップファイルから正常にDBのリストアが完了するようであれば、マシンのH/W に問題があるのかも知れません。
    • 回答としてマーク 菊地俊介 2010年3月8日 8:31
    2010年2月26日 8:01
  • 皆様、こんにちは。

    NOBTA さん、いつも回答ありがとうございます。

    SakaMoni さん、フォーラムのご利用ありがとうございます。
    その後いかがでしょうか。バックアップファイルに問題があるようですが、なにか進展はありましたか?

    復元しようとしたときにファイルが破損していた、ということを避けるため、バックアップ後にファイルが正常か確認する事もご検討ください。
    RESTORE VERIFYONLY (Transact-SQL)
    http://msdn.microsoft.com/ja-jp/library/ms188902.aspx

    勝手ながら、有用な情報と思われたため、NOBTAさんの回答に回答マークを付けさせていただきました。

    今後ともフォーラムをよろしくお願いします。
    それでは。
    2010年3月8日 8:39