web-dev-qa-db-ja.com

オペレーティングシステムエラー3により、ファイルのディレクトリルックアップが失敗しました(指定されたパスが見つかりません。)

1つのSQLサーバー(ソース)から別のSQLサーバー(ターゲット)にデータベース(MyDB)を再作成しようとしています。 ソースは私のローカルマシンにあり、SQL Server 2014です。ターゲットはリモートマシンにあり、それはSQL Server 2012です。

  1. ローカルマシンでSQL Server Management Studioに移動し、MyDBを右クリックして[タスク]-> [スクリプトの生成]に移動します。
    1. そこで、「データベース全体とすべてのデータベースオブジェクトのスクリプト」を選択します。
    2. [次へ]をクリックし、次のページの[詳細]で[スキーマとデータ]を選択します。
    3. これにより、MyDBの定義を含むSQLファイル(scripts.sql)が生成されます。
    4. 次に、次のosqlコマンドを使用して、データベースをTargetに再作成します。

osql -Sターゲット-dマスター-E -i scripts.sql -o output.log

  1. 実行が完了した後、ログファイル "output.log"に次のエラーが表示されます。

1> 2> 1> 2> 3> 4> 5> 6> 7> 8>メッセージ5133、レベル16、状態1、サーバーターゲット、行2ファイル「C:\ Program Files\Microsoft SQL Server \」のディレクトリルックアップMSSQL12.MSSQLSERVER\MSSQL\DATA\MyDB.mdf "は、オペレーティングシステムエラー3で失​​敗しました(指定されたパスが見つかりません。)メッセージ1802、レベル16、状態1、サーバーターゲット、行2のCREATE DATABASEが失敗しました。リストされている一部のファイル名を作成できませんでした。関連するエラーを確認してください。 1> 2>メッセージ5011、レベル14、状態5、サーバーターゲット、行1ユーザーにデータベース 'MyDB'を変更する権限がないか、データベースが存在しないか、データベースがアクセスチェックを許可する状態にありません。メッセージ5069、レベル16、状態1、サーバーターゲット、行1のALTER DATABASEステートメントが失敗しました。

「scripts.sql」の最初の数行は次のとおりです。

USE [master]
GO
/****** Object:  Database [MyDB]    Script Date: 4/12/2016 4:30:20 PM ******/
CREATE DATABASE [MyDB]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'MyDB', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\MyDB.mdf' , SIZE = 513024KB , MAXSIZE = UNLIMITED, FILEGROWTH = 262144KB )
 LOG ON 
( NAME = N'MyDB_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\MyDB_log.ldf' , SIZE = 1317504KB , MAXSIZE = 2048GB , FILEGROWTH = 131072KB )
GO
ALTER DATABASE [MyDB] SET COMPATIBILITY_LEVEL = 100
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [MyDB].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [MyDB] SET ANSI_NULL_DEFAULT ON

ソースではなく、ターゲットでは問題のある場所にファイルMyDB.mdfがあります。 Targetにディレクトリ「MSSQL12.MSSQLSERVER」はありません。どうすれば修正できますか?

8
lukegf

これの解決策に関心がある人にとって、問題はTargetに「MSSQL12.MSSQLSERVER」ディレクトリがなかったということです。これは、SQL Serverの異なるバージョン、つまり2012にあるためです。手動でディレクトリを作成すると、その後動作し始めました。

15
lukegf