自动生成的数据库脚本中,CONTAINMENT 被标记为不正确的语法。

19

我使用的是Windows 7(x64)操作系统,并且我有一个用于创建SQL Server Express 2012数据库的自动生成脚本。

该脚本起始于以下内容:

USE [master]
GO

 CREATE DATABASE [Example]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'Example', FILENAME = N'D:\Example.mdf' , SIZE = 4544KB ,
MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'Example_log', FILENAME = N'D:\Example_log.ldf' , SIZE = 3136KB ,
MAXSIZE = 2048GB , FILEGROWTH = 10%)
    GO
    ALTER DATABASE [Example] SET COMPATIBILITY_LEVEL = 100
    GO
    IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
    begin
    EXEC [Example].[dbo].[sp_fulltext_database] @action = 'enable'
    end
    GO
    ...

脚本的第一个错误是

Msg 102, Level 15, State 1, Line 3
Incorrect syntax near 'CONTAINMENT'.

这个想法是将一个数据库从一个使用不同的SQL Server 2012版本的服务器传输到另一个服务器上。我希望保留这些脚本,以便在需要创建该数据库时在其他地方使用。

为什么自动生成的脚本会导致这个错误?

1个回答

25

取消 CONTAINMENT = NONE

这是默认设置,因此您不需要它,而且SQL Server Express似乎会受到影响。


1
感谢@Sebastian Meine,你是正确的。我也回到服务器上,并使用版本2012创建了脚本,默认情况下它被创建为2008 R2,这是主要问题。 - Pimenta
@Pimenta,您是如何在2008服务器上创建脚本时将其设置为2012而非2008的呢? - slayernoah
@slayernoah 服务器是2012版的,但默认配置被设置成了2008版。 - Pimenta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接