一个小问题,请教一下各位:
我现在已经有一个数据库的所有表的SQL脚本文件了,请问在SQL SERVER 2005中如何通过执行这些SQL语句创建数据库呢?
我尝试先新建一个数据库-》右键该数据库-》新建查询,然后把脚本文件中的SQL代码粘贴上去,然后执行,可是会报错。我想问这是因为SQL语句的关系还是因为我的创建步骤不对呢?还有就是通过这种方式创建完数据库以后,新的数据库和之前的数据库的相关的表,视图,存储过程都还一样吗?
麻烦各位大侠帮小弟解答一下,问题很菜,莫见笑。

解决方案 »

  1.   

    下面是文件“MyAssertsDB数据库.sql”的内容:USE [master]
    GO
    /****** 对象:  Database [MyAssetsDB]    脚本日期: 05/19/2007 10:51:22 ******/
    CREATE DATABASE [MyAssetsDB] ON  PRIMARY 
    ( NAME = N'MyAssetsDB', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\MyAssetsDB.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
    LOG ON 
    ( NAME = N'MyAssetsDB_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\MyAssetsDB_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
    COLLATE Chinese_PRC_CI_AS
    GO
    EXEC dbo.sp_dbcmptlevel @dbname=N'MyAssetsDB', @new_cmptlevel=90
    GO
    IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
    begin
    EXEC [MyAssetsDB].[dbo].[sp_fulltext_database] @action = 'enable'
    end
    GO
    ALTER DATABASE [MyAssetsDB] SET ANSI_NULL_DEFAULT OFF 
    GO
    下省略
    然后下面是执行这个脚本文件的出错提示:消息 5133,级别 16,状态 1,第 2 行
    对文件 "C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\MyAssetsDB.mdf" 的目录查找失败,出现操作系统错误 3(系统找不到指定的路径。)。
    消息 1802,级别 16,状态 1,第 2 行
    CREATE DATABASE 失败。无法创建列出的某些文件名。请查看相关错误。
    消息 15010,级别 16,状态 1,过程 sp_dbcmptlevel,第 47 行
    数据库 'MyAssetsDB' 不存在。请使用 sp_helpdb 来显示可用的数据库。消息 911,级别 16,状态 1,第 3 行
    在 sysdatabases 中找不到数据库 'MyAssetsDB' 所对应的条目。没有找到具有该名称的条目。请确保正确地输入了该名称。
    消息 5011,级别 14,状态 5,第 1 行
    用户无权更改数据库 'MyAssetsDB',或者此数据库不存在。
    消息 5069,级别 16,状态 1,第 1 行
    ALTER DATABASE 语句失败。
    消息 5011,级别 14,状态 5,第 1 行
    下省略麻烦大家帮忙看下是为什么,谢谢。
      

  2.   

    然后下面是“操作用户数据表.sql”的文件内容USE [MyAssetsDB]
    GO
    /****** 对象:  Table [dbo].[操作用户]    脚本日期: 05/19/2007 10:52:21 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [dbo].[操作用户](
            [用户名称] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
            [用户姓名] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
            [资产管理之增加] [int] NULL CONSTRAINT [DF_操作用户_资产管理之增加固定资产]  DEFAULT ((0)),
            [资产管理之减少] NULL CONSTRAINT [DF_操作用户_查询管理之归还固定资产]  DEFAULT ((0)),
            [系统管理之公司信息设置] [int] NULL CONSTRAINT [DF_操作用户_系统管理之公司信息设置]  DEFAULT ((0)),
            [系统管理之公司部门设置] [int] NULL CONSTRAINT [DF_操作用户_系统管理之公司部门设置]  DEFAULT ((0)),
    CONSTRAINT [PK_操作用户] PRIMARY KEY CLUSTERED 
    (
            [用户名称] ASC
    )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
    ) ON [PRIMARY]GO
    USE [MyAssetsDB]
    GO
    ALTER TABLE [dbo].[操作用户]  WITH CHECK ADD  CONSTRAINT [FK_操作用户_公司部门] FOREIGN KEY([所在部门])
    REFERENCES [dbo].[公司部门] ([部门名称])
    下面是执行该文件的报错提示:消息 911,级别 16,状态 1,第 1 行
    在 sysdatabases 中找不到数据库 'MyAssetsDB' 所对应的条目。没有找到具有该名称的条目。请确保正确地输入了该名称。
    消息 911,级别 16,状态 1,第 1 行
    在 sysdatabases 中找不到数据库 'MyAssetsDB' 所对应的条目。没有找到具有该名称的条目。请确保正确地输入了该名称。
    消息 1767,级别 16,状态 0,第 1 行
    外键 'FK_操作用户_公司部门' 引用了无效的表 'dbo.公司部门'。
    消息 1750,级别 16,状态 0,第 1 行
    无法创建约束。请参阅前面的错误消息。是不是执行单个的数据表的脚本文件之前一定要先执行上面的那个数据库的脚本文件?
    麻烦大家了~
      

  3.   

    N'C:\Program   Files\Microsoft   SQL   Server\MSSQL.4\MSSQL\DATA\
    这个目录存在吗,没有,创建之
      

  4.   

    我的DATA的路径是C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data,然后我把路径改成了现在这个.1的路径,没有报错,下面是输出:
    “DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。”
    最下面显示“查询已成功”。
    这样的话就是创建OK了咯?
    那接下去要打开这个刚创建的数据库是不是还要再重新附加一下这个刚才创建出来的数据库文件啊?
    可是我在重新试图附加这个数据库的时候跳出来这样一个错误窗口:“无法为此请求检索数据。 (Microsoft.SqlServer.SmoEnum)
    ------------------------------
    其他信息:
    执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)
    ------------------------------
    尝试打开或创建物理文件 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\MyAssetsDB.mdf' 时,CREATE FILE 遇到操作系统错误 32(另一个程序正在使用此文件,进程无法访问。)。 (Microsoft SQL Server,错误: 5123)”这又是为什么呢?另外就是我在接下来创建表的时候有的时候会报错:
    “消息 1767,级别 16,状态 0,第 1 行
    外键 'FK_附属设备_基本档案' 引用了无效的表 'dbo.基本档案'。
    消息 1750,级别 16,状态 0,第 1 行
    无法创建约束。请参阅前面的错误消息。”
    是不是这样的话应该先执行“无效的表 'dbo.基本档案'”这个表的脚本文件?麻烦大家帮忙看一下。谢拉~
      

  5.   

    使用SQL语句创建的数据库已经可以使用,无需再次附加,错误信息已经说得很明白了(另一个程序正在使用此文件,进程无法访问,这另一程序是谁?不是SQL Server还会是谁?)继续执行你剩下的SQL脚本就可以了。