文件的目录查找失败,出现操作系统错误3(系统找不到指定的路径。)

时间:2016-04-13 15:21:51

标签: sql sql-server database migration osql

我正在尝试从一个SQL服务器()重新创建一个数据库(MyDB)到另一个(目标)。 位于我的本地计算机上,是SQL Server 2014. 目标位于远程计算机及其SQL Server 2012上。以下是步骤I&# 39;采取了:

  1. 在我的本地计算机上,我转到SQL Server Management studio,右键单击MyDB并转到任务 - >生成脚本。
    1. 我选择"脚本整个数据库和所有数据库对象"。
    2. 我单击“下一步”,然后在下一页的“高级”下,选择"架构和数据"。
    3. 生成包含MyDB定义的SQL文件(scripts.sql)。
    4. 然后我使用以下osql命令在目标上重新创建数据库:
  2.   

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

    1. 执行完成后,我在日志文件中收到此错误" output.log":
    2.   

      1> 2 - ; 1 GT; 2 - ; 3 GT; 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 GT; 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,但目标没有。没有目录" MSSQL12.MSSQLSERVER"在目标。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:15)

对于那些对此解决方案感兴趣的人来说,问题是没有" MSSQL12.MSSQLSERVER" 目标上的目录,因为它位于不同版本的SQL Server上,即2012.我要做的是手动创建目录,然后它开始工作。