在VS2005环境下,通过单击按钮然后执行脚本文件(我是直接读取脚本里的内容),
如果SQL脚本是一下内容,运行可以通过,而且也可以创建表,不过是在MASTER数据库里:

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[BookType_table]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) 
drop table [dbo].[BookType_table] 
GO 
CREATE TABLE [dbo].[BookType_table] ( 
[BookType] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL  
) ON [PRIMARY] 
GO 
如果在脚本前面加上这些语句:
GO 
if exists (select * from sysdatabases where name='dbbook') 
drop database dbbook 
GO   
create database dbbook 
GO   
use dbbook 
GO 
则出错,提示“未能在sysdatabases中找到数据库'dbbook'所对应的条目,没有找到具有该名称的条目,请确保正确输入了名称”,但是这些代码在查询分析器,虽然也有同样的提示,但是最后都能创建数据库和表。在C# VS2005里调用就不行,为什么会这样?具体脚本有错吗?请高手指点!

解决方案 »

  1.   

    if exists (select * from sysdatabases where name='dbbook')  
          你后面这个查的是什么啊?  在系统表内 没有找到name = 'dbbook'的 
             着会晕着呢!也不太想看代码!你自己在看看!
      

  2.   

    是这样的,我是想先在自己的数据库查看是否有DBBOOK这个数据库对象,如果有,就删除掉,没有就重新建立一个,这个代码这样书写有问题吗?
    我是菜鸟,请帮忙下啦。
      

  3.   

    USE master
    GO/*--检查是否已存在bbsDB数据库:检查master库中的系统表sysdatabases中是否存在bbsDB--*/
    IF EXISTS (SELECT * FROM sysdatabases WHERE name = 'bbsDB')
    DROP DATABASE bbsDB --如果存在则删除bbsDB数据库
    GO/*--在SQL中直接执行DOS命令创建文件夹--*/
    EXEC xp_cmdshell 'mkdir E:\bbs' 
      
    /*---创建数据库-*/
    CREATE DATABASE bbsDB
    ON
    (
    NAME='bbsDB_data' --主数据文件的逻辑名
    FILENAME='E:\bbs\bbsDB_data.mdf' , --主数据文件的物理名(存放位置)
    SIZE=10MB,  --主数据文件的初始大小
    MAXSIZE=300MB, --主数据文件的最大存储空间
    FILEGROWTH=20% --主数据文件自增率为初始大小的20%
    )
    LOG ON --以下是创建日志文件
    (
    NAME='bbsDB_log' --日志文件的的逻辑名
    FILENAME='E:\bbs\bbsDB_log.ldf' , --日志文件的物理名(存放位置)
    SIZE=1MB, --日志文件的初始大小
    FILEGROWTH=1MB --日志文件的自增率为1MB
    )
    GO
      

  4.   


    我的数据库SQL脚本是直接在企业管理器导出来的,按照你的那样写法,还是一样会提示类似的错误,我就找不到到底哪里出了问题。郁闷。不过还是谢谢你。
      

  5.   

    USE master 
    GO 
    if exists (select * from sysdatabases where name='dbbook')  
    drop database dbbook  
    GO    
    create database dbbook  
    GO    
    use dbbook  
    GO
      

  6.   

    go不是sql语句,使sqlserver工具识别的命令..
      

  7.   

    把GO去掉,另外if exists(...) drop...
    像这样,中间不要隔行,我做过一个类似查询分析器的小东西,要通过正则表达式屏蔽一些特殊符号才能正确执行