16

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

  1. 在我的本地机器上,我转到 SQL Server Management Studio,右键单击 MyDB 并转到 Tasks--> Generate Scripts。
    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> Msg 5133, Level 16, State 1, Server Target, Line 2 文件“C:\Program Files\Microsoft SQL Server\ MSSQL12.MSSQLSERVER\MSSQL\DATA\MyDB.mdf”失败,操作系统错误3(系统找不到指定的路径。)。消息 1802,级别 16,状态 1,服务器目标,第 2 行创建数据库失败。无法创建列出的某些文件名。检查相关错误。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

我在Source上抱怨的位置确实有文件 MyDB.mdf ,但在Target上没有。Target上没有目录“MSSQL12.MSSQLSERVER” 。我怎样才能解决这个问题?

4

1 回答 1

26

对于那些对此解决方案感兴趣的人,问题是Target上没有“MSSQL12.MSSQLSERVER”目录,因为它位于不同版本的 SQL Server 上,即 2012。我要做的是手动创建目录并启动在那之后工作。

于 2016-04-25T20:48:15.090 回答