我正在尝试从一个 SQL 服务器(Source)重新创建一个数据库(MyDB)到另一个 SQL 服务器(Target)。源位于我的本地计算机上,是 SQL Server 2014。目标位于远程计算机上,它是 SQL Server 2012。以下是我采取的步骤:
- 在我的本地机器上,我转到 SQL Server Management Studio,右键单击 MyDB 并转到 Tasks--> Generate Scripts。
- 在那里我选择“脚本整个数据库和所有数据库对象”。
- 我单击“下一步”,然后在下一页的“高级”下,选择“架构和数据”。
- 这会生成一个包含 MyDB 定义的 SQL 文件 (scripts.sql)。
- 然后我使用以下 osql 命令在Target上重新创建数据库:
osql -S 目标 -d 主控 -E -i scripts.sql -o output.log
- 执行完成后,我在日志文件“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” 。我怎样才能解决这个问题?