困扰很多高手的问题,但我还是感觉有高手可以解决的,进来说吧,UP的都有分。。。

ccll 2003-04-14 06:40:09
用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
GO

if 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
GO

if 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
GO

if 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
GO

CREATE 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]
GO

CREATE 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]
GO

CREATE 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]
GO

create 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方法的,就不麻烦跟贴了.
...全文
31 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
伯猿虫 2003-04-16
  • 打赏
  • 举报
回复
语句太长了query没办法读那么长的语句!
建议你一句一句执行!
将语句存到txt然后一句一句读进来执行!
flyycyu 2003-04-16
  • 打赏
  • 举报
回复
up
qixp231 2003-04-16
  • 打赏
  • 举报
回复
up
rustle 2003-04-16
  • 打赏
  • 举报
回复
还有个办法
Microsoft SQL Server\80\Tools\Binn\
下面有一个osql.exe工具,你看一下它的语法,可以指定他运行某个.sql文件

rustle 2003-04-16
  • 打赏
  • 举报
回复
把所有GO去掉就OK了

一次性执行

我给客户的安装程序全是这么干的
huaasa 2003-04-15
  • 打赏
  • 举报
回复
学习!!!
happyfancy 2003-04-15
  • 打赏
  • 举报
回复
gzing
alphax 2003-04-15
  • 打赏
  • 举报
回复
没试过这些包含[]的SQL语句,不过应该没问题,

在处理以前,自己分析一下脚本,然后一个批处理(GO)一个批处理地执行
rustle 2003-04-15
  • 打赏
  • 举报
回复
把所有的Go都去掉就OK了嘛
chenquan 2003-04-15
  • 打赏
  • 举报
回复
是呀
完全占同 menliwxj(有缘)
net205 2003-04-15
  • 打赏
  • 举报
回复
up
rfuture 2003-04-15
  • 打赏
  • 举报
回复
up
jan2002 2003-04-15
  • 打赏
  • 举报
回复
UP!
xyj0323 2003-04-15
  • 打赏
  • 举报
回复
up
wlhtake 2003-04-15
  • 打赏
  • 举报
回复
9494 把 go 去掉即可
qnzu 2003-04-15
  • 打赏
  • 举报
回复
难,学习,然后up
zallen2002 2003-04-14
  • 打赏
  • 举报
回复
up
Spectrum 2003-04-14
  • 打赏
  • 举报
回复
up
helloqiqi 2003-04-14
  • 打赏
  • 举报
回复
UP
爱编程的老五 2003-04-14
  • 打赏
  • 举报
回复
这些语句都是在一个文件中的吗?我以前曾用过这种方式来生成数据库。做法如下:
将脚本文件当作txt文件来处理,然后逐行读取,如果读到go,则将之前的文件作为一条SQL语句来执行,直至完成。
原因:delphi的SQL EXPLOER不认识GO,故可采用逐条执行的原始方法。虽然原始但很有效。
加载更多回复(1)

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧