用DELPHI如果执行SQL Server生成的SQL脚本文件的问题:类似于:if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Products_Categories]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[Products] DROP CONSTRAINT FK_Products_Categories
GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CustomerCustomerDemo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CustomerCustomerDemo] DROP CONSTRAINT FK_CustomerCustomerDemo
GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CustomerCustomerDemo_Customers]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CustomerCustomerDemo] DROP CONSTRAINT FK_CustomerCustomerDemo_Customers
GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Territories_Region]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[Territories] DROP CONSTRAINT FK_Territories_Region
GOCREATE TABLE [dbo].[CustomerCustomerDemo] (
[CustomerID] [nchar] (5) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[CustomerTypeID] [nchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL 
) ON [PRIMARY]
GOCREATE TABLE [dbo].[CustomerDemographics] (
[CustomerTypeID] [nchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[CustomerDesc] [ntext] COLLATE Chinese_PRC_CI_AS NULL 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GOCREATE TABLE [dbo].[Customers] (
[CustomerID] [nchar] (5) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[CompanyName] [nvarchar] (40) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[ContactName] [nvarchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[ContactTitle] [nvarchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[Address] [nvarchar] (60) COLLATE Chinese_PRC_CI_AS NULL ,
[City] [nvarchar] (15) COLLATE Chinese_PRC_CI_AS NULL ,
[Region] [nvarchar] (15) COLLATE Chinese_PRC_CI_AS NULL ,
[PostalCode] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[Country] [nvarchar] (15) COLLATE Chinese_PRC_CI_AS NULL ,
[Phone] [nvarchar] (24) COLLATE Chinese_PRC_CI_AS NULL ,
[Fax] [nvarchar] (24) COLLATE Chinese_PRC_CI_AS NULL 
) ON [PRIMARY]
GOcreate view "Category Sales for 1997" AS
SELECT "Product Sales for 1997".CategoryName, Sum("Product Sales for 1997".ProductSales) AS CategorySales
FROM "Product Sales for 1997"
GROUP BY "Product Sales for 1997".CategoryName。
搜了很多地方,也做了很多测试,发现使用ADO的Query,Command根本无法完全解决这一问题,只有部分语句可以执行,一些人使用ISQL来执行文件,又无法判断执行状态,这问题据我所知难坏了很多人,今天再次贴出来,我感觉总会有办法解决的,欢迎提供各方思路,使用Adoquery、Adocommand方法的,就不麻烦跟贴了.

解决方案 »

  1.   

    这些语句都是在一个文件中的吗?我以前曾用过这种方式来生成数据库。做法如下:
    将脚本文件当作txt文件来处理,然后逐行读取,如果读到go,则将之前的文件作为一条SQL语句来执行,直至完成。
    原因:delphi的SQL EXPLOER不认识GO,故可采用逐条执行的原始方法。虽然原始但很有效。
      

  2.   

    是呀
    完全占同 menliwxj(有缘)
      

  3.   

    没试过这些包含[]的SQL语句,不过应该没问题,在处理以前,自己分析一下脚本,然后一个批处理(GO)一个批处理地执行
      

  4.   

    把所有GO去掉就OK了一次性执行我给客户的安装程序全是这么干的
      

  5.   

    还有个办法
    Microsoft SQL Server\80\Tools\Binn\
    下面有一个osql.exe工具,你看一下它的语法,可以指定他运行某个.sql文件
      

  6.   

    语句太长了query没办法读那么长的语句!
    建议你一句一句执行!
    将语句存到txt然后一句一句读进来执行!