2016-04-13 7 views
6

J'essaie de recréer une base de données (MyDB) d'un serveur SQL (Source) vers un autre (Cible). Source est situé sur ma machine locale et SQL Server 2014 cible est situé sur une machine distante et il est SQL Server 2012. Voici les étapes que j'ai pris:La recherche d'annuaire pour le fichier a échoué avec l'erreur du système d'exploitation 3 (Le système ne trouve pas le chemin spécifié.)

  1. Sur ma machine locale I aller au studio SQL Server Management, je fais un clic droit sur MyDB et aller à Tâches -> Générer des scripts.
    1. Là, je sélectionne "Script base de données entière 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. J'utiliser la commande osql suivante pour recréer la base de données sur cible:

osql -S cible maître -d -E -i -o Scripts.SQL sortie. log

  1. Après l'exécution est terminée, je reçois cette erreur dans le fichier journal "output.log":

1> 2> 1> 2> 3> 4> 5> 6> 7> 8> Msg 5133, niveau 16, état 1, serveur Cible, ligne 2 Recherche de répertoire pour le fichier "C: \ Program Les fichiers \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ DATA \ MyDB.mdf " ont échoué avec l'erreur du système d'exploitation 3 (le chemin d'accès spécifié par le système est introuvable). Msg 1802, niveau 16, état 1, cible de 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 connexes. 1> 2> Msg 5011, Niveau 14, État 5, Serveur Cible, Ligne 1 L'utilisateur n'a pas l'autorisation de 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 permet les contrôles d'accès. Msg 5069, niveau 16, état 1, cible du serveur, ligne 1 L'instruction ALTER DATABASE a échoué.

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'emplacement où il se plaint de sur Source, mais pas sur cible. Il n'y a pas de répertoire "MSSQL12.MSSQLSERVER" sur Cible. Comment puis-je réparer cela?

Répondre

11

Pour ceux intéressés par la solution, le problème était qu'il n'y avait pas « MSSQL12.MSSQLSERVER » répertoire sur cible car il est sur une autre version de SQL Server, à savoir 2012. Qu'est-ce que je devais faire était de créer le répertoire manuellement et il a commencé à travailler après cela.

+2

Souffle mon esprit qu'il ne peut pas créer le répertoire automagiquement ... – Wes