web-dev-qa-db-fra.com

La recherche du répertoire pour le fichier a échoué avec l'erreur 3 du système d'exploitation (le système ne peut pas trouver le chemin spécifié.)

J'essaie de recréer une base de données (MyDB) d'un serveur SQL (Source) à un autre (Target). Source est situé sur ma machine locale et est SQL Server 2014. Target est situé sur une machine distante et c'est SQL Server 2012. Voici les étapes que j'ai suivies:

  1. Sur ma machine locale, je vais dans SQL Server Management studio, je fais un clic droit sur MyDB et je vais dans Tâches -> Générer des scripts.
    1. Là, je sélectionne "Script toute la base de données et tous les objets de base de données".
    2. Je clique sur Suivant et sur la page suivante, sous Avancé, je sélectionne "Schéma et données".
    3. Cela génère un fichier SQL (scripts.sql) qui contient la définition de MyDB.
    4. Ensuite, j'utilise la commande osql suivante pour recréer la base de données sur Target:

osql -S target -d master -E -i scripts.sql -o output.log

  1. Une fois l'exécution terminée, j'obtiens cette erreur dans le fichier journal "output.log":

1> 2> 1> 2> 3> 4> 5> 6> 7> 8> Msg 5133, niveau 16, état 1, cible du serveur, recherche de répertoire de ligne 2 pour le fichier "C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\MyDB.mdf "a échoué avec l'erreur 3 du système d'exploitation (le système ne peut pas trouver le chemin spécifié.). Msg 1802, niveau 16, état 1, cible du serveur, ligne 2 CREATE DATABASE a échoué. Certains noms de fichiers répertoriés n'ont pas pu être créés. Vérifiez les erreurs liées. 1> 2> Msg 5011, niveau 14, état 5, cible du serveur, ligne 1 L'utilisateur n'est pas autorisé à modifier la base de données 'MyDB', la base de données n'existe pas ou la base de données n'est pas dans un état permettant les vérifications d'accès. Échec de l'instruction Mster 5069, niveau 16, état 1, cible du serveur, ligne 1 ALTER DATABASE.

Voici les premières lignes de "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

J'ai le fichier MyDB.mdf à l'endroit dont il se plaint le Source, mais pas le Target. Il n'y a pas de répertoire "MSSQL12.MSSQLSERVER" sur Target. Comment puis-je réparer cela?

8
lukegf

Pour ceux intéressés par la solution à cela, le problème était qu'il n'y avait pas de répertoire "MSSQL12.MSSQLSERVER" sur Target car il se trouve sur une version différente de SQL Server, à savoir 2012. Ce que je devais faire était créer le répertoire manuellement et il a commencé à fonctionner après cela.

15
lukegf