2013-04-17 1 views
0

Я выполняю sql-скрипты при использовании ADO и MSSQL-сервера. Под Here вы найдете первый пример нескольких строк SQL заявления, как:Запуск сложных SQL-скриптов из memo (несколько строк)

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

скопировать эти строки из ТМета к моему TADOQuery.sql.text но не как уже утверждение идти не признаются, и я получить ошибку ключевого слова сервером mssql. Могу ли я запустить весь sript как один TQquery, или я разделил свой запрос на несколько частей, разделенных точкой с запятой и перебираю весь текст?

ответ

2

В первый код не является действительным (нет, после GO) и должен быть, как этот

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

На самом деле GO является разделителем, используемый MSSMS для разделения SQL-заявления.

Если вы хотите использовать те же скрипты, что и MSSMS, вам нужно работать над этим, как MSSMS.

  1. Split сценарий на отдельные части по ограничителю GO
  2. Отправить каждую часть в базу данных
2

Вы должны разделить каждое заявление без отправки go. SQL-сервер не интерпретирует GO, это делается с помощью MSSMS.