1つのSQLサーバー(ソース)から別のSQLサーバー(ターゲット)にデータベース(MyDB)を再作成しようとしています。 ソースは私のローカルマシンにあり、SQL Server 2014です。ターゲットはリモートマシンにあり、それはSQL Server 2012です。
osql -Sターゲット-dマスター-E -i scripts.sql -o 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」はありません。どうすれば修正できますか?
これの解決策に関心がある人にとって、問題はTargetに「MSSQL12.MSSQLSERVER」ディレクトリがなかったということです。これは、SQL Serverの異なるバージョン、つまり2012にあるためです。手動でディレクトリを作成すると、その後動作し始めました。