2013-04-17 29 views
0

我在使用ADO和MSSQL服务器时正在执行SQL脚本。 在Here你会发现多行的第一个例子,如SQL语句:从备忘录(多行)运行复杂的SQL脚本

use master; 
go; 
EXEC sp_detach_db 
    @dbname=N'DATABASENAME'; 
go; 

我从Tmemo这些行复制到我的TADOQuery.sql.text但失败已经旅途中声明不承认和我通过mssql服务器获取关键字错误。 作为一个TQquery,我可以运行整个sript吗?还是将我的查询拆分为多个部分,用分号分隔并遍历整个文本?

回答

2

起初你的代码是无效的(无; GO后),必须是这样的

USE master; 
GO 
EXEC sp_detach_db 
    @dbname=N'DATABASENAME'; 
GO 

其实GO是使用MSSMS分离的SQL-语句的分隔符。

如果你想使用与MSSMS相同的脚本,你必须像MSSMS那样工作。

  1. 斯普利特脚本到单个零件的分隔符GO
  2. 每一个部分发送到数据库
2

你必须拆分每一个陈述,而不发送go。 SQL-Server不解释GO,这是由MSSMS完成的。